資源簡介
otsu是一個經典的圖像閾值分割方法,給出一個matlab程序給大家參考使用用
代碼片段和文件信息
[fnamefpath]?=?uigetfile({‘*.*‘;‘*.pgm‘;‘*.jpg‘});
name?=?strcat(fpathfname);
if?~isequal(fname?0)
????imin?=?imfinfo(name);
????img?=?imread(name);
????if?imin.BitDepth?==?24
????????img?=?rgb2gray(img);
????end
????[row_img?col_img]=size(img);
end
img?=?double(img);
tic;
all_pix?=?row_img?*?col_img?;
%?get?probability?of?each?pixel.
count_pix?=?zeros(1256)?;
pro_pix?=?[]?;?
for?i?=?1?:?1?:?row_img
????for?j?=?1?:?1?:?col_img
????????count_pix(1img(ij)+1)?=?count_pix(1img(ij)+1)?+?1?;?
????end
end
pro_pix?=?count_pix?/?all_pix?;
%?choose?k?value;
max_kesi?=?-1?;?
max_k?=?0?;?
for?k?=?1?:?1?:?254
????wa?=?0?;
????ua?=?0?;?
????i?=?0?;?
????while(?i?<=?k?)
????????wa?=?wa?+?pro_pix(1i+1)?;?
????????ua?=?ua?+?i?*?pro_pix(1i+1)?;?
????????i?=?i?+?1?;?
????end
????
????if?(?wa?==?0.0?)
????????continue;
????els
評論
共有 條評論