APP下载

基于OpenCV 的龙眼图像合理通道选择研究

2019-10-31姚俊光余冰纯林景峰殷惠莉

现代计算机 2019年26期
关键词:直方图感兴趣灰度

姚俊光,余冰纯,林景峰,殷惠莉

(华南农业大学电子工程学院,广州510642)

0 引言

龙眼是我国亚热带特产珍贵果树,具有2000 多年栽培历史,品种繁多,不同品种外观略有差异。从产值来看,2014 年我国龙眼产量超过180 万吨[1],随着传统农业的升级改造,机械化与自动化水平不断提升。为了降低劳动力成本,提高生成力,机械化果实采摘技术日渐受到人们重视。目前水果机械采收方式一般有两种,一种是机械化采收方式——机器通过震动使得果实与枝干分离;另一种是机器人采收方式——机器借助计算机图像处理技术精确定位果实(串)的位置,然后通过机械方式对果实进行采摘[2]。本文提出了一种基于OpenCV 的龙眼图像合理通道选择的图像处理技术,调用OpenCV 中强大的图像处理函数库,在Visual Studio 2017 的编译环境下,用C++语言对龙眼图片进行图像处理分析,从而挑选出最合适的模型通道。

1 色彩空间模型

在计算机视觉领域内,为了更好地描述一幅彩色图像的颜色,人们提出了许多的色彩空间模型,即用一组数值来描述一个色彩的数学模型。其中经常用到的模型有RGB 模型、HSI/HSV 模型、La*b*模型、YCrCb模型、OHTA 模型、CIE-XYZ 模型等六种,这六种模型大体上可以分为两类,一种是混合颜色模型,这个颜色模型中的所有分量都包含有亮度信息;另一种是把亮度信息单独提出,作为单独的一个分量的色彩模型。

1.1 HSV模型

HSV/HIS 色彩空间模型是一种基于视觉原理的模型。这一类模型将光照强度这一特征提取出来,单独作为一个分量。

1.2 RGB模型

RGB 模型是一种加色模型,在三维直角坐标系中,原点处表示黑色RGB(0,0,0),而RGB(255,255,255)则表示为白光。

1.3 CIE-La*b*模型

La*b*模型是一种基于人的视觉原理而确定的一种色彩空间模型。La*b*模型相较于其他色彩空间模型而言是一个较为均匀的色彩空间模型。

1.4 CIE-XYZ模型

色彩空间色度图展示了对一般人可见的所有色度,但是XYZ 模型可以表示的颜色比人眼实际能看到的颜色范围要大很多。CIE-XYZ 在色度图上的欧氏距离并不对应于两种颜色之间的差别程度。

1.5 YCrCb模型

YCrCb 模型是一种类似于HSV 的色彩空间模型。该模型将亮度与人所感觉的颜色分离,是YUV 色彩空间的压缩和偏移。

1.6 OHTA模型

OHTA 色彩空间又被称作I1I2I3色彩空间模型,它是由Ohta 等人[3]在1980 年通过研究比较而提出的一种对基于图片色彩区域分割有效的一种色彩空间模型。OHTA 模型由一组正交基I1I2I3组成。

OHTA 颜色空间可由RGB 模型经过线性变换得到。

通常,OHTA 模型与RGB 模型的转换公式可以表现为公式(1)所示的形式,但是在实际操作过程中需要将其转换到了[0,255]的空间当中。

2 图像滤波

在图像采集过程当中由于各种原因,难免会在拍摄的图像中产生各种各样的噪声,这些噪声如果不消去,很有可能会对后面的进一步操作带来不利的影响。因此对采集到的图片预先作滤波处理是很有必要的。一个合适的滤波算法不仅要求运算速度快,还要能很好地抑制噪声污染极大地保留原有的图像信息。

王晓虹等人[4]提出了一种结合Ridgelet 变换与Wiener 滤波的算法用于对苹果图像进行滤波,这种滤波算法可以自适应地抑制图像噪声。Jiménez 等人[5]通过预设扫描窗口,通过检测窗口内的各点与其均值的差值是否大于三个标准差来抑制图像中的高斯噪声,同时这种算法还能够有效地保护不连续边缘信息。

