田间杂草分割实例
一、引言
杂草分割是图像处理中常见的问题,本例对一个简单杂草图像在图像分析的基础上进行背景分割。
二、程序代码
clear all;close all;clc;
I=imread('.\weeds.png');
imshow(I);
Ir=I(:,:,1);
figure,imshow(Ir),title('r通道');
Ig=I(:,:,2);
figure,imshow(Ig),title('g通道');
Ib=I(:,:,3);
figure,imshow(Ib),title('b通道');
Igray=rgb2gray(I);
figure,imhist(Igray);
Ir_b=Ir-Ib;
figure,imshow(Ir_b,[]);
I2=2*Ig-Ir-Ib;%参考相关研究论文和其他文献资料提出的超绿特征 2g-r-b
figure,imhist(I2);
%Obj1=im2bw(I2,20/255);
Obj1=im2bw(I2,graythresh(I2));
figure,imshow(Obj1); %参考文献分割效果并不理想(独立思考很重要,不盲从!!!)
Igb=Ig-Ib;%通过imtool工具进行图像分析,g-b彩色因子对杂草进行分割效果较好
%Igb=1.1*Ig-Ib;
figure,imshow(Igb,[]);
figure,imhist(Igb);%具有典型双峰特性
Obj2=im2bw(Igb,graythresh(Igb));
figure,imshow(Obj2);%分割效果好
Obj2_weed=uint8(Obj2).*I;
figure,imshow(Obj2_weed);
figure('Name','杂草分割','NumberTitle','off');
subplot(2,2,1),imshow(I),title('原始图像');
subplot(2,2,2),imshow(Igb),title('灰度图像');
subplot(2,2,3),imshow(Obj2),title('二值图像');
subplot(2,2,4),imshow(Obj2_weed),title('杂草彩色图像');