一、简述
膨胀和腐蚀是数学形态学处理中的两个基本操作,主要针对的是二值化图像。膨胀与腐蚀都是针对白色像素块而言的,简单的理解就是膨胀将白色区域扩大,腐蚀将白色区域缩小。二者功能主要包括:消除噪声;
分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素;
寻找图像中的明显的极大值区域或极小值区域;
求出图像的梯度。
膨胀,就是将需要处理的图像与一个卷积核处理,该核可以是自定义的任何形状,将核放入图像后,只要能够与原白色区域有连接,即可将该核的锚点(anchorpoint)膨胀,这种操作有利于连接断开的领域。
腐蚀,与膨胀类似,不过只有自定义的核能够完全放入原图像中时,该核锚点才为白色像素点,将原图像的其余白色像素点变为黑色像素点,这种操作可以将孤立的噪点消除。
二、实现方法
先通过33矩阵(33矩阵建立已经在前面博客中介绍)建立33的处理模板,再将该模板与输入图像遍历,腐蚀先将33中每一行做与运算,再将上一步三次与运算的结果再做一次与运算;膨胀则是在相同操作上做或运算。
腐蚀:
膨胀:
三:具体操作
腐蚀:
step1:先将3*3的每一行做与运算
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
erode1 <= 1'b0;
erode2 <= 1'b0;
erode3 <= 1'b0;
end
else begin
erode1 <= filter_11 && filter_12 && filter_13;
erode2 <= filter_21 && filter_22 && filter_23;
erode3 <= filter_31 && filter_32 && filter_33;
end
end
step2:再将上一步的三个值做与运算
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
erode <= 1'b0;
end
else begin
erode <= erode1 && erode2 && erode3;
end
end
assign erode_data = erode?24'hffff:24'h0;
总共消耗两个时钟,再对相关信号做延迟
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
erode_de_r <= 2'b0;
erode_href_r <= 2'b0;
erode_vsync_r <= 2'b0;
end
else begin
erode_de_r <= {erode_de_r[0] ,clken};
erode_href_r <= {erode_href_r[0] ,href};
erode_vsync_r <= {erode_vsync_r[0] ,vsync};
end
end
膨胀:
step1:先对3*3的行做或运算
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
dilate1 <= 1'b0;
dilate2 <= 1'b0;
dilate3 <= 1'b0;
end
else begin
dilate1 <= filter_11 || filter_12 || filter_13;
dilate2 <= filter_21 || filter_22 || filter_23;
dilate3 <= filter_31 || filter_32 || filter_33;
end
end
step2:再对上一步的结果做或运算
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
dilate <= 1'b0;
end
else begin
dilate <= dilate1 || dilate2 || dilate3;
end
end
消耗2个时钟,再对相关信号做延迟处理
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
dilate_de_r <= 2'b0;
dilate_href_r <= 2'b0;
dilate_vsync_r <= 2'b0;
end
else begin
dilate_de_r <= {dilate_de_r[0] ,clken};
dilate_href_r <= {dilate_href_r[0] ,href};
dilate_vsync_r <= {dilate_vsync_r[0] ,vsync};
end
end
四、总结
本实验实现了对视频的膨胀和腐蚀操作,效果较好。(如有不懂可私信)
五、参考资料
1.Fighting_FPGA-csdn
2.博客园——咸鱼IC:FPGA:腐蚀膨胀
(本文用作学习记录,如有侵权请告知)