【问题标题】:Area integral invariant computation面积积分不变计算
【发布时间】:2015-10-14 07:53:04
【问题描述】:

面积积分不变量是一种用于图像处理的签名。有人知道AII的计算算法吗?

即我想计算一个边界和相交的圆包围的面积...

边界不是带有方程的曲线,而是来自任意轮廓。下图只是示意图。真正的边界可能要复杂得多,封闭区域位于边界的各个位置,即顶部、底部、左侧......

The red area。我正在使用 MATLAB,图像主要是二进制图像。

【问题讨论】:

    标签: matlab image-processing


    【解决方案1】:

    如果你知道圆和线的方程,那么如果你在图像中这样做,那就很容易了。

    1. 选择圆内的像素(通过圆的方程轻松完成)。如果您需要将 AII 计算为比率,请计算您拥有的像素。

    2. 分隔线上方和下方的像素。如果您知道线的方程式或每列中线的值,则可以轻松完成此操作。逐列并丢弃高于该行值的像素。计算结果。

    3. 就是这样!如果你想要没有比率的 AII,那么 2 中的像素数就是结果。如果你想要它作为一个比率,将 2 的像素数除以 1 的像素数。

    【讨论】:

    • 我忘了说这条线不是根据任何方程绘制的,而是从边界的轮廓左右......
    • 另外,相对于线的像素不能被线的列值分隔,因为根据线的形状,有时该区域可能位于线的顶部。
    • @sytheve 那么更容易,不是吗? "或每一列中行的值"
    • @sytheve 啊当然,我假设域是离散的,所以使用这种方法你不会“破坏”像素。如果你想让它更准确,那么你需要计算线和像素之间的交点,并得到线下方区域的部分。但是,这很容易做到/google,所以我没有将它添加到我的答案中。
    • @sytheve 欢迎您。 Cosnider 接受它的任何答案都对你有帮助
    【解决方案2】:

    如果您只有图像而没有方程式,您仍然可以通过在您要计算的区域中给算法一个像素来选择您想要的所有像素,然后反复检查所有邻居并将它们添加到您的区域,如果他们是白色的。完成后,只需计算您拥有的像素。结果在某种意义上就是你想要的区域。

    【讨论】:

    • 如何首先选择区域?现在我正在使用“imfill”功能,但它非常耗时,尤其是对于大图像......比如 1000x1000
    • 是的,您可以使用xor(originalImage,imfilledImage) 选择区域。确保将二进制图像显式转换为逻辑图像。我没有看到任何其他(更快)的可能性。
    • 另外,使用imfill时记得指定正确的连接。
    • 谢谢...估计只能用耗时的那个...=.=
    猜你喜欢
    • 2011-08-12
    • 2018-03-04
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多