分水嶺演算法及相應處理

2021-07-12 04:32:45 字數 2761 閱讀 1399

matlab中分水嶺函式並不能直接得到想要的分割結果。網路上有下面三種處理方式:

上述的第三種方法為最優方法,不過還是會由於背景的不均勻造成大量的誤分割。在做該部分內容時,基於影象重建來去除雜訊並進行保留細節特徵。**如下:

subplot(1,2,2);imshow(ie);title('腐蝕');

figure;imshow(io);title('開運算');

iobr=imreconstruct(ie,i);

figure;

imshow(iobr,);title('基於開的重建影象');

iobrd = imdilate(iobr, se);

iobrcbr = imreconstruct(imcomplement(iobrd), imcomplement(iobr));

iobrcbr = imcomplement(iobrcbr);

figure;

imshow(iobrcbr,);title('基於開閉操作的重建影象');

f=iobrcbr;

%f=rgb2gray(f);

b=im2bw(f,graythresh(f));

%bb=im2bw(ff,graythresh(f));

[x,y]=size(b);

h=fspecial('sobel');

fd=double(f);

g=sqrt(imfilter(fd,h,'replicate').^2+imfilter(fd,h','replicate').^2);

i=watershed(g);

wr=i==0;

rm=imregionalmin(g);

im=imextendedmin(f,13);

lim=watershed(bwdist(im));

em=lim==0;

g2=imimposemin(g,im|em);

i2=watershed(g2);

f2=f;

f2(i2==1)=255;

figure;

subplot(1,2,1);imshow(b);

subplot(1,2,2);imshow(f2);

figure;

imshow(i2);

分水嶺演算法

分水嶺變換是一種流行的影象處理演算法,用於快速將影象分割成多個同質區域。分水嶺演算法的思想是 把影象看成乙個拓撲地貌,那麼同類區域就相當於陡峭邊緣內相對平坦的盆地。分水嶺演算法通過逐步增加水位,把地貌分割成多個部分 目前比較著名的有模擬泛洪和降水 降水 水先是匯集到海拔低的地區,慢慢填充這每乙個盆地...

分水嶺演算法

在許多實際應用中,我們需要分割影象,但無法從背景影象中獲得有用資訊。分水嶺演算法在這方面往往是非常有效的。此演算法可以將影象中的邊緣轉化成 山脈 將均勻區域轉化為 山谷 這樣有助於分割目標。分水嶺演算法,是一種基於拓撲理論的數學形態學的分割方法,其基本思想是把影象看作是測地學上的拓撲地貌,影象中每一...

分水嶺分割演算法

如果影象中的目標物體是連在一起的,則分割起來會更困難,分水嶺演算法經常用於處理這類問題,通常會取得比較好的效果。分水嶺分割演算法把影象看成一副 地形圖 其中亮度比較強的地區畫素值較大,而比較暗的地區畫素比較小,通過尋找 匯水盆地 和 分水嶺界限 對影象進行分割。步驟 1.讀取影象 2.求取影象的邊界...