本文内容:
本文采用超绿因子对玉米苗图像进行了图像分割,并采用腐蚀膨胀(图像的开运算和闭运算)进行了去噪处理,从而得出了玉米苗较为准确的位置。
超绿因子:在RGB色彩空间中即(2G-R-B)/(R+G+B),可以很好的分割出图像中绿色的部分,常用于分割植物。也称绿色因子,超绿特征等。
实验所用图片:
实验代码如下:
function U()
clear;
clc;
Corn_Seedling_Extraction('sjtp晴天时的玉米苗.JPG');
Corn_Seedling_Extraction('sjtp晴天时灰烬中的玉米苗.JPG');
Corn_Seedling_Extraction('sjtp晴天时麦秸秆中的玉米苗.JPG');
Corn_Seedling_Extraction('sjtp阴天时的玉米苗.JPG');
end
% 玉米幼苗提取,采用超绿因子,带显示,输入s为文件名
function Corn_Seedling_Extraction(s)
[img,map] = imread(s); % 读取文件
figure('Name',s); % 开一个新的窗口
subplot(2,4,1),imshow(img),title('原图'); % 显示原图
subplot(2,4,2),imshow(img(:,:,1)),title('R'); % 显示R
subplot(2,4,3),imshow(img(:,:,2)),title('G'); % 显示G
subplot(2,4,4),imshow(img(:,:,3)),title('B'); % 显示B
img = double(img);
img_g = (2*img(:,:,2)-img(:,:,1)-img(:,:,3))./(img(:,:,1)+img(:,:,2)+img(:,:,3));
subplot(2,4,5),imshow(img_g,[]),title('超绿因子运算结果'); % 显示超绿因子运算结果
% img_g = im2bw(img_g,graythresh(img_g)); % 图像分割使用最大类间方差法找到阈值
img_g = im2bw(img_g,0.1); % 最大类间方差法结果不太好,固定阈值反而效果不错
subplot(2,4,6),imshow(img_g),title('超绿因子分割结果'); % 显示超绿因子分割结果
x = ones(5,5); % 对分割后结果进行腐蚀膨胀去噪
img_g = imerode(img_g,x);%腐蚀操作
img_g = imdilate(img_g,x);%膨胀操作
subplot(2,4,7),imshow(img_g),title('腐蚀膨胀去噪结果'); % 显示腐蚀膨胀去噪结果
img_g = img_g/255;
img_x = cat(3,img(:,:,1).*img_g,img(:,:,2).*img_g,img(:,:,3).*img_g);
subplot(2,4,8),imshow(img_x),title('分割出的玉米苗'); % 显示分割出的玉米苗
end
实验结果: