2015-05-20 62 views
0

我想用k-NN分類器做一個對象識別程序。我爲分類器的訓練部分和一些圖像識別出了一堆圖像。這些圖像是灰度圖,每個圖像都有一個對象。問題是隻有物體的邊緣(沒有填充),所以我不認爲使用regionprops(img,'centroid')將正確工作,因爲我明白... 那麼我怎麼才能得到他們的重心?Matlab - 只有邊緣的對象的質量中心

回答

1

xenoclast的回答應該很清楚,只是爲了增加一些額外的東西。 當你完成從你的灰度圖像創建二進制圖像使用im2bw;如果對象的邊緣是完全覆蓋對象的邊界,則可以直接使用regionprops(bw,'centroid'),而不必通過imfill

+0

這工作謝謝你。我還有另外一個問題:我讀過'regionprops(bw,'centroid')'按維度順序返回元素,這是否意味着第一個元素將是最小元素的質心,最後一個元素是該地區的質心? – user2952272

+0

'regionprops()'返回的值是N個結構體。 N是輸入圖像中連接組件的數量(或對象數量)。你可以看看這個http://www.mathworks.com/help/images/ref/regionprops.html?refresh=true#outputarg_stats 你可以試試看看返回結構的順序。 'BW = imread('text.png'); s = regionprops(BW,'centroid');對於n = 1:長度爲 imshow(BW) 保持在 上:plot(s(n).Centroid(:, 1),s(n).Centroid(:,2),'b *') 暫停(0.2) end' – jacaheyo

0

第一步是用im2bw對圖像進行二值化處理。然後,您可以使用imfill(img, 'holes')將其從輪廓轉變爲實心實體。之後,regionprops將按預期工作。

+0

它不工作,它必須是自動的,我不能在執行程序時選擇要填充的孔 – user2952272

+0

'imfill'自己產生gui,但是使用imfill(img,'holes') '是一個自動過程(只要你的輪廓被關閉)。 – xenoclast