2015-05-20 35 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