資源簡介
利用閾值進行分割,簡單,適用于提取特征較為明顯的目標

代碼片段和文件信息
%基于貝葉斯分類算法的圖像閾值分割?
clear?
clc;?
Init?=?imread(‘SLR.bmp‘);?
Im=rgb2gray(Init);
subplot(131)imhist(Im)title(‘直方圖‘)?
subplot(132)imshow(Im)?
title(‘原始圖像‘)?
[xy]=size(Im);????????????????????%?求出圖象大小?
b=double(Im);???????????????????
zd=double(max(Im))??????????????????%?求出圖象中最大的灰度?
zx=double(min(Im))????????????????%?最小的灰度??
T=double((zd+zx))/2;?????????????????????%?T賦初值,為最大值和最小值的平均值?
count=double(0);?????????????????????????%?記錄幾次循環?
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
i1=im2bw(ImT/255);???????????????%?圖像在最佳閾值下二值化?
subplot(133)imshow(i1)?
title(‘實驗結果‘)?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1594??2009-03-19?22:10??閾值分割迭代法\iterative.m
?????文件??????51930??2009-03-19?22:08??閾值分割迭代法\lena.BMP
?????文件??????58856??2009-03-19?22:03??閾值分割迭代法\result.bmp.fig
?????文件??????18654??2009-03-19?21:50??閾值分割迭代法\SLR.BMP
?????目錄??????????0??2009-04-29?22:28??閾值分割迭代法
-----------?---------??----------?-----??----
???????????????131034????????????????????5
- 上一篇:畢業設計 測電容單片機源代碼
- 下一篇:電子信息專業筆試題_硬件
評論
共有 條評論