我们识别别风扇桨叶主要是在一幅图中将桨叶的部分识别出来,再在识别出来的桨叶的基础上识别出风扇故障。
1.因为图片的背景较为简单,所以我们先对图像进行预处理,因为图像较大,所以先用imresize(image,'bilinear')
将图像缩小为一半,然后用im2bw()
对其二值化,我设的阈值为0.65,(不同的图,可以设不同的阈值,我这0.65效果最好),效果如下:
2.接下来我们再利用3*3的laplacian滤波器对图像进行滤波,这主要是为了后面对图像hough变换做准备,以去除竖直杆的部分,效果如下:
3.对第一步骤处理后的桨叶进行形态学开运算,先腐蚀后膨胀,在对其划分连通域,将所得的连通域与桨叶模板进行比较,将最相似的两个连通域给标记出来,再用hough直线检测,若有连通域中的直线与0度相近,就认为其含有竖直杆,故把其去掉,留下桨叶部分。效果如下:
其实第3部分存在一些小细节,比如模板的选取,以及不变矩的使用,以及如何先剔除明显不是桨叶的连通域,接下来再来详细说一说:其实选模板就是将图片中的桨叶框出来,然后对模板求其不变矩的特征,在这我用了两种不变矩,一种是”hu“矩,另一种是”zernike“矩。利用hu矩得到的是一组长度为7的行向量,因为我们要求待测图像与模板图像的相似度,所以我们就利用欧式距离来衡量。zernike矩得到就是一个复数,所以之差取绝对值就行了。
最后的终极效果如下(从一副图中框出桨叶):