魏娇
【期刊名称】《《电子世界》》 【年(卷),期】2019(000)018 【总页数】1页(P108) 【作 者】魏娇
【作者单位】咸阳职业技术学院 【正文语种】中 文
本文主要基于Android平台,使用OpenCV计算机视觉库来实现对简单图形的形状和颜色识别,采用模板学习,轮廓检测,和轮廓相似度比对的方法进行识别。首先进行模板学习,生成模板库,再进行图像识别,识别过程先对拍摄原图进行预处理,将RGB颜色空间转换为HSV颜色空间,经过高斯滤波、区分颜色、灰度化、二值化处理后,再对二值化图形进行轮廓检测与提取,最后与模板库进行轮廓比对,根据相似度值得到识别结果。
图像识别技术是人工智能发展的一个重要领域,图像识别的效率和准确性非常重要。图像识别包括图像的获取,图像的处理和分析,输出或显示。将机器视觉图像识别与Android移动平台结合,通过Android移动平台对采集图片进行识别。现在,在图像识别应用的很多场合中都需要对图像中的基础的几何图形进行快速且准确的识别,比如:如圆形、矩形、三角形等,再进行下一步的操作。本文主要针对基本的几何图形进行识别研究。
OpenCV是一个基于开源发行的跨平台计算机视觉库,大大简化了计算机视觉程序和解决方案的开发,代码部分由C/C++编写,但对Python、Java等其他的语言来说,也可以实现非常好的兼容性。本文主要基于Android平台,使用OpenCV计算机视觉库来实现对简单图形的形状和颜色识别。拍摄的图片中包含多个不同颜色不同形状的简单图形,颜色包括:红色,黄色,绿色,蓝色等,形状包括:三角形、圆形、矩形等。 一、模板学习
对不同颜色的形状先进行拍照学习,将各个颜色图形保存为模板,以便于后续识别过程中进行模板匹配,学习过程先将图片进行预处理,具体方法同以下图像识别过程中图像处理过程。包括RGB颜色空间转换为HSV颜色空间、高斯滤波、区分颜色、灰度化、二值化处理,再对二值化图形进行轮廓检测与提取整个过程,最后将所提取的轮廓进行保存,从而建立模板库。 二、图像识别 1.图片预处理
(1)RGB颜色空间转换为HSV颜色空间
图像处理过程中,最常用的是RGB颜色空间,任何一个像素点都可以用红(R)、绿(G)、蓝(B)三种颜色组合。但受环境的影响非常大,RGB颜色空间并不能很好的区分各种颜色,HSV是根据颜色的直观特性创建的一种颜色空间,模型中的颜色参数分别为色调(H),饱和度(S),明度(V)。HSV颜色空间在进行颜色分割时,有很好的优势。对于采集到的原图,使用cvtColor方法将图片RGB颜色空间转换为HSV颜色空间。 (2)高斯滤波
图像处理的过程中,需要对图像进行减噪处理,需要进行滤波。高斯滤波是对图像进行加权平均的过程,图像中每一个像素点的值,都由本身像素值和邻域内的其他
像素值经过加权平均后得到。使用OpenCV中的GaussianBlur方法进行高斯滤波。
(3)区分颜色
接下来对图像进行颜色区别,将图像中的不同颜色图形区分开,后续再进行形状识别。使用OpenCV中inRange方法通过HSV颜色空间值进行区分颜色。 (4)灰度化、二值化处理
为了轮廓提取更准确,在灰度化、二值化处理之前先进行一次开操作,可进一步去除一些噪点,再适当进行闭操作,可以连接一些连通域。使用OpenCV中morphologyEx方法进行开闭操作,参数为MORPH_OPEN进行开操作,是指先进行腐蚀操作,再进行膨胀操作,参数为MORPH_CLOSE进行闭操作,是指先进行膨胀操作,再进行腐蚀操作。
图像灰度化是将图像的每一个像素点的值变为灰度图像的值的过程。就是使图像中的红(R)、绿(G)、蓝(B)三个分量相同,也就是灰度图像,这样可以减少处理过程的计算量。使用cvtColor方法进行灰度化处理。再将灰度图转化为二值化图像,二值化使图像更加简单,数据量更小,能凸显出目标的轮廓,方便进行图像分割。也就是将整个图像中的像素点变为只有黑和白两个像素值,使用threshold方法进行二值化处理。二值化后再进行一次闭操作,使轮廓更好。 2.图形识别 (1)轮廓检测
对二值化后的图像进行轮廓提取,使用OpenCV中findContours方法进行提取轮廓点,再用approxPolyDP方法对图像轮廓点进行多边形拟合,此方法第三个参数epsilon越大,拟合的线段越多。通过drawContours方法可以绘制出所提取轮廓,从而进行后续轮廓比对。 (2)轮廓比对
将图像中获取到的每个轮廓和前面学习的模板库中的轮廓进行一一比对,使用matchShapes方法进行轮廓比对,此方法是根据计算比较两张图像Hu不变距,方法返回值代表相似度大小,完全相同的图像返回值为0,返回值最大是1,越接近0说明轮廓相似度越高。取图形轮廓和每个模板轮廓相似度中的最小值所对应的模板即为图形的形状。 三、结论
目前,Android移动平台的使用已经非常广泛,基于Android平台的图像处理软件使用更加方便,成本更加低廉、应用更加广泛。本文基于Android平台使用OpenCV计算机视觉库来实现对简单图形的形状和颜色识别,计算得出指定颜色图形的个数。采用模板学习,轮廓检测,和轮廓相似度比对的方法进行识别,方法简单实用,非常有效的提高了识别准确度。本方法的局限性在于只适用于简单几何图形的颜色形状识别,对于复杂的图形识别率需要进一步提高。
因篇幅问题不能全部显示,请点此查看更多更全内容