轮廓识别(精选7篇)
轮廓识别 篇1
引言
模式识别技术被用于计算机视觉及图像处理领域, 近些年得到了飞速的发展, 吸引了世界上众多学者参与研究。如何提取或者测量叶子的特征是一个长期研究中的话题[1]。这使得模式识别在这个领域的应用面临了一个新的挑战[2,13]。根据文献[2], 由计算机自动获取现存植物的数据的做法还没有被实施。
而目前国内外针对植物叶片形状特征中的轮廓特征, 对植物叶片轮廓提取的方法主要分为基于轮廓和基于区域[3]。文章通过对现场拍摄的植物叶片照片进行预处理, 对比[4]中使用的canny边缘检测, 我们采用Expectation-Maximization算法对植物和背景进行图像分割[5], 能在移动平台上以较快的速度获取相对更加准确的边缘信息。结合文章提出的自适应核植物形态学开闭运算, 以达到去除叶片茎的干扰, 然后提取植物叶片边缘轮廓的曲率特征。
关于特征的选择, 虽然目前已经有许多方法, 但大都使用了预定义的特征。而[9]中使用了一个移动中值中心超球面分类器, 因为其需要大量的迭代计算, 不适合在移动平台上应用。相似的做法在[2]中也提出了。他们的另外一篇论文提出了一个用于叶片形状匹配的简单的动态规划算法, 相对[9]而言计算速度有一定提升。而文章采用采用的多尺度提取轮廓曲率信息, 既能有很短的计算时间, 通过实验筛选出最具代表性的尺度特征, 相比采用"不变矩"或类似于多尺度距离矩阵[10]等尺度不变方法, 不仅能保证识别的成功率, 而且计算量较小。
以上的很多方法都使用了k-邻域的分类方法[2,8,9], 而有些文章中采用虚拟神经网络的方法。在[11]中作者结合花和叶子的信息来分类野生的花, [12]中提出一个虚拟神经网络的运用来分类仙人掌。但是根据[9]中作者所论证的, SVM分类将更有利于对高维特征进行更加精确的分类。
所以文章最后通过SVM训练形成的强分类器, 与曲率直方图相交[5]这种方法对比, 对其曲率直方图进行分类, 使得系统的识别率更加稳定, 达到对不同的植物叶片进行识别和分类。
1 提取叶片
由于植物在不同的季节颜色变化较大, 并且叶片受光照环境的不同, 很容易发生颜色的改变;如果以叶片的脉络作为特征, 伴随着叶片的生长变化极大, 不利于同种物种的准确识别。同时, 为了模拟在真实环境中需要进行现场拍摄, 所以在Android平台上进行嵌入式开发。考虑到移动平台的摄像头像素偏低, 我们尽量选择高亮的背景进行拍摄, 为了能够提高识别的准确率, 只能通过对叶片轮廓形状上的特征进行提取。
这样的话, 要获得一个描述充分准确的叶片轮廓形状就显得十分关键。与canny边缘检测比较而言, 使用Expectation-Maximization算法对图像的前景和背景颜色分布进行估计, 能够保证提取的轮廓闭合, 完整。如果使用canny边缘检测, 在叶脉比较突出的情况下, 可能会检测到多个边缘, 并且不一定能形成完整闭合的轮廓。通过EM训练, 利用这个训练结果, 对独立的每个像素进行分类。得到一个最初的分割二值图像, 如果图像含有噪点可以利用中值滤波进行处理, 之后通过Opencv中的Find Contour方法取出轮廓, 就能保证所得轮廓的完整和边缘曲率信息的精确, 然后通过形态学开闭运算及根据连通性进行除去阴影区域和叶片的叶杆。
1.1 通过Expectation-Maximization算法进行初始分割
我们尝试在RGB颜色空间下进行估计, 但是效果不太理想, 而在使用HSV颜色空间时, 提取每个像素所对应的饱和度 (Saturation) 和明度 (value) 进行估计, 预测结果非常准确。那么一个像素的概率分布ξ, 由其饱和度和明度的两个高斯分布之和组成:
我们初始化每个高斯模型在各自的期望中心附近分布, 注意到公式中的系数为0.5, 当采用两个相等权重的高斯分布时, 从新图像中读入数据, 函数能收敛到相应的阈值。特征提取就通过EM分割, 交替地使用每个像素估计当前参数, 然后在使用新参数对像素点进行预测, 从而更新和修正参数, 反复迭代直至收敛。
我们将拍摄图片按比例缩放为400*400像素, 比较了不同的采样方式。首先, 采取生成随机二维数组, 作为采样像素点的横纵坐标, 采样点数为总像素数量的百分之一;其次, 选择存储图像的矩阵中, 每隔10个像素点取一个采样点, 从像素点 (10, 10) 开始, 同样采样点数为总像素数量的百分之一。
结果表明, 采用第二种采样的方式更有利于初始分割图像的准确性。其原因是当拍摄者在对叶片进行拍摄时, 主观的会将叶片置于整幅图像的中心, 而采用网格状取样方式, 能对采样点的不同类型有一个全面的覆盖。
然而对于光照产生的阴影和叶片上比较薄的部分, 或者由于拍摄摄像头像素过低, 以至于照片模糊, 有可能使得叶片边缘会有一些噪点, 增加中值滤波, 可以消除这一影响。
1.2 使用形态学操作去除错误预测区域
在EM处理之后, 每个像素点都根据其在EM处理中和两个高斯之间的关系被认定为叶子或者是背景上的像素。这就导致了一开始的分割中有时候会存在因为不均衡的背景、阴影或者图像中多余的物体而产生错误预测区域。另外, 图像中多余的边缘信息也会导致错误分割区域, 这是因为在实验时, 我们通常会在叶子后面放置一张白纸来产生一个高亮的背景, 之后拍摄照片, 这些照片有的会拍到白纸的边缘, 从而产生潜在的错误预测区域。
腐蚀运算即为:
我们的预处理过程的目标就是去除这样的假阳性区域。我们首先计算对于连同区域膨胀后的分割状态。在此情况下, 任何有很大边界在图像边缘的连通区域就被去除, 这样就消除了在白色背景外的区域。
1.3 使用自适应核的顶帽算法去除叶柄
根据拍摄情景的不同, 有可能所拍摄的叶片照片是没有叶柄的, 但是为了防止在有叶柄的情况下对叶片轮廓信息造成干扰, 所以以下采取形态学操作, 对图像进行处理:
使用顶帽算法 (Top-Hat) , 其原理为:
由于对相片大小进行了固定缩放, 所以在进行形态学腐蚀操作时, 选用的核大小r与最终效果, 有着很大关系。我们根据EM预测的结果, 统计叶片在整幅图片中所占的比例大小s, 进行自适应调整, 通过实验发现, 选取矩形核能较好的保存曲率信息, 并且, 所占比例大小s和图像分辨率 (x, y) 之间的关系近似满足:
大部分情况采用6*6矩形核能够较好地将大部分柄完整地除去。
因为叶片的柄, 较叶面而言大多都比较狭长, 在进行一个形态学开运算之后, 也就是一系列的膨胀和腐蚀操作过后, 二值图像会分离成一系列相互不连通的区域, 而去除茎不应该增加相互不连通区域的数量, 所以我们认为这样的候选部分最可能是杆, 所以我们通过顶帽算法将茎提取出后, 在原图上修剪掉这一部分, 剩下的就只剩叶面了, 如图1、图2。
1.4 提取结果
经过以上步骤, 叶片的边缘形状提取到此完成, 在安卓4.0系统普通手机上需要一共运行3.27s, 主要花费时间为EM预测, 占总时间的72.3%。
不过这一系列操作对于没有叶柄的图1来说, 去茎处理之后, 会损失一定的边缘信息, 应该如何解决或图像恢复, 文章尚且没有做更多的研究。
2 曲率特征的计算和存储
2.1 曲率的计算
对于不同拍摄者的不同拍摄尺度选择, 会使得有时叶片面积占整幅照片面积比例过小, 有的过大, 所以只有使用多尺度的叶片形状特征, 才可以有效地分辨不同种类的植物叶片。
对于离散的点来说, 要求轮廓的曲率并不能够直接求取, 由于我们考虑到在移动平台上不能够进行长时间大量的运算, 只能够借由在叶片轮廓上, 以轮廓点为半径画圆, 统计在院内的像素为叶片的像素点数, 来广义的表示该点处的曲率值[13], 曲率越大, 园内的叶片像素点数越接近圆面积的一半, 如图3、4所示。
我们尝试从叶片轮廓的某一点出发, 按照顺时针顺序, 选取不同的尺度, 计算轮廓曲线的曲率大小, 形成一组关于轮廓点序列和其在不同尺度下所对应的曲率值的向量, 将其转化成矩阵形式可以在表示成横坐标为轮廓点的序号, 纵坐标表示为尺度大小, 而横纵坐标所对应的值就是这一点, 在这一尺度下的曲率大小。我们取了1~30个像素大小的不同尺度, 绘制灰度图像如图5。灰度值越高, 代表该处曲率越大。如图5所示。
统计R-P (Radius*Position) 图像的直方图信息, 绘制曲率直方图如图6。
2.2 曲率特征的存储
完成计算后, 相对应的, 每一幅R-P图像的直方图信息将对应着一种植物的特征。由于在Android平台下自带Sqlite数据库, 读写速度快, 并且较为轻便, 我们为了不丢失直方图精度, 不进行归一化处理, 而是将数据以32位Float型数字转化为字符串, 存入数据库中, 作为植物特征信息比对数据库。
3 直方图比对
3.1 传统图像直方图比较
直方图作为图像的一种统计信息特征, 已经被广泛的应用到模式分类和数据分析的工作中。其中对于两幅直方图之间的比较, 或者他们之间的相似程度, 有许多成熟的方法可以使用。例如:直方图相关 (CORREL) 、卡方 (CHISQR) 、直方图相交 (INTERSECT) 、巴氏距离 (BHATTACHARYYA) 等等, 我们都进行了一一实验, 每种物种50次。从实验结果数据来看, 直方图相交这种方法, 对于评估曲率直方图之间的相似性, 准确度要较高一些, 其原理为:
设D为评估直方图相似程度的距离, N代表2~30的28个尺度, B为直方图的bins由Opencv函数calhist的histsize参数决定, 文章中均设置为20, ai, bi分别为直方图被归一化之后所分成的区间段所对应的峰值。由于每张叶片照片的轮廓点数不同, 计算生成的直方图需要归一化才能进行统一比较, 所以Opencv归一化操作时使用插值算法的同时, 必然造成精度以及特征的丢失, 但是直方图相交方法分尺度的比较可以大大减少这类误差带来的影响。结果如图八所示。
3.2 采用SVM对直方图进行分类
采用传统直方图相交的比较方法确实可以带来相对较高的准确度, 但是对于需要在更加严谨的场合使用叶片识别系统, 那么还需要提高识别率。
3.1中提到直方图在比较时容易丢失精度, 所以进行比较也只是进行一个二维的距离映射, 从而判断他们的相似程度, 显得比较显得不够细致。文章在曲率直方图特征提取的基础上提出使用SVM支持向量机对, 直方图进行分类。
取同一植物的不同样本所对应的曲率直方图, 挑选其中具有代表性的直方图区间峰值, 考虑到移动设备计算速度有限, 所以仅选择5个直方图区间, 组成一个五维样本:
可以被一个分类超平面分开:
利用SVM的最优超平面, 超平面的最优化就是求该超平面的一组唯一参数, 使得它与最近邻的训练样本有最大距离.要得到这个最优超平面, 必须用系数的模最小的超平面把属于两个不同类y∈{0, 1}的样本集 (x1, y1) , …, (xl, yl) 中的向量xi分开.即需要求解下面的2次规划问题:
这个优化问题通常用二次型的拉格朗日乘数法求解, 问题可变成对目标函数:
对于直方图的比较由于数据量不是很大, 我们选用的是与人类视觉特性接近的高斯径向基 (RBF) 核函数, 支撑向量分类器的每个RBF的中心对应一个支撑向量, 支撑向量数 (即隐层节点数) 和网络权值由训练算法根据所给定的RBF宽度Η和惩罚因子C自动决定, 这里采用了Opencv的默认参数。
Á综上数据 (表1) 可以发现看出, 在默认参数情况下, 较大半径的曲率直方图数据对整体分类结果具有积极影响, 所以较大半径曲率为较优特征, 特别是当直方图区间取9, 10, 11, 12, 13作为特征样本时, 识别率较高。
我们将直方图区间选择定为10, 11, 12, 13, 14后, 同一植物选取50张实景拍摄照图片与方法一进行比对 (表2) :
相比传统的直方图相交比较方式, 在Opencv函数下的SVM分类效果似乎没有更加提高, 但是考虑到传统方法也只有个别形状极为特别的植物种类识别准确率较高, 从数据的稳定性上来看, SVM分类的稳定性要优与直方图相交等方法。
但是SVM训练150个五维样本需要耗时10分钟, 这无疑是在移动平台使用该方法的一大弊端, 对于移动平台运算速度较慢, 此系统可以采用BS的模式进行服务器端计算, 以加快识别速度。
4 结束语
文章所提出的基于Android平台的叶片识别系统, 在叶片特征提取上利用了EM聚类分割算法, 使得叶片轮廓信息得以较好的完整保存, 比canny轮廓检测效果好, 信息精确度较高, 而且利用两个等量的高斯模型, 使得迭代算法的收敛速度加快;通过自适应核对拍摄者的不同构图习惯给图像处理带来的影响大大降低, 充分利用形态学处理克服较多拍摄的不利条件;多尺度的边缘轮廓曲率特征地提取, 有效地将传统意义上的曲率和积分不变性相互联系起来, 实现了尺度不变的方法;再通过统计方法, 将无方向信息的直方图联系在一起, 最终用比较了针对曲率信息的直方图中传统直方图相似度比较方式和SVM直方图分类各自的优缺点;证实了SVM在高位特征空间具有强大的分类能力, 并且效果确实优于传统直方图比较方法。为基于图像形状特征的叶片种类识别, 在移动设备上开发的继续深入研究, 做了一个小结。
由于移动平台灵巧轻便, 既适合科研人员进行科学实验及学习研究, 又将会作为一款科普手机软件受到旅游或者探险爱好者们的喜爱。
摘要:文章提出了一个基于图像识别的植物叶片识别系统, 采用Opencv计算机视觉库在Android平台上进行嵌入式开发, 通过调用移动设备摄像头对即时拍摄的150幅植物叶片照片进行物种识别。比较了包括canny边缘检测和EM分割算法等方法, 再通过自适应核的形态学操作进行后期处理, 提取到较准确的叶片边缘轮廓信息。计算轮廓曲率并且统计成曲率直方图特征, 最后通过SVM分类器, 对特征进行分类, 来达到对不同的植物叶片进行识别和分类。识别率较高, 运算速度有待提升。
关键词:图像处理,形态学,EM算法,直方图比对,SVM,支持向量机
基于链码的图形轮廓识别 篇2
链码是图像处理及模式识别中一种很常用的表示线条、平面曲线及边界的编码技术。在焊接操作模拟训练器的开发过程中难点之一就是对模拟焊枪上的两个标识点的空间坐标的准确定位。之所以难是由于在外部空间中有诸多干扰因素使得计算机难以区分标识点的确切位置。本文设想采用具有一定几何特征的发光体作为标识点, 设计算法使计算机通过几何特征识别出该标识点, 从而确定其空间位置。
2 链码相关概念
2.1 邻接关系
一副数字图像可以看作是像素点的集合, 邻接是图像的基本几何特征之一, 主要是用来描述像素之间的关系。区域和区域的边界在数学上有严格的定义, 这里给出其简单的描述。如果把一副数字图像看作是由网格对图像采样的结果, 即每一个像素占据一个网格单元, 那么定义d (direct) 和i (indirect) 近邻如下[1]。
如果两个相邻像素单元有一条公共边, 则这两个像素为直接近邻, 简称d近邻, 其他像素点为非直接近邻;如果与二者只有一个公共点邻接, 这种近邻称i近邻。
一般所指的近邻就是这两种近邻的总称, 叫做n近邻。如果我们对近邻进行编码, 一个像素p共有8个近邻像素点, pn (n=1, 2, 3, 4…8) 编号为奇数的为d近邻, 编号为偶数为i近邻, 即1、3、5、7为d近邻, 2、4、6、8为i近邻, 通常使用的为4近邻和8近邻。
链码在二值图像中常常用于表示连通分量的边界或者线条, 该方法由Freeman[美]提出, 因此又被称作Freeman链码。链码可以压缩处理的数据量;用链码还可以方便地计算出许多几何特征量, 例如用链码表示线条的长度、闭合曲线的周长、闭合曲线所围面积等。如果我们把二值图像视作网格, 每一个像素点都是一个网格点。链码则是在格点理论中的用相邻像素点间的指向来表示线的一种方法。针对d连通和i连通, 相对应的则有d链码和i链码, 即4链码和8链码之分。
以8链码为例, 指向符共有8个, 分别代表方向0°、45°、90°、135°、180°、225°、270°和315°, 这8个方向可以分别用数字0、1、2、3、4、5、6、7来表示;在4链码中, 指向符只有4个, 分别代表方向0°、90°、180°和270°, 指向符则分别用数字0、l、2、3来表示。链码表示曲线的方法就是从某一点开始, 按照顺时针的方:沿曲线记录该点与其下一个邻接点构成线段所表示的指向符, 形成一个数列, 该数列就是曲线的链码表示。如图1所示的曲线从图中黄色像素开始, 形成的8链码为:1107776554533321。
2.2 相对链码、绝对链码
对于边界上的每一个点都有前一点指向此点的链码C1和此点指向后一点的链码C2。所谓相对链码是指C2和C1的相互关系[2]。这里给出具体的相对链码的数学定义[3]:对于连续的链码Ci、Ci+1, 如果Ci+1在Ci所在的直线上, 并位于以Ci方向为正向的左侧, 则角度变化方向为正, 反之为负, 大小为:
这里有一个约定, 即当按 (1) 式算出的Ri大于4时, 取Ri=Ri-8。当Ci、Ci+1方向一致时, 它们的相对链码为0。如果C2相对于C1作逆时针旋转时, 相对链码按偏角的大小取值1~4, 分别对应逆时针旋转45°、90°、135°和180°;作顺时针旋转时, 相对链码取值-1~-3, 分别对应顺时针旋转45°、90°和135°。
所谓绝对链码是指从起始点开始相对链码的累加值, 起始点的绝对链码设为0。这样, 沿着边界移动一周回到起点, 其绝对链码值增加8。
2.3 绝对链码及三点链码和的计算
设C (i) 和C (i-1) 分别为当前点i与前一点i-1的链码, R (i) 为它们相对链码, A (i) 和A (i-1) 分别为当前点和前一点的绝对链码。则绝对链的计算过程如下:
当边界的点数为N时, 边界点的序号分别为0~N-1。从起始点开逆时针绕边界走一圈回到起始点时其绝对链码之差为8, 即
三点链码和即为当前点和前两点的绝对链码之和, 即
由于边界是闭合的, 起始两点计算时, 前面点的值要绕到尾部取, 此时需注意绝对链码的调整值8, 即
2.4 链码差
链码差是指离开与进入此点的三点链码和之差, 即
同样, 末尾3点计算时, 数据应从起始点处取, 并且需作相应调整
其中, i=1, 2, 3。
链码差表示两个方向间的差值, 是一个与曲率成正比的量, 可用发现边界上的角点。当边界走向为逆时针方向时, 差值为正的点为凸点, 差值为负的点为凹角点。
3 识别实例
下面是采用这种方法对图形识别的几组实验结果。
图2中的这组图形是随手绘制, 但模仿的是实际可能的光斑大小。对这组图形的外形轮廓进行编码识别, 获得外形轮廓编码曲线如下图所示 (放大8倍) 。
以上曲线横坐标表示从零开始按逆时针顺序编码象素号, 纵坐标表示每个象素的的链码差。
通过上面一组图形的边缘单象素链码曲线图可以看出链码曲线上的凸点个数就是图形的边缘顶点数目。但是比较上面六个图形可以看出, 等腰三角形和矩形的链码差曲线与此吻合地最好。
4 结论
通过引入链码差概念, 可以有效的识别出简单几何图形轮廓形状, 尤其是矩形和等腰锐三角形。这对于区分目标标识点和周围环境中的杂点起到一定的作用。但是, 如果目标标识点在空间中发生大的方位扭转, 这将使摄像机拍摄到的图形轮廓变形, 通过前面的分析可以看出, 如果变形达到一定程度, 将使原本的矩形变成菱形甚至是一条直线;锐三角形变成钝三角形。这些都会影响最终的识别效果。
摘要:本文介绍了链码的相关概念, 通过引入相对链码、绝对链码、链码和、链码差等概念对若干平面几何图形的轮廓形状进行识别, 并比较了识别效果, 结果表明该法对于锐角三角形 (尤其是等腰锐角三角形) 、矩形识别效果较好。
关键词:链码,几何图形,轮廓识别
参考文献
[1]唐良瑞, 马全明, 景晓军.图像处理实用技术[M].北京:化学工业出版社, 2002年1月.
[2]陆宗骐, 童韬.链码和在边界形状分析中的应用[J].中国图象图形学报, 2002年12月第7卷第12期.
轮廓识别 篇3
关键词:Open CV,Android,图形识别,HSV模型,中值滤波,轮廓提取,线段拟合
1. 图像预处理
本文实验在室内光线环境下进行, 采用Open CV 3.0和Android4.4平台, Nexus 7平板。被拍摄图像的背景是白色, 包含多个不同颜色 (红色、蓝色、黄色) 的简单图形, 图形或为圆形或为三角形、矩形。
1.1 HSV颜色模型
在图像处理中, 最常用的颜色空间是RGB模型, 任何一个像素颜色都可以表示为红、绿、蓝的组合。但是受光源、环境光反射等影响, RGB模型并不能很好的区分颜色, 因此采用HSV模型进行颜色区分。HSV是根据颜色的直观特性创建的一种颜色空间, 模型中的颜色参数分别为色调 (H) , 饱和度 (S) , 明度 (V) 。H和S用来表示颜色信息, 图像像素的明度单独为一个参数V, 因此可以忽略掉明暗, 只关心颜色, 此模型在用于指定颜色分割时, 有比较大的作用。
对拍摄的图像, 通过cvt Color方法 (第3个参数为COL-OR_RGB2HSV) 先进行RGB到HSV模型的转换, 再利用H和S的范围进行颜色区分。下列图1-1和图1-2分别是原图和经过提取只保留红色区域后的图像。
1.2 中值滤波和灰度化
将指定颜色区域提取后的图像, 难免有噪点, 需要进行滤波。中值滤波器是一种典型的低通滤波器, 它可以去除噪声同时保持图像边缘特性。其对应的Open CV方法为median Blur。
彩色图像的每个像素点都包含三个信息 (H、S、V) , 为降低处理的数据量将图像进行灰度化, 采用的方法是cvt Color (第3个参数为COLOR_RGB2GRAY) 。灰度化后的图像每个像素点只包含灰度信息, 其值的范围为0到255。
1.3 二值化和膨胀
为进一步降低运算量, 对灰度图像选取适当的阈值, 进行二值化处理, 其方法名为threshold。所谓二值图像是指整幅图像像素点只含有黑 (值为0) 及白 (值为1) 两值的图像, 相对灰度图像, 二值化后的图像数据量再次降低。二值化后的图像能用几何学概念进行分析和特征描述, 比起灰度图像来方便快捷的多。
二值化图像依然会包含些许杂点, 可利用背景膨胀将其去掉, 对应的方法为dilate。用结构元进行膨胀或腐蚀运算可以描述为:结构元的原点像素经过待膨胀的二值图像中所有1像素点时, 结构元所有1像素对应的待膨胀二值图像像素置为1。经过背景膨胀后的图像, 去掉了绝大部分细小的杂点。
经过HSV模型转换、提取指定颜色区域、中值滤波、灰度化、二值化、膨胀后, 得到较为精确的指定颜色区域, 且运算量大大降低, 为图形识别做好充足的准备。
2. 图形识别
2.1 提取轮廓
Open CV里提取目标轮廓的函数是find Contours, 它的输入图像是一幅二值图像, 输出的是每一个连通区域的轮廓点的集合。再通过draw Contours方法将轮廓画出来。
2.2 轮廓逼近
Open CV支持大量的轮廓、边缘、边界的相关函数, 相应的函数有moments、Hu Moments、find Contours、draw Contours、ap-prox Poly DP、arc Length、bounding Rect、contour Area、convex Hull、fit Ellipse、fit Line、is Contour Convex、min Area Rect、min Enclosing-Circle、mathc Shapes、point Polygon Test等。
对上面的轮廓, 我们采用approx Poly DP轮廓逼近方法, 用线段去拟合。线段的长度根据实际情况进行大小调整。线段长度不同, 拟合出来轮廓所需要的线段数量也不同。对前面的轮廓采用长度为12.0的线段去逼近, 用来逼近三角形、矩形、圆形的线段数量分别为:3条、4条和8条。逼近的线段数量区间界限分明, 较好的实现了圆形和简单多边形的识别。
2.3 总结
Open CV是由Intel创建, 如今由Willow Garage提供支持的一个跨平台开源机器视觉库。Android是一种基于Linux的自由及开放源代码的操作系统, 主要使用于移动设备, 如智能手机和平板电脑, 由Google公司和开放手机联盟领导及开发, 是目前应用最广泛的移动设备操作系统之一。随着智能手机的广泛普及, 在Android平台上进行图像处理软件开发成本更加低廉、应用日益广泛。基于Android平台的图像处理需求日益剧增。本文基于Android平台利用Open CV, 在包含多种颜色多种图形的图像中, 将指定颜色的图形识别出来并计算个数。采用的算法方便简洁, 图形识别精度高。
本文的局限在于识别的图形为简单的圆形和多边形, 不能进行复杂图形的识别。在今后的实验中, 将尝试其他Open CV算法, 扩大图形识别的范围。
参考文献
[1]矣昕宝, 全海燕, 许伶俐.一种基于Open CV的多扇区圆检测方法[J].科学技术与工程.2011 (16)
[2]杨治明, 周齐国.基于霍夫变换理论的图形识别[J].重庆工业高等专科学校学报.2002 (04)
[3]何鹏, 王连鹏, 楚艳红.基于Open CV的机器视觉在智能手机中的应用[J].计算机工程与设计.2011 (08)
[4]陈雪娇.基于Open CV的计算机视觉技术研究[J].电脑知识与技术.2015 (30)
轮廓识别 篇4
要实现基于计算机视觉的触摸屏就需要从背景图像中对手指进行快速、准确的识别和定位。但目前的图像处理算法大多存在着识别率较低、受光线影响大、多点触控不易实现等问题[3—6]。本课题设计出一种基于手指轮廓特征的目标识别与定位算法,该算法利用肤色信息和手指形状特征进行目标识别,利用所提出的9点快速定位算法对手指进行定位。该算法运算量较小,目标识别率和定位准确较高,且易于实现,能有效提高基于计算机视觉的人机交互系统的实时性,可在公共信息发布、互动媒体广告、教学、监控中心、展览展示等领域得到广泛应用。
1 多手指识别算法设计
在进行手指识别算法设计之前,先需要利用动态阈值分割法对灰度图像进行二值化分割,对分割完成的区域做连通标记,然后利用手指区域面积和长度特征滤去干扰区域,得到包含手指信息的二值目标图像(图1)。多手指识别算法的主要任务是根据手指的形状特征识别出指尖点所在的位置。
传统算法大多通过模板匹配进行手指特征识别[7—9],其虽然简单,但运算量很大,且随着图像和模板的增大,计算量会大幅增加,影响系统运行的实时性。为了提高指尖识别速度,本文利用指尖边缘呈圆弧状的形状特征,通过计算分割出的手形区域中曲率最大的点,来进行指尖识别。
1.1 手指轮廓提取
本文所采用的手指轮廓形状提取方法是在二值目标图像中,对某一区域边缘按某一固定的方向进行搜索,将区域边缘的坐标值按顺序进行记录,然后通过顺序读取的方式得到区域的轮廓特征。图2为经过提取处理后的手指轮廓图像。
1.2 手指轮廓曲率计算
由图2可以看出,在指尖处曲线产生了一个圆弧状的凸起,而其他部位的曲线较为平滑;因此,可将该特征作为指尖点的目标特征进行手指特征识别。通过平面曲线曲率的计算能较好的描述出该圆弧状的凸起。
平面曲线的曲率指的是针对曲线上某个点的切线方向角对弧长的转动率,表明的是曲线偏离直线的程度。曲率越大,表示曲线的弯曲程度越大[10]。在图2中,取相邻的3点计算斜率的变化率,通过斜率的变化表示曲率。图像中某个像素点的横纵坐标值分别用X、Y表示。
由式(1)可知,在斜率变化越大的地方Δk值越大,手指轮廓在指尖处的斜率发生了突变,Δk的值在连续函数中属于局部极大值,曲率值较大。而在轮廓曲线较为平滑的地方,相邻点的斜率基本没有发生变化,Δk的值趋近为0。因此按顺序计算出手指轮廓上每点的曲率,就可以利用曲率来识别指尖点。
1.3 指尖识别
从手指轮廓曲率的计算可以看出,在轮廓形状较为平滑的时候,曲率近似为0,指尖处曲率较大,指缝处曲率为负极大值。在波峰处的局部极大值基本处于0.5~0.8之间。本课题取0.5为阈值,将曲率大于0.5的点标记出来,可以得到指尖处圆弧状的连续曲线,取中点作为标记点,即指尖点。图3和图4分别给出了无干扰和有异物干扰(光照、杂物)情况下的指尖识别效果。
2 手指定位算法设计
根据手指识别算法可以得到指尖在摄像头坐标下的坐标,那么如何将摄像头坐标系中的坐标值转换到显示屏幕坐标系中的坐标是手指定位算法的主要任务。为了减少定位算法的计算量,提高系统的运算速度,本文在传统标定技术的基础上,提出了9点快速定位算法。
2.1 摄像机与屏幕坐标系的转换
采用的摄像机分辨率为640×480,需将其转化成分辨率为1 024×768的投影屏幕坐标,才能在投影屏幕上进行互动。
图5为理想情况下摄像头坐标系和屏幕坐标系之间的坐标映射关系。u-v坐标系表示摄像机坐标系,每一个像素的坐标(u,v)代表该像素在640×480图像中所处的行和列。x-y坐标系表示屏幕坐标系。
假设在像素坐标系中各个像素之间在x轴方向和在y轴方向上的距离分别是dx和dy,那么由图5可得图像中的任意点在摄像头坐标系u-v和屏幕坐标系x-y之间存在着如下转换关系。
其矩阵表示形式为
则
通过上述坐标转换公式可以进行摄像头坐标系和屏幕坐标系间的转换。
2.2 9点快速定位算法设计
在进行定位算法设计之前,需先对图像进行预标定,即得到某些点在两种坐标系下的坐标。通过这些已知的标定点简化两种坐标间的转换。本课题选择如图6所示的A、B、C、D、E、F、G这9点作为预标定点。
图7为从摄像机中采集的包含9个预标定点的图像,可以看出,图像产生了畸变,且在x轴方向偏差较大,y轴方向偏差较小,预标定点的位置由矩形排列畸变成了梯形排列。因此,在图像定位算法的设计过程中,必须对因图像畸变引起的x轴方向的偏差进行校正,否则会对定位精度产生影响。
在图7中,9个预标定点将屏幕分成了①、②、③、④四个区域。假设摄像机坐标系中某点M(x,y)处于区域①中,M0(x0,y0)为该点对应的屏幕坐标。已知边界处A、B、D、E四点的屏幕坐标(Xa,Ya),(Xb,Yb),(Xd,Yd),(Xe,Ye)和摄像机坐标(Ua,Va),(Ub,Vb),(Ud,Vd),(Ue,Ve),根据几何关系可得:
计算可得,M(x,y)经过坐标转换后的屏幕坐标M0(x0,y0)为
同理,在区域②中的定位公式为
在区域③中的定位公式为
在区域④中的定位公式为
由公式(6)~式(9)可以看出,在9个标定点预设好的情况下,对每个目标点只需进行8次减法运算和2次乘法运算就可计算出其在屏幕坐标系中的坐标,完成目标点的定位。与传统的定位算法相比,这种9点定位算法在确保识别精度的前提下,简化了计算量,提高了运算速度。
3 算法性能测试
为了验证上述目标识别与定位算法能否满足屏幕交互系统的整体要求,搭建了由CCD摄像头(分辨率640×480)、DH—VT120图像采集卡、投影机、背投屏幕等设备组成实物测试系统(图8),对该算法的运行实时性、识别准确率、定位精度等性能进行了测试。
该系统的工作原理如图9所示,桌面图像由摄像头经图像采集卡读入计算机,通过软件编写的算法处理,完成手指识别和指尖定位,最后经投影机显示人机互动效果。
3.1 实时性测试
本课题主要测试了不同识别点数量、有无环境干扰等因素对系统运行实时性的影响。图10~图13为识别效果图,表1给出了实时性测试结果。
从表1可以看出,在有/无干扰、单/多点识别等多种情况下,系统运行时间均小于40 ms,能保证每秒24帧流畅画面的识别速率。
3.2 目标识别正确率测试
在该系统中影响目标识别正确率的因素主要有:指尖是否充分接触桌面、有无手指状异物干扰(如圆珠笔)、有无强光源干扰等因素。目标识别正确率测试效果如图14~图17所示。表2给出了不同情况下,目标识别正确率的统计结果。
从表2可以看出,要确保系统识别的正确率,需要指尖与桌面充分接触,桌面上不能有手指状干扰物存在,并对强干扰光源等进行遮挡。
3.3 定位精度测试
经测试,桌面中心处定位误差较小,约为3 mm。桌面边缘处定位误差稍大,约为8 mm。基本可满足屏幕交互系统对定位精度的要求。
4 结论
通过对基于手指轮廓特征的目标识别与定位算法的研究,建立了一套基于计算机视觉的桌面互动系统。该算法利用肤色信息和手指轮廓特征能正确识别出手指轮廓,利用提出的9点快速定位算法实现了对进行目标的准确定位。该算法的运行时间不超过40 ms,能满足系统对实时性的要求;在无手指状干扰物存在的情况下,目标识别的准确率可达95%以上;定位精度误差小于8 mm,可满足系统对定位精度的要求。这种基于手指轮廓特征的目标识别与定位算法为增强人机交互系统的和谐性提供了一种新的技术途径。
摘要:为了提高从背景图像中提取目标的速度和精度,设计了一种基于手指轮廓特征的目标识别与定位算法;该算法利用肤色信息和手指轮廓特征进行目标识别,利用提出的9点快速定位算法进行目标定位。仿真结果表明,该算法能正确识别出手指的特征;并对其进行快速定位。在实物系统上对算法的实时性、识别准确率、定位精度等性能进行了测试,测试结果表明,算法运行时间不超过40 ms,能保证系统对实时性的要求;在无手指状干扰物存在的情况下,目标识别的准确率可达95%以上;定位精度误差小于8 mm,可满足系统对定位精度的要求。这种基于手指轮廓特征的目标识别与定位算法为增强人机交互系统的和谐性提供了一种新的技术途径。
关键词:人机交互,手指轮廓特征,目标识别,快速定位
参考文献
[1]吕明,吕延.触摸屏的技术现状、发展趋势及市场前景.机床电器,2012;39(3):1—7LüMing,LüYan.Technical status,development trend and market prospect of touch screen.Machine Tool Electrical Equipment,2012;39 (3):1—7
[2] 陈康才,李春茂.电阻式触摸屏两点触摸原理.科学技术与工程,2012;12(18):4525—4529Chen Kangcai,Li Chunmao.Two touch principle of resistance type touch screen.Science and Technology and Engineering,2012;12(18):4525—4529
[3] Kanhangad V,Kumar A,Zhang D.A unified framework for contactless hand verification.Information Forensics and Security,2011;6(3):1014—1027
[4] Guo J M,Hsia C H,Liu Y F,et al.Contact-free Hand geometrybased identification system.Expert Systems with Applications,2012;39 (14):11728—11736
[5] 魏巍.基于DSP的手形图像采集及处理系统.长春:吉林大学自动化学院控制工程系,2013Wei Wei.A system of hand image acquisition and processing based on DSP.Changchun:Department of Control Engineering,School of Automation,Jilin University,2013
[6] 荆澜涛.非理想条件下手形识别方法的研究.沈阳:沈阳工业大学通信学院通信系,2014Jing Lantao.Research on shape recognition method under non ideal conditions.Shenyang:Department of Communication,Shenyang University of Technology,2014
[7] Zeng P Y,Zhu B Q,Liu D A,et al.Application of image processing based on multiple filters in an alignment system.High Power Laser Science and Engineering,2014;34(3):1—6
[8] 冈萨雷斯,伍兹,艾丁斯.数字图像处理的MATLAB实现(第2版).北京:清华大学出版社,2013:301—307Gonzalez R C,Woods R E,Eddins S L.MATLAB implementation of digital image processing(second edition).Beijing:Tsinghua University Press,2013:301—307
[9] 帕科尔,景丽.图像处理与计算机视觉算法及应用(第2版).北京:清华大学出版社,2014:104—110Parker,Jing Li.Image processing and computer vision algorithms and applications(second edition).Beijing:Tsinghua University Press,2014:104—110
轮廓识别 篇5
果蝇是一种常见的农业害虫,对杨梅、樱桃、脐橙等水果具有较大危害[1],其求偶行为的研究对农业病虫害防治有着积极的意义。同时果蝇作为理想的模式生物被广泛用于昆虫学、遗传学的研究,是常见的昆虫求偶行为研究对象。
传统的昆虫行为识别大多依靠人工辨别、分类和计算,工作量大、漏检率高、效率低下。为克服传统方法的不足,人们研究了声特征检测法、雷达观测法以及图像识别法等多种检测和监测新方法[2,3]。李震等[4]利用K-means聚类方法研究了柑橘红蜘蛛的计算机视觉检测系统。郑永军等[5]利用基于模糊模式图像识别方法对蝗虫计算数量,实现蝗虫灾害的测报。姚青等[6]综述了国内外基于图像的昆虫自动识别与计数技术研究的进展。
在果蝇求偶过程中,雄蝇通过前足感受和分辨雌蝇的信息素,从而产生求偶行为的一系列活动,包括振翅、唱求偶歌等[7]。从计算机视觉角度考虑,雄性果蝇振动单侧翅膀并尾随另一只雌性果蝇是其发生求偶行为的最重要特征[8]。
本研究针对常规实验条件下拍摄的果蝇活动视频,利用图像的灰度信息,基于阈值分割[9]和轮廓不变矩特征[10]识别图像中的求偶果蝇目标,拟为快速、准确地识别果蝇求偶行为提供有效方法。
1 图像采集
实验所用摄像机型号为SONY HDR-XR350E,其解像度为1280×720像素。将一定数量的参试果蝇置于培养皿中(倒扣、封闭、透气、透明),利用三脚架在距离培养皿0.2 m的高度固定相机,平行拍摄果蝇活动状态视频,再利用流媒体处理开发包Direct Show从视频中按帧抽取所需的图像,如图1所示。
2 基于阈值分割提取果蝇轮廓
为提取图像中各果蝇的轮廓设计了如图2所示的方法流程。
2.1 生成、更新背景图像
果蝇翅膀呈半透明状,且大部分时间处于高频振动状态,直接进行轮廓提取困难较大,所以设计了生成、更新背景图像的方法[11]。
果蝇为运动目标,图像中某像素点P(i,j)的灰度值大多数时间反映背景图像,由于背景灰度值通常大于果蝇躯干及翅膀的灰度值,可令当前帧对应灰度图像Cur为初始背景图像Back,并逐次取下一帧图像为Cur(间隔0.1 s),按照式(1)更新背景图像:
其中,Back(i,j)、Cur(i,j)分别为背景图像、当前帧灰度图像对应像素点P(i,j)的灰度值。当更新前后的背景图像Back,Back'满足式(2)时背景生成结束。
其中,θ为设定的阈值,当满足式(2)时背景图像Back各像素点的灰度值已经趋于稳定,如图3所示。
受室内光线等实验环境变化的影响,随时间推移背景图像Back的有效性将逐渐降低,需要在一定时间间隔内(约5分钟)更新背景图像Back。
2.2 基于阈值分割的自适应提取轮廓
图像中各果蝇翅膀部分与对应背景图像的灰度差值不等且很小(通常小于10),所以为图像中的各果蝇指定统一的分割阈值是不可行的。
首先采用大津法(ostu)[12]确定每只果蝇的初始位置。果蝇躯干部分边缘轮廓明显与背景图像灰度差异较大,可以直接使用大津法算出的阈值分割图像得到每只果蝇躯干部分的轮廓,如图4所示,从而得到各果蝇所在区域的局部图像(图2)。
将每只果蝇所在的局部区域图像与其对应的背景图像各像素点灰度值相减取绝对值得到各自的差值图像(如图5所示)。由于果蝇翅膀呈半透明,因此肉眼较难准确分辨出翅膀的轮廓。
使用高斯平滑、腐蚀、膨胀等图像去噪方法减少图像噪声后根据差值图像的灰度值分布情况,可以得到如图6所示的直方图。
直方图法[13,14]拥有良好的鲁棒性和耐噪性,也容易自适应地得到灰度阈值。图6中极值点A对应图5中果蝇躯干部分与背景图像的差值,极值点B对应翅膀部分,极值点C则对应背景部分。若在某只果蝇对应的直方图中找不到极值点B,如图7,说明翅膀没有张开,在图像中所占比例过小,排除发生求偶行为的可能性。
计算机通过分析直方图,可自动得到其中极值点B的坐标值η,以及其上升沿宽度δ,将η-δ作为新的阈值分割差值图像,即可得到各果蝇的轮廓(如图8所示)。
3 基于果蝇轮廓判断振翅状态
3.1 果蝇轮廓的矩不变量
运动中果蝇身体姿态变化多样,使其轮廓复杂且不规则,采用周长、面积、偏心率、周长面积比等常规几何特征参数均无法得到良好的识别效果。不变矩理论[15]除了对轮廓描述准确、充分之外,而且还具有平移、缩放以及旋转不变性被广泛应用于模式识别中。为降低计算量Chen[16]对基于区域的Hu矩[17]进行修改,用对曲线的积分代替对区域的积分[18],则:
式中∫c代表沿曲线C的线性积分,ds=槡(dx)2+(dy)2。
轮廓中心矩可以定义为(4):
其中:x-=m10/m00;y-=m01/m00,对于数字图像中心矩可以定义为式(5):
轮廓中心矩是对平移不变的,为得到尺度不变性需要引进尺度规范化矩的定义,即:
其中γ=p+q+1,p+q=2,3,…。经过规范化后的轮廓矩具有平移和尺度不变性。
同基于区域的矩一样,也可以构造出7个具有平移、尺度和旋转不变性的标准矩。由此可计算出图8中各轮廓对应的7个标准矩,如表1所示。
3.2 训练BP神经网络分类器
基于图2中设计的算法,得到果蝇的轮廓;通过随机采样得到3000个轮廓作为测试样本;再选取1000个振翅果蝇的轮廓作为正训练样本,2000个未振翅果蝇的轮廓作为负训练样本。采用拟牛顿法训练BP神经网络,学习误差取0.001,7个轮廓矩不变量对应输入层神经元,隐层根据实验结果最终调整为15个神经元。经验证该分类器对果蝇是否振翅判断的准确率为91.7%。
4 求偶行为的识别与系统实现
4.1 求偶行为的识别
果蝇的求偶行为除了表现为单侧振翅,还须发生尾随行为,这就要求发生振翅的果蝇与另一只果蝇满足一定的位置关系,如图9所示。
图9中两只发生求偶行为果蝇中心点A,B之间的距离需在合理的范围内。根据经验,限定A,B间的距离为果蝇躯干平均长度的1至2倍,约为10到20像素;两只果蝇躯干所在轴线L1,L2间的夹角θ2的范围为0°至90°;L3与L1之间的夹角θ1的范围为0°至45°。
由上可确定识别果蝇求偶行为的主要步骤的流程,如图10所示。
4.2 系统实现
根据图10所示,使用Visaul Studio 2010作为开发工具,借助开源计算机视觉库Opencv,编写并最终实现了果蝇求偶行为的识别程序,程序运行界面如图11所示。
5 结果与分析
对实验所用视频(时长60分钟),每隔1 s抽取一幅图像(共3600幅),按图10所示流程进行计算机自动判别,将发生求偶行为的果蝇自动标记,可得如图12中所示结果。
对标记后的图像进行人工比对,得到计算机自动识别的准确率为89.6%。
存在误检或漏检的原因主要是:视频拍摄时存在噪声;果蝇停在培养皿壁上时出现镜面映像;部分参数(例如果蝇之间的距离、角度关系等)应作统计分析后优化确定[11]。另外,系统对于果蝇粘连较少的图像识别精度高,对于粘连严重或者有果蝇相互遮挡的图像则容易产生误差。
6 结语
本研究以农业病虫害防治中常见的果蝇为研究对象,提出基于图像分割和轮廓矩的果蝇求偶行为计算机自动识别的方法,得到以下结论:
1)通过背景图像的生成与更新可以有效地减少复杂背景环境对识别效果的影响。
2)通过大津法得到各果蝇的躯干轮廓从而将考察范围缩小至各果蝇的邻域,既减少了系统的运行开销也使得通过直方图法得到的阈值能更精确地分割图像。通过计算机程序分析各果蝇差值图像的灰度直方图,可自动地为每帧图像中各只果蝇计算出分割阈值,比人工指定阈值更加简便、准确。
3)基于轮廓的不变矩理论比常见的几何特征参数更能准确、充分地描述果蝇轮廓。基于其训练的神经网络可快速收敛且具有较高的正确识别率。
轮廓识别 篇6
关键词:模式识别,轮廓特征,2-范数,傅里叶,图形识别
1 引言
模式识别 (Pattern Recognition) :是指对表征事物或现象的各种形式的 (数值的、文字的和逻辑关系的) 信息进行处理和分析, 以对事物或现象进行描述、辨认、分类和解释的过程, 是信息科学和人工智能的重要组成部分。
近年来, 用于认知的人工智能 (模式识别) 得到了很大的发展和进步, 从环境的认知, 到人体的认知;从静态的认知到动态的认知。有关认知方面的人工智能, 例如:人脸检测、表情识别、车辆检测、语音识别等领域都已基本迈向成熟, 步入应用阶段。
图像识别属于模式识别的研究领域, 利用计算机视觉特征和机器学习的知识对目标对象进行识别分析。目前, 在各国研究学者的努力下得到了极大的发展, 图形识别过程中处理逻辑较简单, 数据来源基本来自图像或视频流, 以像素点为基本处理元素[1]。
其中, 轮廓特征在众多特征表示中可以说是最基本、最容易得到的, 获取轮廓特征的主要及首要步骤就是轮廓点的采集。在传统的处理方法中, 直接数据来源就是图片, 在二值化、膨胀、腐蚀等预处理后, 各轮廓点坐标其实就是轮廓像素点的横、纵坐标值。每一个像素点与其相邻像素点之间的距离都是相同的, 即等步长点, 且可采集的轮廓点数目也是有限的。但在软件的实际应用中, 直接数据来源却不适合以图片作为输入而是把图形轮廓拐点 (图形端点) 当作输入参数。两种直接原始数据各有优缺点。图片做源数据的方式, 能够在最大程度上保留图形的原始数据特征, 并且可以从中提取到更多特征信息, 如轮廓特征、区域特征、光流特征等等, 但是预处理步骤较多, 容易受到噪声点和冗余数据的影响。而直接以轮廓拐点做源数据的方式, 可以直接跳过图片预处理阶段, 减少图片中噪声点的影响。以此为代价的是, 我们要自己补全其它轮廓点坐标, 更重要的是, 轮廓坐标是实数轴上的, 相邻点之间不一定是等步长的, 因此, 我们要考虑的是:每两个点之间的取点步长要取多少?取多少轮廓点合适?……
2 处理流程
本文研究的主要工作是当以图形轮廓点作为直接数据来源时, 探讨更合适的特征处理方式。
识别的主要处理过程如图1所示。
3 主要工作
3.1 采点
在传统处理方式中, 采点时通常会按顺或逆时针的顺序把所有轮廓点全部提取, 然后通过要采集的点数确定采点步长 (相邻两个采集的特征点之间相隔的轮廓点个数) 依次取出要处理的特征点。
但像前面所提到的, 以轮廓点作为输入时, 首先要处理的就是考虑用来采点的轮廓点数要取多少 (补点数目) 。但是, 本实验中的实际点列处理是在实数轴上的, 每个轮廓点间可采点数目是无限的, 要还原所有轮廓点是不现实的 (严重影响了算法在实际应用中的效率) 。因此本文中的处理方式是将等步长的概念由间隔特征点个数相同转为间隔特征点间的长度相同。
(1) 、确定特征点数目n;
(2) 、计算图形周长l;
(3) 、步长steplength=l/n;
确定步长后的采点方式有两种:1、直接按步长、边线端点计算下一个特征点, 其中不会特意保留轮廓端点;2、计算方式和1相同, 不同的是, 在计算特征点坐标时, 如果轮廓端点P与起点的距离小等于steplength, 则保留P作为当前特征点。
算法保留轮廓端点的特征点采集
输入:图形轮廓端点
输出:特征点集
(1) 、Feature Points=[]
(2) 、Feature Points (1) =End Points (1)
(3) 、Start Point=End Points (1)
End Point=End Points (2)
(4) 、根据特征点数k计算步长steplength for I=2:k
(5) 、根据Start Point、End Point、steplength计算下一个特征点add Point
(6) 、将在Start Point和add Point之间的轮廓端点全部加入Feature Points
(7) 、判断add Point是否超过End Point, 是, 则将图形下一条边的端点作为新的Start Point和End Point;否, 则把add Point作为新的Start Point
End
(8) 、检查Feature Points的特征点数目是否超过k个, 若是, 则随机删除多余的非轮廓端点。
算法结束
下面几张图为上述两种补点方式采完点后的图形与原始图形之间的对比。
由上面几幅图可知, 第二种补点方式与第一种方式相比更能保存原始图形的局部特征, 能有效减少噪声点的影响。
3.2 特征表示
常用的特征表示有两种:静态全局形状特征和局部的动态特征。静态全局形状特征包括:边界描述 (链码、傅里叶描述子、离散近似、累加角函数、椭圆傅里叶描述子等) 和区域描述 (基本形状量度、矩、特性、重构) ;局部的运动特征主要有:光流、运动方向、轨迹、位置、速度。
本文要探讨两种特征表示:2-范数描述子、一维离散快速傅里叶描述子。
假设Feature Points中的特征点坐标表示如下:
求出质心坐标 (形心) :
求出质心坐标后, 再按 (3-3) 式分别计算各轮廓点到质心的距离, 计算公式采用欧氏距离:
那么该图形轮廓的边界-质心距可表示为:
3.2.12-范数描述子
2-范数对D做归一化处理以消除空间尺度和距离长度的影响, 2-范数公式
向量D即为对应图形处理后的2-范数特征描述子。
3.2.2一维离散快速傅里叶变换
傅里叶描述子 (Fourier Descriptor, 简称FD) , 是模式识别最常用的轮廓特征, 是物体形状边界曲线的傅立叶变换系数, 它是物体边界曲线信号的频域分析的结果[2]。
傅里叶描述子 (FD) 常用来表示封闭曲线的形状特征, 其基本思想是将目标轮廓曲线建模成一维序列, 对该序列进行一维的傅立叶变换, 从而获得一系列的傅立叶系数, 用这些系数对该目标轮廓进行描述。傅立叶描述子方法有一系列优点, 如:计算原理简单, 描述清晰, 具有由粗及精的特性等[3]。
由于傅立叶变换将序列的主要能量集中在了低频系数上, 因此, 傅立叶描述子的低频系数反映了轮廓曲线的整体形状。
一维函数f (x) (其中x=0, 1, 2, …M-1) 的傅里叶变换的离散形式为:
一维离散傅里叶变换虽然原理简单, 也比较容易实现, 但在实际应用中直接实现效率较低, 因此在实际工程中, 迫切需要一种能够快速计算离散傅里叶变换的高效算法, 快速傅里叶变换 (Fast Fourier Transform, 简称FFT) 由此而生, 其基本思路就是将较长的序列转换成相对短得多的序列来大大减少运算量[4]。
本文实验中直接使用MATLAB软件中自带的一维离散快速傅里叶变换函数fft进行计算。
由图4可知, 取低频30维部分作为特征描述即可。
4 实验结果分析
图5为采不同轮廓点时, 2-范数描述子和一维离散快速傅里叶描述子识别正确率的比较结果。由图5可知, 2-范数识别正确率在90%~92%之间浮动, 在2-范数处理时, 如果要取得更好的实验结果, 则轮廓点数不能太少 (通常在200左右做取舍) , 但随着轮廓点数的增加, 处理难度和算法效率都会受到影响。傅里叶描述子在95%上下浮动, 识别效果比2-范数更理想、更稳定。而且该特征描述子对参与计算的轮廓点数目要求不大, 从而也大大减少了计算消耗的时间。
图6为3.1节中两种取点方式实验结果对比, 其中, 由于第二种取点方式 (保留轮廓端点) 能更完整地保留原始图形的局部特征, 因此其识别效果比第一种取点方式 (不特意保留轮廓端点) 要稳定。若采用局部特征作为图形的表示特征, 那么这两种取点方式的优劣性会更明显一些, 因为局部特征点对全局特征表示的影响相对较小。
图7和图8分别是第一种采点方式和第二种采点方式做十折交叉验证平均结果的混淆矩阵。
十折交叉验证:将样本数据集随机分割为大小相等的十份, 每次取其中一份作为预测集, 剩下九份数据作为训练集, 计算当前识别正确率, 循环计算十次, 将十次预测正确率的平均值作为最后的结果。
由于La、Lb、Lc、Ld四种图形的特点限制, 其样本数目在总体样本集中的比例要远小于其它其余图形, 因此在做十折交叉验证时很容易识别成其它图形 (在实际应用中由于训练集相对实验时较完整, 因此不会出现这种情况) , 但第二种采点方式的识别结果仍然要好于第一种, 并且一维离散快速傅里叶描述子对其余图形的识别正确率比较理想 (训练集中样本数据要尽量发布均匀, 不能相差太多) 。
5 总结与展望
图形轮廓拐点 (图形端点) 作为直接输入参数时, 保留图形轮廓端点的一维离散快速傅里叶变换识别结果更加理想, 更为稳定, 能够很好地保留局部特征值, 同时也为以后增加新特征描述子的处理提供了更完整的数据源 (例如采用局部特征描述) 。
但是, 由于当前处理方法要自己模拟原始轮廓点列的排列情况, 因此只能处理轮廓为直线段或规则圆弧的对象, 在后续处理工作中可以利用曲线拟合方法模拟不规则图形轮廓表示图像, 再进行取点识别。
另外, 由于直接输入数据是图形轮廓端点, 除轮廓特征外, 很难得到其它特征表示, 尤其是局部特征的处理。可以考虑用自增的轮廓点模拟以图像流作为直接输入的情形, 从而获取部分局部特征, 用混合特征进行图形识别, 能取得更好的实验效果[5]。
在决策机制上, 可以利用简单集成学习方法对预测结果进行决策处理, 从而避免噪声数据, 增强识别的鲁棒性[6,7]。
参考文献
[1]黄静.基于形状特征的人体行为识别方法研究[D], 燕山大学, 2010.10~11
[2]王涛, 刘文印, 孙家广, 张宏江.傅里叶描述子识别物体的形状.计算机研究与发展.2002年.第39卷.1714~1719
[3]Dengsheng Zhang and Guojun Lu.Studyand evaluation of different Fourier methods for image retrieval.Image and Vision Computing.2005, 23:33-49.
[4]张铮, 王艳平, 薛桂香.数字图像处理与机器视觉.第5版.北京市崇文区夕照寺街14号:人民邮电出版社, 2012
[5]郭利, 姬晓飞, 李平, 曹江涛.基于混合特征的人体动作识别改进算法.[J].计算机应用研究, 2013)
[6]杨长盛, 陶亮, 曹振田, 汪世义.基于成对差异性度量的选择性集成方法[J].模式识别与人工智能, 2010, 第四期, 565~571
轮廓识别 篇7
中国是世界上最重要的水产养殖国之一,水产养殖是我国国民收入的重要来源,占淡水鱼世界总产量的70%以上。然而,中国的自动化水产养殖水平同国外相比还有一定的差距[1],鱼的自动化识别程度还比较低。比如:在鱼类学研究中,鱼的形体特征参数是渔业资源调查、鱼苗繁育、亲鱼选育的重要基础参数。现阶段,这些特征参数一般是人工通过卷尺、直尺进行测量,并且需要测量的形态指标数据多、耗时长且工作效率低下,难以完成大规模样本数据采集。而且由于手工测量耗时过长,且需要离线进行测量,容易造成鱼的死亡,或者对鱼体造成严重损伤。在淡水鱼的深加工过程中,首先需要对鱼进行分类,传统的方法是通过人工操作来识别与选择,但由于作业环境恶劣、劳动强度大、准确率不高及容易造成鱼体损伤等特点,导致鱼的品质受到影响。
目前,随着信息技术与自动化技术的发展,机器视觉技术在各个领域中有越来越广泛的应用。其在农业领域的研究与应用也越来越多,如:水果形状及大小分类[2,3,4,5,6]、表面损伤检测[7,8]、表面颜色的成熟度检测[9,10,11,12]。目前在淡水鱼种类的识别研究方面,万鹏等[13]按鱼体的长度方向为标准将其分为5段,分别计算每一段的平均长度和宽度,再将它们的比值作为其比例特征参数,利用BP神经网络对鲫和鲤进行识别研究。张志强等[14]运用数字图像处理技术首先对淡水鱼图像进行预处理,然后提取基于各个颜色分量及长短轴之比等特征,运用该特征建立有关淡水鱼的品种识别模型,最终实现了对鲤、鲫、鳊、鲢四种淡水鱼的品种识别,准确率达到96.67%。吴一全等[15]利用Krawtchouk矩计算鱼的体长宽之比、鱼体的形态特征,求得鱼体的灰度特征,然后将鱼体的形态与纹理特征组合成高维特征向量,再通过蜂群优化多核最下二乘支持向量机对测试样本进行分类识别。该方法对各类鱼体分别进行了识别精度分析,但识别精度高低不一。White等[16]利用机器视觉识别和测量不同种类的鱼,通过图像处理确定鱼的方向后对比目鱼的七种品种进行了识别研究,达到了良好的效果。Alsmadi等[17]将20种鱼350个不同的图像分成2个数据集,即257个训练图像和93个测试图像,利用反相传播的BP神经网络对数据集的识别正确率为84%,初步达到应用水平。
上述方法中对鱼的品种识别主要是通过鱼体的形状特征提取,比如各段长宽比、长短轴之比,通过这些特征实现对鱼的种类识别。尽管这些方法能取得较好的分类结果,但缺乏对鱼体整体结构的认识与分析。本文在目前鱼类研究结果的基础上,采用机器视觉技术对四种常见的淡水鱼的图像特征进行提取研究,通过建立四种常见鱼体的样本库图片,分析其背部轮廓数学模型,建立不同鱼体BPR区间识别模型,通过建立的BPR区间识别模型达到对鱼种类识别的目的。
1 实验材料与设备
本文对常见的鲫、草鱼、鳊、鲤4类淡水鱼进行自动分类,以500条鱼(每种鱼各125条)作为研究对象。其中,将这500条鱼中的100条鱼(每种鱼各25条)建立样本数据库,用于建立鱼体背部轮廓数学模型及BPR分布模型;另外400条鱼(每种鱼各100条)作为检验样本库。采用图1所示的图像采集系统,硬件部分主要有摄像头、环形灯、图像采集卡和PC机,摄像头采用MV-VS3200FC,图像采集卡采用T1000 1394,环形灯采用32W的日光灯。软件部分采用VS2013 CV开发的一套鱼体信息采集平台,主要完成图像的采集和图像相关特征点的采集、图像识别结果存储。
本系统的主要工作过程是:首先通过摄像头自动拍摄鱼池里鱼的图像,然后传输给图像采集卡,将模拟的鱼体图像转换成数字图像,最后通过软件部分完成鱼体图像的识别与存储。图像处理程序主要包括对图像的去噪、灰度化、二值化、轮廓提取及特征值的提取。
2 鱼的图像预处理及背部轮廓数学模型
2.1 鱼的图像预处理
淡水鱼的自动识别首先需要提取出鱼体的特征值,并对其特征进行计算,最后确定其分类。淡水鱼种类识别流程如图2所示。
在对采集的鱼体图像进行识别之前,需要对鱼体图像进行预处理。首先将彩色图像转换成灰度图像,用灰度值代替原始的彩色信息。图3为采集的四种鱼原始图像,图4为对图3原始图像进行灰度化后的图像。
图像在输入和处理过程中会受到一定的干扰,从而形成噪声,所以灰度图像不仅包含目标图像,而且还包含背景图像和噪声点。本文采用中值滤波的方法抑制干扰,消除噪声。由于鱼体的灰度值与背景的灰度值存在较明显差异,通过选取适当阈值可以实现灰度图像到二值图像的变化,因而采用二值化处理可将目标图像从原图中分离出来。二值化的关键是阈值的选取,通过实验分析,当阈值选取为50时能对所采集的图像实现最佳的二值化效果。图5为四种鱼的图像二值化效果图。
对鱼体图像进行二值化后,采用邻域边界算法[14]获得鱼体的轮廓,即若在原图中存在一个点为黑点,且它的8个邻域点也都是黑点,则该点被认定为内部点。图6为采用这种算法对图5中的图像进行轮廓提取后的效果。
2.2 鱼体背部轮廓数学建模
对提取出的鱼体背部轮廓曲线进行分析,根据鱼体吻端位置点A和尾柄B、C以及背部点D构建数学模型,如图7所示。B、C点之间背部轮廓曲线采用均值算法计算其像素点值;对ADBC曲线采用最小二乘法对背部轮廓曲线进行拟合,对采集的样本图片(每种鱼各25条)进行背部轮廓的最小二乘拟合。
采用四种不同的拟合公式对鱼体背部轮廓作最小二乘拟合,四种不同的拟合式如式(1)-式(4)所示。
其中x(n)是背部轮廓中的每个点组成的数组,y1(n)、y2(n)、y3(n)、y4(n)表示一次、二次、三次、四次拟合。
图8为采用y2(n)对图6中四种鱼体背部轮廓拟合示意图。根据拟合的鱼体背部轮廓曲线,分别对其拟合的曲线作平均误差的分析,平均误差采用欧式距离进行计算,计算式如式(5)所示。其中X1为采用最小二乘算法在不同拟合计算式下的值,X为样本集鱼体轮廓曲线值。
接着对建立的不同鱼体背部轮廓拟合曲线作平均误差分析,计算式如式(6)所示,其中d为每张图片样本的误差值,统计结果如表1所示。
从表1可知:采用最小二乘法根据y3(n)曲线函数得到的平均误差最小,从而得到y3(n)拟合计算式各系数值如表2所示。
2.3 BPR算法的鱼体背部轮廓分别区间建模
BPR定义示意如图9所示:对给定的轮廓C内部满足的一个点p,令q1、q2是属于R(p)的两个点,点g是轮廓段C(q1q2)的虚点。根据图9,令hg是Δq1gq2的高,hp是Δq1pq2的高,则弯曲潜能比率ε(p,q1,q2)定义如式(7)所示:
由于Δq1gq2是等腰三角形,d(q1,q2)为弦长,l(q1,q2)为固定弧长,得到式(8):
p为空间中任意一点与轮廓C的每一点之间的距离最小值的点,p点的计算式如式(9)所示。hp即为该点到轮廓C的弦长的高,鲫的hp计算示意如图10所示。
图6中四种鱼的p点位置确定示意如图11所示。
分别对采集的每种鱼25张样本图片,通过上述图像处理方法分别计算每种鱼的BPR值分区区间,建立不同鱼种的BPR分布模型,统计结果如图12所示。通过图中BPR值的分布区间可以得到不同鱼种的BPR值的分布区间模型,从而可采用BPR值来确定鱼的种类。
3 实验结果与分析
3.1 实验步骤
采用鱼体背部轮廓BPR算法来对鱼体图像进行分类,主要实验步骤如下:
1)对在水产市场采集的测试图片进行编号,其中A1-A100号为鲫,B1-B100号为草鱼,C1-C100为鳊,D1-D100为鲤。图13所示即取不同鱼种类的5张不同的图片为测试图片。
2)采用2.1节图像预处理算法对要识别的鱼体图像提取出鱼体图像轮廓。
3)鱼体背部轮廓数学模型的归一化。由于不同的鱼体尺寸大小不一,提取的背部轮廓值也大小不一,因此在计算鱼体背部轮廓BPR算法之前需要对背部轮廓作归一化处理。假设建立的背部轮廓数学模型向量为Y=[y1,y2,…,yn],要识别的鱼体背部轮廓曲线各点值为X=[x1,x2,…,xn],其中x1为提取的鱼体背部轮廓起始点,xn为提取的鱼体背部轮廓最末端点。对Y向量中y1=x1、yn=xn进行赋值,根据X向量个数确定n值,在确定n值后,通过式(3)和表2中的最优鱼体背部曲线各系数值确定y2,y3,…,yn-1的值。
4)BPR值的计算,采用2.3节BPR计算式,对测试样本鱼体图像进行BPR值的计算,计算结果如图14-图17所示。
3.2 实验结果分析
通过对每种鱼各100张测试图片进行实验分析,测试结果如表3所示。通过表3可以看出,鱼体背部BPR算法能比较有效地对这四种淡水鱼进行分类。
在采集的测试样本库上运行常见的四种鱼体分类识别算法并作对比分析,其中方法1是张志强等提出的基于淡水鱼颜色特征及长宽比方法,方法2是Alsmadi等提出的根据淡水鱼特征采用BP神经网络方法来对鱼种类进行分类识别,方法3和方法4是吴一全等提出的运用蜂群优化单核LS-SVM算法与蜂群优化多核LS-SVM算法。测试结果如表4所示,通过表4可以看出,提出的算法对鱼体种类识别具有比较好的识别正确率,该方法简单,并且不需对识别参数进行设置。
4 结语