我正在做一些低級圖像處理項目,我需要找到對象的位置。在這種情況下,這是一顆彗星。我用閾值玩了一下,得到了非常多的二值圖像,但接下來需要的是在大量白色像素中間定位一個固定點,以便可以跟蹤或者進行其他操作。任何想法如何做到這一點? 這裏是我得到的一個屏幕截圖。查找圖像中的一組像素
,是有辦法過濾掉所有的白色圓點遍佈畫面?某種功能給所有小組值「0」? 在此先感謝!
我正在做一些低級圖像處理項目,我需要找到對象的位置。在這種情況下,這是一顆彗星。我用閾值玩了一下,得到了非常多的二值圖像,但接下來需要的是在大量白色像素中間定位一個固定點,以便可以跟蹤或者進行其他操作。任何想法如何做到這一點? 這裏是我得到的一個屏幕截圖。查找圖像中的一組像素
,是有辦法過濾掉所有的白色圓點遍佈畫面?某種功能給所有小組值「0」? 在此先感謝!
MATLAB regionprops是你的朋友,你的形象足夠你想做的事情。
regionprops正好滿足您的需求(您可以獲得質心的X,Y)。由於它也提供該區域,因此可以過濾結果並僅保留圖像中最大的對象。
也許你正在尋找這一點 -
代碼
%%// 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
注意:還有另一個問題 - Select largest object in an image涉及到這種情況。
您的問題似乎與regionprops
來解決,正如其他人提出了,但如果你有興趣,在一般情況下,在消除圖像中的白色小藝術品:
您可以應用的一個或多個步驟erosion到你的二進制圖像,消除小白點(但也減少你的彗星的大小!)。
您可以使用中值濾鏡或形態開放濾鏡去除小白色區域。您必須嘗試爲篩選器內核選擇合適的大小。假設你在過濾後有一個更清晰的圖像,你可以執行一個標籤,然後做一個regionprops來獲得blob的質心。
非常感謝,它完美的作品!只是,你是怎麼得到那個窗口的座標彈出來的?它是在代碼中,還是在劇情之後打開它? –
這是一個數據光標。當你使用imshow時,你可以在圖形窗口中找到它。閱讀更多關於它[這裏](http://www.mathworks.in/help/matlab/creating_plots/data-cursor-displaying-data-values-interactively.html) – Divakar
@MartinV考慮接受滿足期望的答案問題,它有助於「SO」社區。閱讀更多關於接受答案的地方 - http://stackoverflow.com/help/accepted-answer – Divakar