luluxiu
2008-05-12, 18:01
请问关于苹果果梗的判断,,,有没有其他的方法。。思路。。。。。。:cry: 下面那个方法好像不行啊。。对于小图片都说有果梗,,对于大的图片都说没果梗。。
果梗检测
对苹果梗的检测,主要是通过对苹果的轮廓线矩阵求差分实现的。利用图像处理技术对苹果的彩色图片进行灰度转换,经滤波后再边缘检测,提取出苹果的轮廓线,利用imcontour函数可以得出轮廓线的矩阵,再用diff函数对矩阵进行差分,把这些差分值累加,于是得到一个sum值。这个值就是我们判断果梗有无的依据。当有果梗时sum会在0到-5.0000e5(估测值)之间,而无果梗的sum值是正值,本程序大概定于8000以上。
I=imread('图片名.jpg');
I2=rgb2gray(I);
B=medfilt2(I2);
B2=medfilt2(B);
B3=medfilt2(B2);
B4=medfilt2(B3);
B5=medfilt2(B4);
B6=medfilt2(B5);
BW=edge(B6,'sobel',0.1);
figure,subplot(1,4,1),imshow(I);
subplot(1,4,2),imshow(I2);
subplot(1,4,3),imshow(B6);
subplot(1,4,4),imshow(BW);
figure,[C,h]=imcontour(BW);
a=diff(C);
[x,y]=size(a);
sum=0;
for i=1:x
for j=1:y
sum=sum+a(i,j);
end
end
if (sum>8000||sum<-5.0000e+005)
fprintf('无果梗');
else
fprintf('有果梗');
end
果梗检测
对苹果梗的检测,主要是通过对苹果的轮廓线矩阵求差分实现的。利用图像处理技术对苹果的彩色图片进行灰度转换,经滤波后再边缘检测,提取出苹果的轮廓线,利用imcontour函数可以得出轮廓线的矩阵,再用diff函数对矩阵进行差分,把这些差分值累加,于是得到一个sum值。这个值就是我们判断果梗有无的依据。当有果梗时sum会在0到-5.0000e5(估测值)之间,而无果梗的sum值是正值,本程序大概定于8000以上。
I=imread('图片名.jpg');
I2=rgb2gray(I);
B=medfilt2(I2);
B2=medfilt2(B);
B3=medfilt2(B2);
B4=medfilt2(B3);
B5=medfilt2(B4);
B6=medfilt2(B5);
BW=edge(B6,'sobel',0.1);
figure,subplot(1,4,1),imshow(I);
subplot(1,4,2),imshow(I2);
subplot(1,4,3),imshow(B6);
subplot(1,4,4),imshow(BW);
figure,[C,h]=imcontour(BW);
a=diff(C);
[x,y]=size(a);
sum=0;
for i=1:x
for j=1:y
sum=sum+a(i,j);
end
end
if (sum>8000||sum<-5.0000e+005)
fprintf('无果梗');
else
fprintf('有果梗');
end