检测图像中的形状中心和区域

时间:2016-10-08 04:39:06

标签: graphics gd

Dotted image

我正在使用GD库,我正在寻找一种方法来检测中间形状中心的最近像素,以及单色黑白图像中每个形状使用的总面积。 / p>

我很难想出一个有效的算法来做到这一点。如果你在过去做过类似的事情,我会感激任何有用的解决方案。

2 个答案:

答案 0 :(得分:1)

查看二进制图像库

基本上,Otsu阈值将前景与背景分开,然后标记连接的组件。该特定图像看起来非常干净,但您可能需要变形操作来清理它并摆脱小孔和其他伪影。

然后你有一个简单的区域(计算组件中的像素数)或几乎是平凡的(使用加权区域函数来惩罚边缘像素)。中心只是意思。

http://malcolmmclean.github.io/binaryimagelibrary/

答案 1 :(得分:1)

@MalcolmMcLean是正确的,但仍存在困难(如果你的准确度最高)。

如果您使用Otsu进行阈值处理,则会有几对“接吻”点,这些点将使用连通分量分析形成单个斑点。

此外,Otsu阈值将丢弃部分填充的边缘像素,因此加权平均值将是不准确的。一种治疗方法是增加阈值(最多可达254),但这会加剧接吻点的问题。

解决方法是保持低阈值并单独扩大blob以获得覆盖所有边缘像素的合适掩模。即便如此,轻微的不准确也会导致亲吻的附近。

通过分水岭变换进行Blob分割也是可能的,但需要更加小心处理常见像素。我怀疑是否有一个完美的解决方案。

另一种方法是使用亚像素边缘检测和最小二乘圆拟合(在具有非常低阈值的斑点检测之后分离点)。通过避免两个圆共有的边缘像素,您可以获得优异的结果。

相关问题