资源简介

只要装有matlab就能跑通代码,采用的均值漂移(mean shift)方法进行图像分割。

资源截图

代码片段和文件信息

function tu=keyprogram( ) 
rgb=imread(‘test.png‘);
rgb=im2double(rgb); 
r=rgb(::1); 
g=rgb(::2); 
b=rgb(::3); 
num=0.5*((r-g)+(r-b)); 
den=sqrt((r-g).^2+(r-b).*(g-b)); 
theta=acos(num./(den+eps)); 
H=theta; 
H(b>g)=2*pi-H(b>g); 
H=H/(2*pi); 
num=min(min(rg)b); 
den=r+g+b; 
den(den==0)=eps; 
S=1-3.*num./den; 
H(S==0)=0; 
I=(r+g+b)/3; 
S=im2uint8(S);
H=im2uint8(H);
I=im2uint8(I);
S=double(S);H=double(H);I=double(I);
[mn]=size(S);
figure;imshow(uint8(S));figure;imshow(uint8(H));figure;imshow(uint8(I));
S1=S;
h1=H;i1=I;
for i=1:m
    for j=1:n
        if (S(ij)>=100)
            S1(ij)=255;
        else S1(ij)=0;
        end
    end
end
figure;imshow(uint8(S1));
for i=1:m
    for j=1:n
        if (S1(ij)==0)
            H(ij)=0;
        end
    end
end
H1=meanshift(H);
figure;imshow(uint8(H1));
for i=1:m
    for j=1:n
        if (S1(ij)==255)
            I(ij)=0;
        end
    end
end
I1=meanshift(I);
figure;imshow(uint8(I1));
for i=1:m
    for j=1:n
        if (S1(ij)==0)
            H1(ij)=h1(ij);
        end
    end
end
for i=1:m
    for j=1:n
        if (S1(ij)==255)
            I1(ij)=i1(ij);
        end
    end
end
hsi=cat(3H1S1I1);
figure;imshow(uint8(hsi));
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1281  2018-10-24 20:03  基于均值漂移(mean shift)算法的图像分割\keyprogram.m

     文件       1239  2010-12-04 13:44  基于均值漂移(mean shift)算法的图像分割\meanshift.m

     文件        251  2018-10-24 20:12  基于均值漂移(mean shift)算法的图像分割\readme.txt

     文件     272694  2006-09-13 17:25  基于均值漂移(mean shift)算法的图像分割\tree.bmp

     目录          0  2018-10-24 20:11  基于均值漂移(mean shift)算法的图像分割

----------- ---------  ---------- -----  ----

               275465                    5


评论

共有 条评论