2015-10-14 104 views
0

Area积分不变是一种在图像处理中使用的签名的。有没有人知道计算AII的算法?Area积分不变计算

即我想要计算通过边界与相交的圆圈包围的区域...

边界不是用公式,但是从任意的轮廓曲线。下面的图片只是一个示意图。真正的边界可以是复杂得多,在边界的各个位置,即顶部,底部,左侧的封闭区域......

The red area。我使用MATLAB,图像大多是二进制。 The red area

回答

0

如果你知道圆的方程和线,那么它很容易,如果你是在一个图像中做这个。

  1. 选择圆内的像素(可以用圆的公式很容易地完成)。如果您需要将AII计算为比率,请计算您拥有的像素数。

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

  3. 这就是它!如果您想要AII没有比例,那么2中的像素数就是结果。如果你想把它当作一个比例,由1

+0

我忘了提及的线没有绘制任何方程的基础上,但从边界的轮廓或约... – sytheve

+0

此外,相对于线的像素不能被行的列值分开,因为有时候该区域可能位于线条的顶部,具体取决于线条的形状。 – sytheve

+0

@sytheve然后更容易,不是吗? *“或每一列中的行值” *当然 –

0

像素数除以2的像素数量。如果你只有图像,没有公式,您仍然可以选择你想要的像素在你想计算的区域给你的算法一个像素点,然后重新检查所有的邻居,如果它们是白色的,就把它们添加到你的区域。完成后,只需计算您拥有的像素。其结果在某种意义上说是你想要的地区。

+0

如何选择区域?现在,我使用“imfill”的功能,但它是非常耗时的大图片特别像...... 1000×1000 – sytheve

+0

是的,你可以通过使用'XOR(originalImage,imfilledImage)'选择的区域。确保将您的二进制图像转换为逻辑显式。我没有看到任何其他(更快)的可能性。 – Wauzl

+0

另外,使用'imfill'时记得指定正确的连接。 – Wauzl