简单的彩色图像分割

时间:2022-03-29 15:31:37

先看下原始图像和最终分割后的图像
原始图像:
简单的彩色图像分割
分割后:
简单的彩色图像分割

具体步骤:
1.在红色区域内选择一个矩形(这个矩形要基本能代表花的颜色,比如在花内部选一个矩形区域)
2.计算矩形区域内的均值和方差
3.规定如果大于均值-1.25倍的方差并小于均值+1.25倍的方差则认为是这朵花

clc,clear
rgb=imread('flower.jpg');
rgb1=im2double(rgb);
r=rgb1(:,:,1);
g=rgb1(:,:,2);
b=rgb1(:,:,3);
%在红色分量中选择一块矩形区域
r1=r(200:310,400:500);
%矩形区域的均值
r1_u=mean(mean(r1(:)));
[m,n]=size(r1);
%计算标准差
sd1=0.0;
for i=1:m
    for j = 1:n
        sd1=sd1+(r1(i,j)-r1_u)*(r1(i,j)-r1_u);
    end
end
r1_d=sqrt(sd1/(m*n));
r2=zeros(size(rgb1,1),size(rgb1,2));
%找到符合条件的点
ind=(r>r1_u-1.25*r1_d)&(r<r1_u+1.25*r1_d);
%符合条件的点灰度设为1
r2(ind)=1;
rgb2=rgb1;
[m2,n2]=size(r2);
for i =1:m2
    for j =1:n2
        if r2(i,j)==0
            rgb2(i,j,:)=0;
        end
    end
end

figure
subplot(2,3,1),imshow(rgb1),title('RGB原始图像')
subplot(2,3,2),imshow(r),title('R分量')
subplot(2,3,3),imshow(g),title('G分量')
subplot(2,3,4),imshow(b),title('B分量')
subplot(2,3,5),imshow(r2),title('红色分割')
subplot(2,3,6),imshow(rgb2),title('根据红色分割')

注意:
矩形区域的选择很重要,否则分割的效果会很不好,如果你是使用跟我不同的花就需要选择跟我不同的矩形区域

输出结果:
简单的彩色图像分割