您現(xiàn)在的位置: 南方財富網(wǎng) >> 股票知識 >> 股票技術(shù)分析 >> 正文
南方財富搜索

股票應(yīng)用標(biāo)記的分水嶺算法

2010-6-21 22:37:44   來源:本站原創(chuàng)   佚名
    

如果圖像中的目標(biāo)物體是連在一起的,則分割起來會更困難,分水嶺算法經(jīng)常用于處理這類問題,通常會取得比較好的效果。分水嶺分割算法把圖像看成一副“地形圖”,其中亮度比較強(qiáng)的地區(qū)像素值較大,而比較暗的地區(qū)像素比較小,通過尋找“匯水盆地”和“分水嶺界限”,對圖像進(jìn)行分割。
步驟:
1.讀取圖像
2.求取圖像的邊界,在此基礎(chǔ)上可直接應(yīng)用分水嶺分割算法,但效果不佳;
3.對圖像的前景和背景進(jìn)行標(biāo)記,其中每個對象內(nèi)部的前景像素都是相連的,背景里面的每個像素值都不屬于任何目標(biāo)物體;
4.計算分割函數(shù),應(yīng)用分水嶺分割算法的實現(xiàn)

注:直接用分水嶺分割算法效果并不好,如果在圖像中對前景和背景進(jìn)行標(biāo)注區(qū)別,再應(yīng)用分水嶺算法會取得較好的分割效果。
例 步驟:
1.讀取圖像并求取圖像的邊界。
rgb = imread('pears.png');%讀取原圖像
I = rgb2gray(rgb);%轉(zhuǎn)化為灰度圖像
figure; subplot(121)%顯示灰度圖像
imshow(I)
text(732,501,'Image courtesy of Corel',...
     'FontSize',7,'HorizontalAlignment','right')
hy = fspecial('sobel');%sobel算子
hx = hy';
Iy = imfilter(double(I), hy, 'replicate');%濾波求y方向邊緣
Ix = imfilter(double(I), hx, 'replicate');%濾波求x方向邊緣
gradmag = sqrt(Ix.^2 + Iy.^2);%求摸
subplot(122); imshow(gradmag,[]), %顯示梯度
title('Gradient magnitude (gradmag)')
2. 直接使用梯度模值進(jìn)行分水嶺算法:(往往會存在過的分割的情況,效果不好)
L = watershed(gradmag);%直接應(yīng)用分水嶺算法
Lrgb = label2rgb(L);%轉(zhuǎn)化為彩色圖像
figure; imshow(Lrgb), %顯示分割后的圖像
title('Watershed transform of gradient magnitude (Lrgb)')
3.分別對前景和背景進(jìn)行標(biāo)記:本例中使用形態(tài)學(xué)重建技術(shù)對前景對象進(jìn)行標(biāo)記,首先使用開操作,開操作之后可以去掉一些很小的目標(biāo)。
se = strel('disk', 20);%圓形結(jié)構(gòu)元素
Io = imopen(I, se);%形態(tài)學(xué)開操作
figure; subplot(121)
imshow(Io), %顯示執(zhí)行開操作后的圖像
title('Opening (Io)')
Ie = imerode(I, se);%對圖像進(jìn)行腐蝕
Iobr = imreconstruct(Ie, I);%形態(tài)學(xué)重建
subplot(122); imshow(Iobr), %顯示重建后的圖像
title('Opening-by-reconstruction (Iobr)')
Ioc = imclose(Io, se);%形態(tài)學(xué)關(guān)操作
figure; subplot(121)
imshow(Ioc), %顯示關(guān)操作后的圖像
title('Opening-closing (Ioc)')
Iobrd = imdilate(Iobr, se);%對圖像進(jìn)行膨脹
Iobrcbr = imreconstruct(imcomplement(Iobrd), ...
    imcomplement(Iobr));%形態(tài)學(xué)重建
Iobrcbr = imcomplement(Iobrcbr);%圖像求反
subplot(122); imshow(Iobrcbr), %顯示重建求反后的圖像
title('Opening-closing by reconstruction (Iobrcbr)')
fgm = imregionalmax(Iobrcbr);%局部極大值
figure; imshow(fgm), %顯示重建后局部極大值圖像
title('Regional maxima of opening-closing by reconstruction (fgm)')
I2 = I;
I2(fgm) = 255;%局部極大值處像素值設(shè)為255
figure; imshow(I2), %在原圖上顯示極大值區(qū)域
title('Regional maxima superimposed on original image (I2)')
se2 = strel(ones(5,5));%結(jié)構(gòu)元素
fgm2 = imclose(fgm, se2);%關(guān)操作
fgm3 = imerode(fgm2, se2);%腐蝕
fgm4 = bwareaopen(fgm3, 20);%開操作
I3 = I;
I3(fgm4) = 255;%前景處設(shè)置為255
figure; subplot(121)
imshow(I3)%顯示修改后的極大值區(qū)域
title('Modified regional maxima')
bw = im2bw(Iobrcbr, graythresh(Iobrcbr));%轉(zhuǎn)化為二值圖像
subplot(122); imshow(bw), %顯示二值圖像
title('Thresholded opening-closing by reconstruction')
4. 進(jìn)行分水嶺變換并顯示:
D = bwdist(bw);%計算距離
DL = watershed(D);%分水嶺變換
bgm = DL == 0;%求取分割邊界
figure; imshow(bgm), %顯示分割后的邊界
title('Watershed ridge lines (bgm)')
gradmag2 = imimposemin(gradmag, bgm | fgm4);%置最小值
L = watershed(gradmag2);%分水嶺變換
I4 = I;
I4(imdilate(L == 0, ones(3, 3)) | bgm | fgm4) = 255;%前景及邊界處置255
figure; subplot(121)
imshow(I4)%突出前景及邊界
title('Markers and object boundaries')
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');%轉(zhuǎn)化為偽彩色圖像
subplot(122); imshow(Lrgb)%顯示偽彩色圖像
title('Colored watershed label matrix')
figure; imshow(I),
hold on
himage = imshow(Lrgb);%在原圖上顯示偽彩色圖像
set(himage, 'AlphaData', 0.3);
title('Lrgb superimposed transparently on original image')

(責(zé)任編輯:張元緣)
    南方財富網(wǎng)聲明:股市資訊來源于合作媒體及機(jī)構(gòu),屬作者個人觀點,僅供投資者參考,并不構(gòu)成投資建議。投資者據(jù)此操作,風(fēng)險自擔(dān)。
商務(wù)進(jìn)行時
每日必讀
學(xué)院24小時排行
證券導(dǎo)讀
熱圖推薦

關(guān)于南方財富網(wǎng)版權(quán)聲明誠聘英才廣告服務(wù)網(wǎng)站地圖友情鏈接
特此聲明:廣告商的言論與行為均與南方財富網(wǎng)無關(guān)
www.2dayisday1.com
南方財富網(wǎng) © 版權(quán)所有 閩ICP備09035581號