资源简介

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

评论

共有 条评论