2014-04-11 104 views
2

我正在做一些低級圖像處理項目,我需要找到對象的位置。在這種情況下,這是一顆彗星。我用閾值玩了一下,得到了非常多的二值圖像,但接下來需要的是在大量白色像素中間定位一個固定點,以便可以跟蹤或者進行其他操作。任何想法如何做到這一點? 這裏是我得到的一個屏幕截圖。查找圖像中的一組像素

​​

Link to the photo

,是有辦法過濾掉所有的白色圓點遍佈畫面?某種功能給所有小組值「0」? 在此先感謝!

回答

2

MATLAB regionprops是你的朋友,你的形象足夠你想做的事情。

regionprops正好滿足您的需求(您可以獲得質心的X,Y)。由於它也提供該區域,因此可以過濾結果並僅保留圖像中最大的對象。

3

也許你正在尋找這一點 -

代碼

%%// Read in image and convert to binary 
img = imread(IMAGE_FILEPATH); 
BW = im2bw(img); 

%%// Get only the comet blob, which is the biggest blob 
[L, num] = bwlabel(BW); 
counts = sum(bsxfun(@eq,L(:),1:num)); 
[~,ind] = max(counts); 
BW = (L==ind); 

%%// Find the centroid of the comet blob 
stats = regionprops(BW, 'Centroid'); 
center_point = stats.Centroid 

輸出

center_point = 

    56.7471 131.9373 

enter image description here

注意:還有另一個問題 - Select largest object in an image涉及到這種情況。

+0

非常感謝,它完美的作品!只是,你是怎麼得到那個窗口的座標彈出來的?它是在代碼中,還是在劇情之後打開它? –

+1

這是一個數據光標。當你使用imshow時,你可以在圖形窗口中找到它。閱讀更多關於它[這裏](http://www.mathworks.in/help/matlab/creating_plots/data-cursor-displaying-data-values-interactively.html) – Divakar

+0

@MartinV考慮接受滿足期望的答案問題,它有助於「SO」社區。閱讀更多關於接受答案的地方 - http://stackoverflow.com/help/accepted-answer – Divakar

1

您的問題似乎與regionprops來解決,正如其他人提出了,但如果你有興趣,在一般情況下,在消除圖像中的白色小藝術品:

您可以應用的一個或多個步驟erosion到你的二進制圖像,消除小白點(但也減少你的彗星的大小!)。

0

您可以使用中值濾鏡或形態開放濾鏡去除小白色區域。您必須嘗試爲篩選器內核選擇合適的大小。假設你在過濾後有一個更清晰的圖像,你可以執行一個標籤,然後做一個regionprops來獲得blob的質心。