本人是个图像处理新手,最近在做一个项目,因为水平有限,卡在这怎么也做不下去了,简直要崩溃了。大家帮忙看看有什么思路没。在这里谢谢大家了,谢谢
项目是有关在线检测的,简单的说下:下图左边的图是提前拍摄的模板,右边的图是相机在暗箱(里面使用环形灯管照明)中在线拍摄的照片,相机通过传感器检测板子的位置进行拍照。然后根据模板比对,检测相机拍摄的板子上的东西有没有错装或者漏装。需要检测的部分也不是整个板子,只是板子中间分五列排列、总共有7种颜色的长条块(红、蓝、棕、黄、乳白、深绿、还有一种是上面没装东西,算作黑色)。
图一
事实上,差分程序关注的部分只有下图我用红色框框起来的部分,我也会在制作模板时就记录这个红色框的位置,在差分程序中使用ROI,只处理框中的内容,但是在下面的图中我把整个板子的差分图都发出来了,方便大家有个整体认识。
图二
我现在的做法是:首先对两张图检测特征点,用SURF对图片进行匹配。然后用仿射变换将待检测的图片映射到模板图的空间里实现板子对齐,然后对两张图片提取轮廓,将背景剪除。再用差影法做两张图片的差,通过差分图来确定板子上哪些位置颜色有变化。我取的差分图像HSV空间的H通道和YCrCb空间的Cr和Cb通道进行处理(之所以选这三条通道,是因为这三条通道看上去信噪比比较高,其他的很多通道噪声多得根本没办法提取出任何有效数据),滤掉噪声,就能得到颜色有变化的位置,从而确定错装和漏装的位置。软件用C++编写,还用了opencv
但是,我的方法并不能很好的实现我想要的功能,主要有以下几点:
第一,也是最重要的。颜色有差异的部分并没有显著的体现在差影图像上,尤其是一些相近的颜色,比如红色和棕色、蓝色和黑色、棕色和乳白色、绿色和黑色等组合,它们在差影图上的信号有时甚至比噪声还低,根本没办法有效提取
第二,基于SURF的匹配效果不太一致,虽然大多数的时候比配效果用肉眼看还可以,但有时会出现匹配失败,两块板子完全没有对齐的情况,这种情况大多发生在待匹配的板子与模板中板子夹角比较大的时候。
第三,就算匹配成功的板子,也会产生许多噪声。我感觉是因为光照不均匀以及匹配并没有让板子完全对齐,少许的差异让两张图的边界在差值后产生了噪声。这些噪声十分影响有效数据的提取。
下图是上面两张差分图的H通道图像
图三
下图是差分图Cr通道的图像,虽然Cr通道上噪声比较小,但是能识别出的有效数据也少
图四
下图是差分图Cb通道的图像
图五
下图是一同一块板子(板子上没有差异)经过两次拍摄(板子在图中的位置不同,后经过匹配对齐)的图像差分得出得出的图像,边缘产生的噪声实在太大,很难与有效噪声区别
图六
做到现在,我完全没办法提取出有效的信号,不是提取不全有效信号,就是弄得噪声太大,甚至在两个板子一模一样时也提取出很多信息。
我尝试过增大图像的饱和度、对比度、或者直方图均衡等一些处理后再去差分,效果也不是很好。感觉颜色的变化总是不比亮度变化和其他一些噪声更显著。
大家有什么方法和思路可以对项目有所帮助呢?请大家帮我一起想一想,真心的谢过大家了。