图像平滑处理方法主要分为空域法和频域法[6]。图像处理中主要采用空域法中的两种最经典的平滑方法:均值滤波(blur 函数)和中值滤波(medianBlur 函数)。

如公式(2),均值滤波则是线性滤波的一种,主要方法为邻域平均法,即采用一片图像区域的各个像素的均值来代替原图像的各个像素值。一般要在图像上对目标图像给出的一个内核,构成一个滤波模板,在用模板中的全体像素的平均值代替原来的像素值。均值滤波可以有效处理噪音,同时处理速度较快。

如公式(3),中值滤波采用非线性滤波方式,就是将一个像素周围的一个窗口内的所有像素灰度值进行排序后选取其中的中值来代替那个像素的灰度值。因此中值滤波的速度会较慢。中值滤波能够有效地消除随机噪声带来的污染,能较好地保护图像的边缘,不会使得图像模糊化。

3 合理通道选择

本文研究工作流程如图1 所示。输入图片后,对图片进行滤波去噪,分离出各个通道,再分离出来的通道中筛选出一部分果实与背景较易区分开的通道,最后利用几个通道得出的灰度图绘制像素直方图,经过分析从而得出合理的通道。

图1 图像处理技术工作流程图

3.1 输入图片

通过OpenCV 库内的imread 函数读取图片。文中分析待处理的部分成熟龙眼原图如图2 所示。

图2 成熟龙眼原图

3.2 均值滤波

为了消除噪声污染,减少图像上的噪音或者失真,需要对待处理的图片进行模糊处理,也叫平滑处理。经过滤波后的图像,视觉上感觉整体比较模糊。图像处理中则采用此方法去除噪音,减少接下来所画的直方图的毛刺,使曲线较为平滑,易于得出规律。经均值滤波后的图片如图3 所示。

图3 均值滤波后的图

3.3 分离通道

如前所述,常用的有六种色彩空间模型,而每种色彩空间模型由三个通道组成。每个通道由不同的规则在计算机里面由不同的矩阵记录。为了分析选择合理的通道,首先就要把通道分离出来,分离出来的通道在计算机里由像素点矩阵储存。分析方法有两种,第一种是直接观察各个像素的数值,观察感兴趣区域(Region Of Interest,ROI)部分像素值特点。很多情况下,由于直接观察不够直观,这就增大了观察的难度。第二种方法就是分离出通道后,直接以灰度图的形式呈现出来。这样通过观察每个通道对应的灰度图感兴趣区域是否与其他部分区别较大,即可粗劣选择合适的通道。

读取完毕图片后,在cvtColor()函数分别输入原始图片矩阵,目标图片矩阵,和转换标志语,使每幅图片转换到不同的色彩空间通道里面。然后调用OpenCV库里面的split 函数,将转换后的色彩空间模型分离到某个Mat 类一维数组里面。最后分别读取Mat 类数组里面的值,通过imshow 以灰度图的形式表现出来。其中OHTA 模式的色彩空间模型并没有对应的转换标志符。解决方法就是把BGR 模型分离出来的R 通道、G通道、B 通道分别存到某个Mat 类数组里面,通过公式(1)计算出I1I2I3通道,最后显示。由于OpenCV 默认灰度图存储大小为无符号字符型,即0-255 数值,这就导致了在计算过程中有可能溢出,为此图片深度需要采用convertTo()函数转化为16 位无符号字符型,最后存储在Mat 类里面。图4 为部分图片分离的灰度图。

