一、前言
在前面的《数字图像处理与机器视觉》案例一(库尔勒香梨果梗提取和测量)中主要使用数学形态学的方法进行果梗提取,下面给出一种提取果梗的新思路。
众所周知,一般果梗和果实在边缘处角度有较大突变,可以通过合适方法对原始图像进行角点提取,然后再进行果梗的提取和测量。下面直接给出代码和原始图像,大家可以去完善。注:原始图像是给了一个比较理想的水果图像的模拟,大家可以在此算法上进行修改、测试和完善。
二、源程序和参考的资料
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代码怎么写?
三、主要运行结果
四、测试图像
如果大家觉得本文对大家编程有帮助,请点赞、收藏和关注,谢谢!如有好的建议欢迎一起讨论交流。