⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ostunoi.m

📁 基于二维直方图的图像模糊聚类分割方法
💻 M
字号:
%用otsu法对含噪图象进行分割
C=imread('blwhite.jpg');
J=imnoise(C,'gaussian',0,400/(255*255));
subplot(1,3,1);imshow(C);title('原始灰度图像');
subplot(1,3,2);imshow(J);title('加高斯噪声的灰度图像')
count=imhist(J);%直方图统计
[r,t]=size(J); %图象矩阵大小
N=r*t;%图象象素个数
L=256;%指定图像灰度级为256级
count=count/N;%各级灰度出现的概率
for i=1:L
    if count(i)~=0
        st=i-1;
        break
    end
end
%以上循环语句实现寻找出现概率不为0的灰度最小值
for i=L:-1:1
    if count(i)~=0;
        nd=i-1;
        break
    end
end
%实现找出出现概率不为0的最大灰度值
f=count(st+1:nd+1);
p=st;q=nd-st;%P是灰度的起始值,Q是灰度的个数
u=0;
for i=1:q;
    u=u+f(i)*(p+i-1);
    ua(i)=u;
end
%计算图像的平均灰度值
for i=1:q;
    w(i)=sum(f(1:i));
end
%计算出选择不同K的时候,A区域的概率
d=(u*w-ua).^2./(w.*(1-w));%求出不同K值时类间方差
[y,tp]=max(d);%第tp个数最大,最大值为y
th=tp+p;%求出最大方差对应的灰度级
%if th<=110
 %   th=tp+p;
 
 %else th=110;%根据具体情况适当修正门限
 %end
Y1=zeros(r,t);
for i=1:r
    for j=1:t
        X1(i,j)=double(J(i,j));
    end
end
for i=1:r
    for j=1:t
        if (X1(i,j)>=th)
            Y1(i,j)=X1(i,j);
        else 
            Y1(i,j)=0;
        end
    end
end
%以上代码实现分割 
subplot(1,3,3);imshow(Y1);title('ostu灰度门限分割的图像')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -