彩色图像分割

时间:2021-04-12 15:31:33

一、实验目的:熟悉RGB空间的彩色图像分割方法

二、实验内容:以redflower.jpg图像为例,采用边界盒方法分割出该图像中的红色花朵,通过改变标准偏差的系数值,观察对分割结果产生的影响

原图:

彩色图像分割

 1 rgb=imread('D:/redflower.jpg');
 2 figure,
 3 subplot(2,2,1);
 4 imshow(rgb)
 5 rgb1=im2double(rgb);
 6 r=rgb1(:,:,1);%图像的红色分量
 7 g=rgb1(:,:,2);%图像的绿色分量
 8 b=rgb1(:,:,3);%图像的蓝色分量
 9 r1=r(130:195,86:170);%在?的红分量中选择一块矩形区域,由输入可知size(r)=(195 ,218),改变选择的行列可以改变标准偏差的标准值
10 r1_u=mean(mean(r1(:)));%计算该矩形区域的均值
11 [m,n]=size(r1);%得到该矩形区域的高度和宽度  
12 sd1=0.0;;%该区域标准偏差变量
13 for i=1:m
14     for j=1:n
15         sd1=sd1+(r1(i,j)-r1_u)*(r1(i,j)-r1_u);%二重循环对差值的平均进行累加
16     end
17 end
18 r1_d=sqrt(sd1/(m*n));%计算得到该区域的标准偏差
19 r2=zeros(size(rgb1,1),size(rgb1,2));
20 ind=find((r>r1_u-1.10*r1_d)&(r<r1_u+1.10*r1_d));%找到符合条件的点
21 r2(ind)=1;%将符合条件的点的灰度值赋值为1
22 subplot(2,2,2);
23 imshow(r2);
24 title('标准差为1.10');
25 ind=find((r>r1_u-1.20*r1_d)&(r<r1_u+1.20*r1_d));
26 r2(ind)=1;
27 subplot(2,2,3);
28 imshow(r2);
29 title('标准差为1.20');
30 ind=find((r>r1_u-1.30*r1_d)&(r<r1_u+1.30*r1_d));
31 r2(ind)=1;
32 subplot(2,2,4);
33 imshow(r2);
34 title('标准差为1.30');

运行结果截图:

彩色图像分割