2016-08-05 96 views
0

我有這個問題:我有這個二維二值圖像,我想提取該圖像中對象的輪廓。 這是圖像: enter image description here在matlab中查找圖像中2D對象的輪廓

我想有相同的矩陣圖像但那些只能在對象和零其他地方的輪廓。 有沒有解決方案? 如果是這樣,是否有任何實現也爲3D對象做同樣的事情?

非常感謝您

回答

1

如果您有圖像處理工具箱,你可以使用bwperim

BW = imread('http://i.stack.imgur.com/05T06.png'); 
BW = BW(:,:,1) == 255; 

boundary = bwperim(BW); 

imshow(boundary) 

enter image description here

歸根結底這是什麼呢,是進行原始圖像上卷積蠶食然後計算受侵蝕版本和原始版本之間的差異。所以如果你沒有工具箱,你可以用conv2(或3D中的convn)做到這一點。

eroded = ~conv2(double(~BW), ones(3), 'same'); 
boundary = BW - eroded; 

或者在3D:

eroded = ~convn(double(~BW_3D), ones(3,3,3), 'same'); 
boundary = BW_3D - eroded; 
+0

非常感謝你,它的工作原理完全與bwperim功能! – David