當前位置:編程學習大全網 - 源碼下載 - 如何用matlab提取2R-G-B分量的灰度並用ostu分割?

如何用matlab提取2R-G-B分量的灰度並用ostu分割?

下面這個是我自己寫的。首先,獲得閾值,然後灰化,這對應於標準的OSTU過程。

Filename= '填寫您的圖片名稱'

I=imread(文件名);

I _ gray = RGB 2 gray(I);

I _ double = double(I _ gray);%轉換為雙精度

[wid,len]= size(I _ gray);

colorlevel = 256%灰度級

hist=zeros(colorlevel,1);%直方圖

%計算直方圖

對於i=1:高度

對於j=1:寬度

m=I_gray(i,j)+1;

hist(m)= hist(m)+1;

結束

結束

hist=hist/(高度*寬度);%直方圖標準化

miuT = 0;

對於m=1:顏色級別

miuT = miuT+(m-1)* hist(m);

結束

xig mab 2 = 0;

for mindex=1:colorlevel

閾值= mindex-1;

omega 1 = 0;

ω2 = 0;

對於m=1:閾值-1

omega 1 = omega 1+hist(m);

結束

omega 2 = 1-omega 1;

miu 1 = 0;

miu 2 = 0;

對於m=1:顏色級別

如果m & lt閾值

miu 1 = miu 1+(m-1)* hist(m);

其他

miu 2 = miu 2+(m-1)* hist(m);

結束

結束

miu 1 = miu 1/omega 1;

miu 2 = miu 2/omega 2;

xigmab21=omega1*(miu1-miut)^2+omega2*(miu2-miut)^2;

xig ma(mindex)= xig mab 21;

如果xigmab 21 & gt;xigmaB2

finalT =閾值;

xigmab 2 = xigmab 21;

結束

結束

threshT = finalT

對於i=1:高度

對於j=1:寬度

if I_double(i,j)>最後

bin(i,j)= 1;

其他

bin(i,j)= 0;

結束

結束

結束

圖(1);im show(uint 8(bin));

  • 上一篇:制作自己的通信索引源代碼
  • 下一篇:C#textbox控件的不可編輯屬性
  • copyright 2024編程學習大全網