這個代碼我也不是很懂原理,但是效果我覺得還可以。放進來方便我以后使用。
若代碼侵權,請聯系我。
function bw = multi_detect(I,num) if isa(I,'double') I = double(I); end range = [min(I(:)) max(I(:))]; smoothValue = 0.01*diff(range).^2; %imguidedfilter導向濾波函數。方差比較大的區域,保持值不變,在平滑區域,使用臨近像素平均(也就退化為普通均值濾波) J = imguidedfilter(I,'DegreeOfSmoothing',smoothValue); thresh = multithresh(J,2); L = imquantize(J,thresh); L = imfill(L); bw = ones(size(L)); bw(L ==num) = 0;
放一個效果圖: