对于双目视觉,我想现在差在图像处理方面。据我现在的认识,双目视觉,一个方面是摄像机标定,一个方面是特征点的匹配问题。由于还没有做具体的试验,所以,很多东西的理解上都还有待提高。
对于摄像机的标定,现在想的是用很成熟的一种方法,直接用matlab里面的摄像机标定的工具箱做就可以了。
所以,现在的难点在于图像处理的问题,也就是寻找特征点进行匹配。
想一想,现在要进行识别的东西很简单,目标也是很明确,如果不考虑特殊的情况的话。也就是一个颜色偏近红色的小球和一个两端是黄色,中间是蓝色的角柱,目标都个头都不小。但是,难点在于,由于使用的是usb camera捕捉的图像,是运动的时候捕捉的,会有抖动的现象发生,这样图像就会有些模糊。现在想在这里把前两天做图像处理的时候发现的问题总结一下,然后,想一下解决的方法。
图像的分割有很多的方法。基于颜色的和基于形状的。现在感觉,虽然,问题看起来并不是很难,但是,如果,单一的用一种图像分割的方法,估计是行不通的了。
前几天,一直都是考虑仅仅是基于颜色的分割。也就是把rgb颜色空间转换到hsi颜色空间,然后,结合s值,但是,主要是根据h值进行分割。这里面,是在程序中设的阈值,因为总的感觉上,这些还是颜色很是分明的。这样的效果,是会有一些比较杂乱的点其实并不属于我想要的区域被分割出来,也会有一些明明是在我想要的区域中的点,没有被分割出来。对于那些被分割出来却又不是目标的点,可以用形态学中的开启闭合来去掉,但是,这样,目标,也会有些损失。而原先考虑用颜色的方法的时候,就是要得到目标中的每一个点的坐标,然后,求出中心点的值。按这样的处理效果,得到的中心点肯定会有很大的偏差,对于双目视觉,特征点的匹配是最重要的,所以,这样肯定是不行的。也考虑过用区域生长的方法,但是区域生长的方法要考虑到种子点的选取,生长的条件和终止的条件。这里面生长的条件应该是最难的。并且关键是,我以前没有编过类似的算法,而现在根本没有时间再去考虑做这个试验。还有,我也想过,用这种方法,最后,还是会产生有些区域分割不出来的问题。总的来说,光用颜色分割的方法不行!
现在想想,既然是要求精度高些,那么,应该是用边缘检测能好些。也许用彩色图像的边缘检测能好些。今天早上试验用普通的sobel等算子对因为摄像头的移动,边缘都有些模糊的图像进行检测(这里,是先转换成了灰度图),最后,边缘几乎都没有被检测出来,如果用的是canny算子,那么,检测出来的东西会很多,canny算子确实是不错,但是,细节也太多了,这样,真正要的东西会被淹没的。上面试验的时候是用的灰度图,这样,对于,角柱和小球的特点,它们都是有曲面的,光滑,所以,亮度光照对它们的影响还是挺大的,当有些光照强的话,那么,就会有些rgb值偏近于一致,这样,导致的结果是一个可以肯定的是当转换成hsi模型时,s值偏近为0,这样,h值也就会没有太多的意义了(这样,就让我的基于颜色的分割效果不太好)。而另一个影响,现在感觉不是确定的,就是,轮廓的光滑,让基于灰度值的边缘检测,效果不好(canny算子除外)。
现在,就想把基于颜色的分割和边缘检测结合起来,最后,用hough变换检测直线和圆(小球)。因为单独的用哪个,好像效果都不太好。也许就是单独用彩色图像的边缘检测也能达到这样的效果,但是,首先,我现在还没有发现什么好的彩色图像边缘检测的方法,曾经查找过这方面的内容,但是,没有什么收获,看图像处理的书上面说,对于边缘检测,彩色图像可以和灰度图像一样做,也就是把rgb三个分量分别做,这样和hsi的效果相比,也还行。其次,我还在想,如果光用边缘检测,最后,是要用hough变换的,如果最后要做hough变换的区域很大的话,那么,首先,会有很多的不需要的东西的干扰,还会增加计算量。所以,想用,基于颜色的分割先定一下分割的区域,然后,再在这个区域中边缘检测和hough变换。这样,就把基于颜色和基于形状的变换结合了起来。
现在边缘检测遇到了麻烦。想在matlab上先试一下算法,只要是算法效果好,程序,我想,应该不是太难的问题。然后,晚上或明天就要编写出最后的程序了。明天就是星期4了。
关键还是算法,怕找不到好的算法。而图像处理对整个的双目视觉又是这么的重要。如果,图像处理不好,那么,整个的系统,肯定就是不行的了。
必须,走一步,就保证一步的最大可能的没有太多的误差的。