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

股票應用標記的分水嶺算法

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

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

注:直接用分水嶺分割算法效果并不好,如果在圖像中對前景和背景進行標注區(qū)別,再應用分水嶺算法會取得較好的分割效果。
例 步驟:
1.讀取圖像并求取圖像的邊界。
rgb = imread('pears.png');%讀取原圖像
I = rgb2gray(rgb);%轉化為灰度圖像
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. 直接使用梯度模值進行分水嶺算法:(往往會存在過的分割的情況,效果不好)
L = watershed(gradmag);%直接應用分水嶺算法
Lrgb = label2rgb(L);%轉化為彩色圖像
figure; imshow(Lrgb), %顯示分割后的圖像
title('Watershed transform of gradient magnitude (Lrgb)')
3.分別對前景和背景進行標記:本例中使用形態(tài)學重建技術對前景對象進行標記,首先使用開操作,開操作之后可以去掉一些很小的目標。
se = strel('disk', 20);%圓形結構元素
Io = imopen(I, se);%形態(tài)學開操作
figure; subplot(121)
imshow(Io), %顯示執(zhí)行開操作后的圖像
title('Opening (Io)')
Ie = imerode(I, se);%對圖像進行腐蝕
Iobr = imreconstruct(Ie, I);%形態(tài)學重建
subplot(122); imshow(Iobr), %顯示重建后的圖像
title('Opening-by-reconstruction (Iobr)')
Ioc = imclose(Io, se);%形態(tài)學關操作
figure; subplot(121)
imshow(Ioc), %顯示關操作后的圖像
title('Opening-closing (Ioc)')
Iobrd = imdilate(Iobr, se);%對圖像進行膨脹
Iobrcbr = imreconstruct(imcomplement(Iobrd), ...
    imcomplement(Iobr));%形態(tài)學重建
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;%局部極大值處像素值設為255
figure; imshow(I2), %在原圖上顯示極大值區(qū)域
title('Regional maxima superimposed on original image (I2)')
se2 = strel(ones(5,5));%結構元素
fgm2 = imclose(fgm, se2);%關操作
fgm3 = imerode(fgm2, se2);%腐蝕
fgm4 = bwareaopen(fgm3, 20);%開操作
I3 = I;
I3(fgm4) = 255;%前景處設置為255
figure; subplot(121)
imshow(I3)%顯示修改后的極大值區(qū)域
title('Modified regional maxima')
bw = im2bw(Iobrcbr, graythresh(Iobrcbr));%轉化為二值圖像
subplot(122); imshow(bw), %顯示二值圖像
title('Thresholded opening-closing by reconstruction')
4. 進行分水嶺變換并顯示:
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');%轉化為偽彩色圖像
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')

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

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