資源簡介
在MATLAB下實現OTSU算法,另外還有關于此算法的改進形式,對圖像的閾值進行最佳的計算,提高二值化的效果

代碼片段和文件信息
%?Otsu方法是一種聚類的閾值化方法,基于統計理論來尋找閾值
rimax=0;size1=0;
%讀入一幅圖像
I=imread(‘2.bmp‘);
%對圖像進行灰度變換
a=rgb2gray(I);
%顯示變換后的圖像
figureimshow(a)
%顯示圖像a的直方圖
imhist(a)
%把直方圖中灰度級所對應的像素數放入數組g
g=imhist(a);
%求出圖像中所有的像素數
for?j=1:256
????size1=size1+g(j);
end
for?level=1:256
???count=0;sumpels=0;
%求背景的概率和均值
??for?loop=1:level
????count=count+g(loop);
????sumpels=sumpels+loop*g(loop);
?end
w0=count/size1;
u0=sumpels/count;
%求目標的概率和均值
w1=1-w0;
if?size1-count~=0
????totalpels=0;
????for?i=1:256
????????totalpels=totalpels+i*g(i);
????end
????u1=(totalpels-sumpels)/(size1-count);
else
????u1=0;
end
%求出兩類間的最大方差值,此時閾值即為所求
ritemp=w0*w1*(u0-u1)*(u0-u1);
if?ritemp>rimax
????rimax=ritemp;
????result=level;
end
end
%用所得閾值進行圖像二值化
BW?=?im2bw(a1-result/255);
%顯示二值化以后的圖像
figureimshow(BW)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????955??2010-04-21?15:48??ostu.m
?????文件????????980??2010-04-21?15:48??ostugaijin.m
?????文件??????62697??2009-11-14?13:52??1.jpg
-----------?---------??----------?-----??----
????????????????64632????????????????????3
- 上一篇:spasm工具包
- 下一篇:Dijkstra算法的Matlab程序,有驗證。
評論
共有 條評論