简单描述一下,具体这个亮点和光点是怎么来的。
在做质量和数量检测的时候,常常会涉及到,识别异样点 (坏点)。在很多检测的过程中,模型基本是相同的,比如说,检测电路板是否有异样,把坏点圈出来。电路板之间,都是相同的。我称作背景,检测到电路板边 缘,进行位置校对后,减去背景。剩下的就是一些亮点了。还有如果要让你把红豆和绿豆分开。绿豆里面有多少红豆(少量),做前期图像处理的时候,把红豆的色 彩分量提取的话,图像就只有红豆是白色的,其他的都是黑色的了。等等。都需要涉及这一点。
最后就会出现一张图(见下图),这张图你可以这么理解,就是一块蛋糕上,撒了些小豆,然后我检测一下,上面小豆的数量。
1,理论:其实我们大概也知道,亮点它的亮度一定比周边的要亮,呈现一种高斯形状,旁边数值低,亮的地方高,然后旁边又低。但是不但表它比整个平面的相对亮度都亮。所以进行图像处理的时候,并不一定要全局处理。
这张图像的质量比较好,不需要做图像的较多处理。其实前期有时候是需要滤波,均衡的。 亮点的情况大概说了下,怎么检测呢??有一个是,边缘检测,边缘检测后,亮点就会变成一个圈。然后形态学处理,开操作,闭操作。进行处理后,进行个数测 量。第二个,就是高斯形状检测,用5*5的高斯掩膜做处理。对 整幅图扫描,如果符合高斯形状,我就认为是亮点。
2,matlab的处理和验证:
亮点的数据情况:
126为中心,的一个亮点。这就是一个亮点周围数值的分布状态。
第一种方法是边缘检测的,是吧。
这个是边缘检测后的,呈现的是这种状态。后面怎么操作呢??3*3的中值滤波。把孤立点去掉。
最后通过距离进行聚类。这个方法比较麻烦。最后我还是采用了,第二种方案。高斯形状的检测。
-
for i=20:236
-
for j=20:280
-
if (f1(i,j)>f1(i,j+1)&&f1(i,j)>f1(i,j+2) &&f1(i,j+1)>f1(i,j+3) &&f1(i,j)-f1(i,j+4)>15 && ... %比较右边
-
f1(i,j)>f1(i,j-1)&& f1(i,j)>f1(i,j-2) &&f1(i,j-1)>f1(i,j-3) &&f1(i,j)-f1(i,j-4)>15 ... %比较左边
-
&&f1(i,j)>f1(i-1,j)&&f1(i,j)>f1(i+1,j)) %比较上边和下边
-
t(1,w)= i;
-
t(2,w)=j;
-
w=w+1;
-
end
-
end
- end
abs(t(1,i)-t(1,i+1))<3
abs(t(2,i)-t(2,i+1))<3
进行邻近点聚类。
3,FPGA实现:
-
parameter read_ram_data_state = 64'b0000_0000_00
-
parameter read_up5add_state = 64'b0000_0000_0000
-
parameter compare_bigsmall_state1 = 64'b0000_000
-
parameter read_down5add_state = 64'b0000_0000_00
-
parameter compare_bigsmall_state2 = 64'b0000_000
-
parameter save_dot_add_state1 = 64'b0000_0000_00
-
parameter save_dot_add_state2 = 64'b0000_0000_00
-
parameter read_dot_add_state1 = 64'b0000_0000_00
-
parameter read_dot_add_state2 = 64'b0000_0000_00
-
parameter first_dot_add_state = 64'b0000_0000_00
-
parameter data_compare_two_state = 64'b0000_0000
-
parameter judge_different_state = 64'b0000_0000_
-
parameter read_ram_delay_state = 64'b0000_0000_0
- parameter edge_dot_delet_state = 64'b0000_0000_0
我还是把状态机贴出来。描述一下状态机的变化顺序。
第一步,图像保存,存储器清空,前期准备工作。
第二步,图像一行一行往计算模块里面送,计算什么呢??计算行向的高斯形状。因为如果一次去计算5行的情况,上下左右都检测,然后还要ram临时保存的话,会降低效率的。
第三步,如果有检测到横向有高斯形状后,才开始检测,这个像素的上,和下,竖向方向是否也呈现高斯状态。
第四步,如果呈现高斯状态,保存起来。如果不是,回到第二步。
第五步,就是把保存的亮点,进行聚类。
第六步,发送给上位机。
检测的正确率还是很高的。可能是环境的质量比较好。当然了,整体结构是这样的,具体的细节还是有很多的。
(copyright by my_share)