形態學圖像處理——骨架抽取

1.圖像的細化主要是針對二值圖而言,把輸入的具有一定寬度的圖像輪廓用逐次去掉邊緣的方法最終變爲寬度僅爲一個像素的骨架。

2.所謂骨架,可以理解爲圖像的中軸,一個長方形的骨架,是它的長方形上的中軸線,圓的骨架是它的圓心,直線的骨架是它自身,孤立點的骨架也是自身。

骨架的獲取主要有兩種方法:

(1)基於烈火模擬
設想在同一時刻,將目標的邊緣線都點燃,火的前沿以勻速向內部蔓延,當前沿相交時火焰熄滅,火焰熄滅點的結合就是骨架。

(2)基於最大圓盤
目標的骨架是由目標內所有內切圓盤的圓心組成。

3.細化的算法有很多種,比較常見的算法是查表法。
細化是從原來的圖中去掉一些點,但仍然要保持原來的形狀,實際上就是保持原圖的骨架。
骨架提取代碼如下:



clear all;close all;clc

BW1=imread('D:\TXQQ\shuju\1072634496\FileRecv\4548.png');

imshow(BW1);

%用形態學算子去掉圖像的內點:若像素的四鄰域爲1,則像素值爲0,使邊緣像素是亮點
BW2=bwmorph(BW1,'remove');

%n = Inf時,移除目標邊界像素,但是不允許目標分隔開,保留下來的像素組合成圖像的骨架。
BW3=bwmorph(BW1,'skel',Inf);

%n = Inf時,減薄目標成線。沒有孔洞的目標縮成最低限度的連通邊;有孔洞的目標縮成連通環。
BW4=bwmorph(BW1,'thin',Inf);

subplot(2,2,1);

imshow(BW1);title('原圖像');

subplot(2,2,2);

imshow(BW2);title('去除內點圖像');

subplot(2,2,3);

imshow(BW3);title('圖像骨架');

subplot(2,2,4);

imshow(BW4);title('圖像細化');

運行結果:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章