通过分析发现,图2 中五幅图片的BGR 与XYZ色彩模型果实与背景灰度深度与原图基本一样,并没有很好地突出感兴趣区域,果实与背景难以分辨。在OHTA 模式中,五张图片I1通道感兴趣区域与非感兴趣区域比对不大,不可以很好地突出ROI。I3在某些图片中可以比较好地区分出ROI,例如图(a)、图(c)、图(d)。而对图(b)、图(e),果实基本与背景一样难以分辨。在La*b*中,a*、b*虽然整体比较浅,但还是可以很好地分辨出果实与背景,不过b*通道对图(b)、图(c)、图(d)、图(e)中感兴趣区域与非感兴趣区域对比度与a*通道相差较大。在HSV 色彩模型中,V 通道取决于明度,S 通道取决于饱和度,两者都不是区分果实与背景的根本判据,通过分离出来的灰度图的确可以看出,V 通道与S 通道都不合适。同理,在YCrCb 模型中,Y通道也是表征颜色的亮度成分,也不是判断感兴趣区域与非感兴趣区域的根本判据,应该舍弃。

在HSV 空间中的H 通道,YCrCb 空间中的Cr 通道、Cb 通道,La*b*空间中的a*通道以及OHTA 空间中的I2,这些通道都可以清楚地分辨出果实与背景。

深入分析,Cb 通道受外界照明影响较大,并且通过进一步观察,发现尽管同是表示红色量的Cr 通道和a*通道,对比度上在Cr 通道内,图像灰度值的对比度更大而在a*通道中,果实与枝干的灰度差距不大,因此可选择的通道只有H 通道、Cr 通道、a*通道以及I2通道。

图4 成熟龙眼在各个色彩模型中的各通道的灰度图像

3.4 分析像素

初步确定合适的通道后,还需要具体分析各个通道中的特性。通过在直方图中标记感兴趣区域与非感兴趣区域之间显著的像素值的统计变化,在兴趣点设置一个有相近特征的直方图所构成的“标签”,对数据进行统计,并且将统计值统计到一系列事先定义好的组距中,用于确定图像中的兴趣点。通过calcHist()函数计算各个通道在组距里面的像素值个数。然后调用minMaxLoc()函数,此函数可以返回InputArray 类型的单通道阵列的最大值与最小值和最大值位置与最小值位置,方便后续计算。为了便于观察,把第一个通道用蓝色表示,第二个通道用绿色表示,第三个通道用红色表示。部分图片的直方图如图5 所示。

图5 图(a)色彩空间通道灰度分布直方图

通过分析可知,如果要分割阈值,虽然不同图片之间对应的通道的分割阈值不是固定的,不过此阈值应该在某一个范围内。在HSV 通道分析中,可以看到H通道几乎都表现出“双峰”,而且双峰出现的范围基本一致。S 通道、V 通道出现的“峰”与H 通道的基本不在同一个范围内。在YCrCb 各个通道中,Cr 通道普遍表现出“双峰”,Cb 通道也表现出“峰”,Y 通道的“峰”范围较大,所以Y 通道不适合用于阈值分割,这与之前的分析结果一致。La*b*通道也表现出较易分割的“峰”。OHTA 模式中,I2也基本表现出“峰”,但是由于“峰”较为“矮小”,如果用阈值分割的方法分割的话,分割的范围要略大,这不利于果实与背景分离出来。所以OHTA 模式不适合用于龙眼的阈值分割。

4 结语

本文对获取的龙眼图像利用OpenCV 中的图像处理函数库,首先对输入图像进行模糊滤波处理,得到噪音较少的图像,然后将各个图片转换为不同的色彩空间模型,再在不同的色彩空间模型下将通道分割开来,观察各个图像果实与背景是否易于区分,挑选出五个易于区分的通道后,经过进一步分析,选择最合适的四个通道,即H 通道、Cr 通道、a*通道以及I2通道。最后绘制挑选出的模型的直方图,通过分析直方图,得到后续阈值分割可能需要用到的三个色彩空间模型,即HSV 模型、La*b*模型、YCrCb 模型。

猜你喜欢

直方图感兴趣灰度
航空滤光片阵列多光谱图像条带灰度调整算法
采用改进导重法的拓扑结构灰度单元过滤技术
对自己感兴趣
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
用直方图控制画面影调
例析频率分布直方图
中考频数分布直方图题型展示
编读往来
现在是几点