1.图像预处理
1.1将原始图像进行灰度和二值处理;
figure,subplot(1,3,1),imshow(I),title('原始图像');
subplot(1,3,2),imshow(I2),title('灰度图像');
subplot(1,3,3),imshow(BW),title('二值图像');
1.2检测边缘腐蚀运算
SE=strel('rectangle',[40 30]); % 结构定义
J2=imopen(BW,SE); % 开启运算
figure,imshow(J2),title('对二值图像进行开运算后的结果图像');
SE=strel('square',5); % 定义3×3腐蚀结构元素
J=imerode(~J2,SE);
BW2=(~J2)-J; % 检测边缘
figure,imshow(BW2),title('3*3腐蚀运算后的图像边界轮廓');
1.3提取边界图像
B = imfill(BW2,'holes');
B = bwmorph(B,'remove');
figure,imshow(B),title('提取出的边界图像');
2.多维度参数计算
2.1周长计算
for i = 1 : num
Premeter(i) = 0;
end
[row,col] = size(Label);
for i = 1 : row
for j = 1 : col
if(Label(i,j) > 0)
Premeter(Label(i,j)) = Premeter(Label(i,j)) + 1; %计算标记后的各块图形边界中像素的个数的总数
end
end
end
(2.2、2.3、2.4程序相似)
2.2 面积计算
2.3圆度计算
2.4色度计算
3.分类器识别
3.1图像1识别
A=0;
for i=1:num
if(MeanHue(i)>0.5) %分类器识别桃的准则:判断各个图形中平均色度值大于0.5的为A
A=i;
end
end
%8-2对分出来的类别分别构建相应的图像掩膜,并用对原图的亮度图像进行掩膜操作
AHSV=HSV;
[row,col] = size(FilledLabel); %统计填充后的图形中各块图形所含像素的个数的多少
%MeanHue = zeros(1,num);
for j = 1 : row
for k = 1 : col
if(FilledLabel(j,k) ~=pitch)
%AHSV(j,k,2)=0;
AHSV(j,k,3)=0;
end
end
end
%8-3变换生成最终的结果图像,图像中显示的结果即对应分类器中指定的类别
Amatrix = hsv2rgb(AHSV); %转换为RGB彩图,彩图中已经滤去了其余A
figure,imshow(pitchmatrix),title('图像为:A');
3.2 图像2识别 %(与1类似)
4.以水果为例进行测试
测试结果: