当前位置:   article > 正文

通过角点进行水果的果梗检测一种新方法

通过角点进行水果的果梗检测一种新方法

一、前言

     在前面的《数字图像处理与机器视觉》案例一(库尔勒香梨果梗提取和测量)中主要使用数学形态学的方法进行果梗提取,下面给出一种提取果梗的新思路。

     众所周知,一般果梗和果实在边缘处角度有较大突变,可以通过合适方法对原始图像进行角点提取,然后再进行果梗的提取和测量。下面直接给出代码和原始图像,大家可以去完善。注:原始图像是给了一个比较理想的水果图像的模拟,大家可以在此算法上进行修改、测试和完善。

二、源程序和参考的资料

clear all;
close all;
clc;
imtool close all;
I=imread('.\Test2.png');
imshow(I);
Igray=rgb2gray(I);
figure,imshow(Igray);
 corners = detectMinEigenFeatures(Igray);
  imshow(I);
  hold on;
  plot(corners.selectStrongest(10));%直接对灰度图像进行角点检测,检测效果不理想
  I_R=I(:,:,1);   %提取R通道分量
  figure,imhist(I_R);%显示R分量的灰度直方图
I_bw=im2bw(I_R,graythresh(I_R));
figure,imshow(I_bw),title('二值图像');
obj_edge=edge(I_bw,'canny');%利用Canny算子进行边缘提取
figure,imshow(obj_edge);
obj_edge2=bwmorph(obj_edge,'thin',Inf);  %使用bwmorph进行细化:
figure,imshow(obj_edge2);   
cornersModified = detectMinEigenFeatures(I_bw);%利用最小特征值算法(Minimum eigenvalue algorithm)检测角点  figure,imshow(I_bw);
  hold on;
  plot(cornersModified.selectStrongest(4));%显示检测到的角点
  cornersModified_harris = detectHarrisFeatures(I_bw);%使用Harris–Stephens算法检测角点
  figure,imshow(I_bw);
  hold on;
  plot(cornersModified_harris.selectStrongest(4));
  M=cornersModified_harris.selectStrongest(4);%找到四个角点坐标
  Cor_Loc=round(M.Location);
  disp('使用Harris–Stephens算法检测角点坐标是;');
  Cor_Loc
 %%参考资料
%https://blog.csdn.net/Meteoraki/article/details/104491537
%https://blog.csdn.net/u010278305/article/details/42618143
%https://blog.csdn.net/qq_36614557/article/details/115315449  Matlab:图像轮廓的曲率计算
%https://www.zhihu.com/question/584665321/answer/2906293834  知道四个点坐标,围成一个四边形区域。这个python代码怎么写?

三、主要运行结果

下面两幅运行结果,是在源程序的基础上进行了修改和完善,如果有需要的可以关注我或给我留言,我可以把源代码发给你。

由此可以估算水果的果梗长度为86 Pixel,直径为33Pixel。

四、测试图像

      如果大家觉得本文对大家编程有帮助,请点赞、收藏和关注,谢谢!如有好的建议欢迎一起讨论交流。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/898895
推荐阅读
相关标签
  

闽ICP备14008679号