1 简介 我国是一个水果和蔬菜生产大国,水果和蔬菜的总产量均居世界之首.但是我国水果和蔬菜出口总量却很低,在国际市场上缺泛竞争力.为了提高我国果蔬在国际市场上的竞争力,近些
1 简介
我国是一个水果和蔬菜生产大国,水果和蔬菜的总产量均居世界之首.但是我国水果和蔬菜出口总量却很低,在国际市场上缺泛竞争力.为了提高我国果蔬在国际市场上的竞争力,近些年来,我国的果蔬商品化处理发展比较迅速,特别是计算机视觉技术在果蔬识别分类和品质检测领域中应用越来越广泛.但由于果蔬的种类频多,而且不同的果蔬其形状,颜色和纹理等特征千差万别.如何用较少的特征量来表示果蔬的特征,能否用统一的方法来对不同果蔬进行识别分类,是目前研究的重要课题之一.
2 部分代码
% **************************************************************% **************分隔图像,并将每一部分分离 ***********************
% ************** 并统计每部分的形状特征 ***********************
% **************************************************************
% 读取图像
image = imread('test.jpg');
figure
imshow(image);
im_gray = rgb2gray(image); %灰度化
im_bw = im2bw(im_gray,0.9); %二值化
% 将二值化后的图像进一步处理
im_bw= bwareaopen(im_bw, 10); %去除图像中面积过小的杂点
%%
im_bw= 1-im_bw; %灰度反转,将背景变为黑色
figure
imshow(im_bw);
[Label,num] = bwlabel(im_bw,8); %将不同的图形进行分别标记,num表示连接的图形对象的个数
%% 将第一个图形区域分离显示出来
[U,V,S]=find(Label==1); % U为行坐标,V为列坐标
im_bw1=zeros(size(im_bw));
for k=1:length(U)
im_bw1(U(k),V(k))=1;
end
% figure
% imshow(im_bw1);
%% 将第二个图形区域分离显示出来
[U,V,S]=find(Label==2); % U为行坐标,V为列坐标
im_bw2=zeros(size(im_bw));
for k=1:length(U)
im_bw2(U(k),V(k))=1;
end
% figure
% imshow(im_bw2);
%% 将第三个图形区域分离显示出来
[U,V,S]=find(Label==3); % U为行坐标,V为列坐标
im_bw3=zeros(size(im_bw));
for k=1:length(U)
im_bw3(U(k),V(k))=1;
end
% figure
% imshow(im_bw3);
%% 将第四个图形区域分离显示出来
[U,V,S]=find(Label==4); % U为行坐标,V为列坐标
im_bw4=zeros(size(im_bw));
for k=1:length(U)
im_bw4(U(k),V(k))=1;
end
% figure
% imshow(im_bw4);
%% 显示各个图形
figure
subplot(221); imshow(im_bw1);
subplot(222); imshow(im_bw2);
subplot(223); imshow(im_bw3);
subplot(224); imshow(im_bw4);
%% 统计被标记的区域的形状特征:面积,离心率,长轴
pro = regionprops(Label,'Area','Eccentricity','MajorAxisLength');
3 仿真结果
4 参考文献
[1]阳江平. 基于计算机视觉的果蔬识别方法研究. Diss. 大连理工大学.