本发明涉及一种生猪头尾轮廓识别方法,尤其是涉及一种基于最近邻分类与模糊算法的猪头尾轮廓识别方法。
背景技术:
生猪养殖已从传统的粗放型养殖方式逐渐转变为更为绿色环保的集约型。为了使得生猪养殖更有效率,对猪进行监控并检测其生理状态显得更有必要。传统上,都有人工对猪的状况进行监控,由于猪舍环境恶劣,长期以往对工作人员的身体有不利影响,另外,工作人员也无法做到时刻进行检测,对生猪的异常情况反映较慢。而利用机器视觉系统获取生猪图像同时通过图像处理技术来进行生猪的状态检测是代替人工方式的较好选择。其中,识别头尾有助于判别猪的姿态,能够更好地掌握猪体状况。通过图像处理技术提取猪体轮廓,掌握其头尾朝向,能帮助重构猪体的姿态,监控猪的姿态可以帮助判断其是否有异常举动,尽早发现异常有助于剔除不利生猪生长的因素,从而使生猪养殖活动更有效率,提高利润。
近年来,由于技术进步,利用机器视觉进行动物状态检测的研究有了相当程度的进展,也有诸多学者利用机器视觉系统对生猪情况进行监控(武志磊.基于机器视觉的猪异常呼吸检测[D].江苏大学,2011),对获取的图像进行分割并提取猪体轮廓。然而对于非理想情况下的猪体检测研究较少。在实际运用机器视觉系统时获得的生猪图像不一定理想,进行图像分割,获取的轮廓也有可能存在偏差。能够有效地在存在偏差的情况下进行识别,可以帮助提高机器视觉系统的鲁棒性及其效率,使得其更易投入实际生产活动。
技术实现要素:
为了解决背景技术中存在的问题,本发明的目的在于提供一种基于最近邻分类与模糊算法的猪头尾轮廓识别方法。
本发明主要是通过对生猪图像进行图像分割和轮廓提取获取猪体轮廓后再利用特征向量定向法定位长轴找到端点,进而提取两端轮廓进行傅里叶变换后投入结合模糊算法的最近邻分类器进行打分,最终通过打分结果识别两端归属于头或尾,从而实现猪体的头尾识别完成姿态检测。
本发明解决其技术问题所采用的具体技术方案是:
如图1所示,先获取生猪图像,依次经图像分割、边缘提取得到猪体轮廓E,然后采用以下步骤进行处理:
1)以图像左下点为原点,水平方向为x轴,竖直方向为y轴,建立直角坐标系;
2)建立长度为N的猪体轮廓信息队列M,N为猪体轮廓点总数;
3)采用椭球形尺寸快速检测方法检测猪体轮廓信息队列M获得猪体长轴的两个端点D1、D2;
具体实施中可采用申请号为201510501000.4的专利申请中的基于特征向量定向的椭球形水果尺寸快速检测方法。
4)将猪体轮廓信息队列M的头尾相接,转换为循环队列,并构建猪体的第一端轮廓E1和第二端轮廓E2;
5)将第一端轮廓E1和第二端轮廓E2的坐标位置信息以y坐标做实部,x坐标做虚部变为复数形式,分别进行快速傅里叶变换,取第一端轮廓E1经快速傅里叶变换后前20个系数的模长和第二端轮廓E2经快速傅里叶变换后前20个系数的模长作为特征向量,分别记为第一特征向量F1和第二特征向量F2;
6)通过样本猪图像建立样本标准库,样本标准库所含样本特征集合T中包含猪头样本特征集合T1和猪尾样本特征集合T2;
7)对于待识别猪图像,重复步骤1)至步骤5)获得各自的第一特征向量F1和第二特征向量F2,并作为待测特征向量F,采用以下公式计算待测特征向量F分别与样本特征集合T中各个特征向量的马氏距离Lc;
式中,k为样本特征集合T中样本特征向量的总数,j为样本特征向量的序数,Tj为样本特征集合T中第j个特征向量(分母为样本特征集合T的方差向量),Tc为样本特征集合T中第c个特征向量(c的取值范围为1、2);μ为样本特征集合T中所有特征向量的均值;
8)将所有获得的马氏距离Lc按从小到大的次序排列,取其中连续的一部分进行计算获得识别参考值S,根据待识别猪图像的第一特征向量F1计算得到的识别参考值S和第二特征向量F2计算得到的识别参考值S进行分析获得猪头尾轮廓的识别结果。
所述的生猪图像为生猪的俯视照片或者侧视照片。
所述步骤2)具体是:以猪体轮廓E所在像素点作为轮廓点,按如下步骤将轮廓点以坐标位置(xi,yi)加入到猪体轮廓信息队列M中,i=1,2…N,N为轮廓点总数,i为轮廓点序数:
2.1)扫描猪体轮廓E以任意一个轮廓点A0作为起始点,将其坐标位置存为猪体轮廓信息队列M的第一个元素;
2.2)从起始点开始,搜索每一个轮廓点的八邻域获得下一轮廓点,重复步骤搜索直至完成一圈,搜索后找不到新的轮廓点,则完成猪体轮廓信息队列M的构建。
所述步骤2.2)搜索每一个轮廓点的八邻域获得下一轮廓点具体为:起始点搜索时,对其八邻域的每个邻域像素位置进行链码值编码,在其八邻域以逆时针方向搜索每个邻域像素位置,搜索找到新轮廓点后将其坐标位置插入到猪体轮廓信息队列M的队尾,并记录其搜索时所在邻域像素位置的链码值,接着以刚搜索到的新轮廓点作为对象在其八邻域以逆时针方向再次搜索,邻域搜索的起点为刚搜索到的新轮廓点记录的链码值减2后所对应链码值的邻域像素位置,然后依次类推以上述相同方式完成对每一个轮廓点的搜索。
所述步骤4)猪体的第一端轮廓E1和第二端轮廓E2具体是采用以下方式构建:
将长轴端点D1在猪体轮廓信息队列M中所在的位置记为C1,将猪体轮廓信息队列M中C1-N/4至C1+N/4之间的所有元素归为第一端轮廓E1;将长轴端点D2在猪体轮廓信息队列M中所在的位置记为C2,将猪体轮廓信息队列M中C2-N/4至C2+N/4之间的所有元素归为第二端轮廓E2。
所述步骤6)具体为:对于k个样本猪图像重复步骤1)至步骤5)获得各自的第一特征向量F1和第二特征向量F2,将k个样本猪图像的第一特征向量F1和第二特征向量F2区分分为猪头特征向量和猪尾特征向量,将猪头特征向量归类构成猪头样本特征集合T1,将猪尾特征向量归类构成猪尾样本特征集合T2。
所述步骤8)中具体是采用以下公式计算获得识别参考值S:
式中,q为排列后参与计算的马氏距离Lc的数量,Lp为马氏距离Lc按从小到大的次序排列后的第p个马氏距离Lc,p=1,2,……q,Lmax为参与计算的所有马氏距离Lc中的最大值,a为识别细化参数;b为分类参数,若Lp值为待测特征向量F与猪头样本特征集合T1中的特征向量之间的马氏距离Lc,则b=0,否 则b=1。
识别参考值S越大,待测特征向量F对应的轮廓曲线越可能为猪头部,当识别参考值S越小,待测特征向量F对应的轮廓曲线段越可能为尾部。综合两端曲线评分进行头尾识别,两端数值更大的一方判断为头部,更小的一方判断为尾部。因此,所述步骤8)猪头尾轮廓的识别结果是采用以下方式分析获得:待识别猪图像的第一特征向量F1计算得到的识别参考值S和第二特征向量F2计算得到的识别参考值S中,数值较大的对应的是猪头特征,数值较小的对应的是猪尾特征。若两者数值相等,则识别失败。
本发明的有益效果是:
本发明方法综合利用了轮廓信息,利用模糊算法增强了分类器的鲁棒性,从而能在图像分割质量较差、轮廓信息较不完善的情况下较好地完成识别工作,使得利用图像处理技术对猪体状况的监控变得可能,避免传统分类器对于图像本身导致的不理想的轮廓信息出现错误识别无法妥善处理的情况。
附图说明
图1是本发明方法流程框图。
图2是本发明方法流程框图。
图3是本发明实施例处理的轮廓示例。
图4是本发明实施例处理中顺序搜索轮廓点的流程图。
图5是本发明实施例处理过程中的定位情况。
图6是本发明实施例处理过程中一端轮廓及其识别情况。
图7是本发明实施例处理过程中另一端轮廓及其识别情况。
图8是本发明实施例对另一个较不理想的结果识别情况。
具体实施方式
下面结合附图和实施例对本发明做进一步说明。
本发明的实施例如下:
具体实施的方法处理如图2所示,实施例先获取生猪俯视拍摄获得的图像,依次经图像分割、边缘提取得到猪体轮廓E,然后具体步骤如下:
1)如图3所示,以图像左下点为原点,水平方向为x轴,竖直方向为y轴,建立直角坐标系;
2)如图4所示,以猪体轮廓E所在像素点作为轮廓点,按如下步骤将轮廓点以坐标位置(xi,yi)加入到猪体轮廓信息队列M中,i=1,2…N,N为轮廓点总数,i为轮廓点序数:
2.1)扫描猪体轮廓E以任意一个轮廓点A0作为起始点,将其坐标位置存为猪体轮廓信息队列M的第一个元素;
2.2)从起始点开始,搜索每一个轮廓点的八邻域获得下一轮廓点,重复步骤搜索直至完成一圈,搜索后找不到新的轮廓点,则完成猪体轮廓信息队列M的构建。
起始点搜索时,对其八邻域的每个邻域像素位置进行链码值编码,在其八邻域以逆时针方向搜索每个邻域像素位置,搜索找到新轮廓点后将其坐标位置插入到猪体轮廓信息队列M的队尾,并记录其搜索时所在邻域像素位置的链码值,接着以刚搜索到的新轮廓点作为对象在其八邻域以逆时针方向再次搜索,邻域搜索的起点为刚搜索到的新轮廓点记录的链码值减2后所对应链码值的邻域像素位置,然后依次类推以上述相同方式完成对每一个轮廓点的搜索。
3)如图5所示,采用申请号为201510501000.4的专利申请中的基于特征向量定向的椭球形水果尺寸快速检测方法检测猪体轮廓信息队列M获得猪体长轴的两个端点D1、D2;
4)如图6与图7所示,将猪体轮廓信息队列M的头尾相接,转换为循环队列,将长轴端点D1在猪体轮廓信息队列M中所在的位置记为C1,将猪体轮廓信息队列M中C1-N/4至C1+N/4之间的所有元素归为第一端轮廓E1;将长轴端点D2在猪体轮廓信息队列M中所在的位置记为C2,将猪体轮廓信息队列M中C2-N/4至C2+N/4之间的所有元素归为第二端轮廓E2,图6为获得的第一端轮廓E1、图7为获得的第二端轮廓E2。
5)将第一端轮廓E1和第二端轮廓E2的坐标位置信息以y坐标做实部,x坐标做虚部变为复数形式,分别进行快速傅里叶变换,取第一端轮廓E1经快速傅里叶变换后前20个系数的模长和第二端轮廓E2经快速傅里叶变换后前20个系数的模长作为特征向量,分别记为第一特征向量F1和第二特征向量F2;
6)对于k个样本猪图像重复步骤1)至步骤5)获得各自的第一特征向量F1和第二特征向量F2,将k个样本猪图像的第一特征向量F1和第二特征向量F2区分分为猪头特征向量和猪尾特征向量,将猪头特征向量归类构成猪头样本特征集合T1,将猪尾特征向量归类构成猪尾样本特征集合T2,样本特征集合T中包含猪头样本特征集合T1和猪尾样本特征集合T2;
7)对于待识别猪图像,重复步骤1)至步骤5)获得各自的第一特征向量F1和第二特征向量F2,并作为待测特征向量F,采用以下公式计算待测特征向量F分别与样本特征集合T中各个特征向量的马氏距离Lc;
8)将所有获得的马氏距离Lc按从小到大的次序排列,取其中连续的一部分计算获得识别参考值S。具体是采用以下公式计算获得识别参考值S:
根据待识别猪图像的第一特征向量F1计算得到的识别参考值S和第二特征向量F2计算得到的识别参考值S进行分析,其中数值较大的对应的是猪头特征,数值较小的对应的是猪尾特征。若两者数值相等,则识别失败。如图6所示,第一端轮廓E1的识别参考值S为18.4352,大于图7中第二端轮廓E2的数值为-19.1752识别参考值S,故判定第一端轮廓E1为头部,第二端轮廓E2为尾部。
如图8,为对另一个较不理想的结果识别情况,由于图像分割的精度较低,两端轮廓属于较难识别头尾的情况,而按照上述方法计算其两端轮廓的识别参考值,可得分别为-16.6058与-17.9802,虽很接近但仍区分了微小差异完成了正确识别。能对一些不太精确、区分度不高的轮廓进行头尾轮廓识别是本发明的优点所在。