灰度閾值分割法的matlab實現

<span style="font-size:24px;"><span style="font-size:24px;">function th=thresh_md(a);%該函數實現最大方差法計算分割閾值
count=imhist(a); %返回圖像矩陣各個灰度等級像素個數
[m,n]=size(a);
N=m*n-sum(sum(find(a==0),1));
L=256;     %指定圖像灰度等級
count=count/N;%計算出各灰度出現的概率
for i=2:L
    if count(i)~=0
        st=i-1;
        break;
    end
end  %找出出現概率不是零的最小灰度
for i=L:-1:1
    if count(i)~=0;
        nd=i-1;
        break;
    end 
end%找出出現概率不爲零的最大灰度
f=count(st+1:nd+1);
p=st;q=nd-st;%分別表示爲灰度起始和結束值
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);%求出最大方差對應的灰度值
th=tp+p;</span></span>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章