【问题标题】:Matlab - Center of mass of object having only its edgeMatlab - 只有边缘的物体的质心
【发布时间】:2015-05-20 10:17:35
【问题描述】:

我正在尝试使用 k-NN 分类器制作对象识别程序。我有一堆图像用于分类器的训练部分,还有一堆图像要识别。这些图像是灰度的,每张图像都有一个对象。问题是只有对象的边缘(未填充),所以我不认为使用regionprops(img,'centroid') 可以正常工作,因为我理解...... 那么我怎样才能得到它们的质心呢?

【问题讨论】:

    标签: matlab classification centroid


    【解决方案1】:

    xenoclast 的答案应该很清楚,只是添加一些额外的东西。 当您完成使用im2bw 从您的灰度图像创建二进制图像时;如果对象的边缘是完全覆盖对象的边界,则可以直接使用regionprops(bw,'centroid'),而无需经过imfill

    【讨论】:

    • 这很有效,谢谢。我还有一个问题:我读到regionprops(bw,'centroid') 按维度顺序返回元素,这是否意味着第一个元素将是最小元素的质心,最后一个元素是区域的质心?跨度>
    • regionprops()返回的值是N个结构。 N 是输入图像中连通分量的数量(或对象的数量)。你可以看看这个mathworks.com/help/images/ref/… 你可以试试这个来检查返回结构的顺序。 BW = imread('text.png'); s = regionprops(BW, 'centroid'); imshow(BW) hold on for n = 1 : length(s) plot(s(n).Centroid(:, 1),s(n).Centroid(:,2), 'b*') pause(0.2) end
    【解决方案2】:

    第一步是使用im2bw 对图像进行二值化处理。然后您可以使用imfill(img, 'holes') 将其从轮廓变为实心。之后regionprops 将按预期工作。

    【讨论】:

    • 它不起作用,它必须是自动的,我将无法在执行程序时选择要填充的孔
    • imfill 自行生成 gui,但使用 imfill(img, 'holes') 是一个自动过程(只要您的大纲已关闭)。
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2013-05-13
    • 2014-10-29
    • 2018-09-13
    • 2015-02-27
    • 2019-09-18
    相关资源
    最近更新 更多