資源簡介
迭代法和二位otsu分割算法程序,matlab編寫,可用

代碼片段和文件信息
%%%%%%%%%%%圖像分割迭代法%%%%%%%%%%%%
clear
clc;
tic;?%計時器
%?Im=imread(‘D:\tank2.tiff‘);
Im=imread(‘D:\11.bmp‘);
%?Im=imread(‘D:\111.jpg‘);
%?Im=rgb2gray(Im);
%?subplot(131)imhist(Im)title(‘直方圖‘);
%?subplot(121)imshow(Im)title(‘原始圖像‘);
[xy]=size(Im);%求出圖像大小
b=double(Im);
zd=double(max(max(Im)));%求出圖像最大灰度值
zx=double(min(min(Im)));%求出圖像最小灰度值
T=double((zd+zx))/2;%T賦初值
count=double(0);%記錄循環(huán)次數
while?1;%迭代最佳閾值分割算法
????count=count+1;
????S0=0.0;n0=0.0;%為計算灰度大于閾值的元素的灰度總值、個數賦值
????S1=0.0;n1=0.0;%為計算灰度小于閾值的元素的灰度總值、個數賦值
????for?i=1:x
????????for?j=1:y
????????????if?double(Im(ij))>=T
????????????????S1=S1+double(Im(ij));%大于閾值的圖像點灰度值累加
????????????????n1=n1+1;%大于閾值的圖像個數累加
????????????else
????????????????S0=S0+double(Im(ij));%小于閾值的圖像點灰度值累加
????????????????n0=n0+1;%小于閾值的圖像個數累加
????????????end
????????end
????end
????T0=S0/n0;%求小于閾值的灰度值得均值
????T1=S1/n1;%求大于閾值的灰度值得均值
????if?abs(T-((T0+T1)/2))<0.1;%迭代至前后兩次閾值相差幾乎為0時停止迭代
????????break;
????else
????????T=(T0+T1)/2;%在閾值T下,迭代閾值的計算過程
????end
end
count;%顯示迭代運行次數
T;%顯示最佳閾值
toc;
i1=im2bw(ImT/255);%圖像在最佳閾值下二值化
figureimshow(i1);
%?title(‘實驗結果‘);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1375??2014-05-14?17:51??fenge\diedai.m
?????文件???????1668??2014-05-14?17:53??fenge\otsu2.m
?????目錄??????????0??2014-07-15?16:57??fenge
-----------?---------??----------?-----??----
?????????????????3043????????????????????3
評論
共有 條評論