Nao机器人的比赛中有一个Any Ball Detect。也就是在足球场地内,放置任意颜色的球,让机器人进行识别并射门。这里只讨论球的识别。我们知道,Nao机器人的处理能力有限,我们需要识别出任意的球,而事先又不知道球的颜色,看来得需要检查圆形了。又由于是在足球场地,所以背景的颜色也是知道的。
这里我们主要采用的就是将采集到得每一帧图像,将其背景设置为0 0 0。非背景设置为255然后采用霍夫变换检测圆形。这里要讨论一下Nao摄像头颜色空间的选择,BGR颜色空间受光照影响变化太大,基本上用阈值的话效果不好,尤其是对背景的去处的时候。在这里使用的是YUV颜色空间 Y:亮度,U:B分量,V:R分量。经过对比,如果只是使用阈值法的话,YUV在光照变化不是很大的情况下还是能够很好区别出不同的颜色信息。
其中在预处理后会采用高斯滤波来平滑图像。高斯滤波实质上是一种信号的滤波器,其用途是信号的平滑处理,我们知道数字图像用于后期应用,其噪声是最大的问题,由于误差会累计传递等原因,很多图像处理教材会在很早的时候介绍Gauss滤波器,用于得到信噪比SNR较高的图像(反应真实信号)。于此相关的有Gauss-Lapplace变换,其实就是为了得到较好的图像边缘,先对图像做Gauss平滑滤波,剔除噪声,然后求二阶导矢,用二阶导的过零点确定边缘,在计算时也是频域乘积=>空域卷积。
滤波器就是建立的一个数学模型,通过这个模型来将图像数据进行能量转化,能量低的就排除掉,噪声就是属于低能量部分,其实编程运算的话就是一个模板运算,拿图像的八连通区域来说,中间点的像素值就等于八连通区的像素