【问题标题】:Image segmentation and Image Recognition - How to recognise the coordinates of a white patch in a black background image?图像分割和图像识别 - 如何识别黑色背景图像中白色补丁的坐标?
【发布时间】:2015-04-08 22:50:30
【问题描述】:

目标:找到面积最大的白块。如果可能的话,然后确认它是否是一个圆圈。然后求这个patch的平均中心和半径。

我曾想过在图像周围创建一个边缘,但我不知道这将如何帮助找出补丁的区域。

我正在努力做到这一点,如果有人能指导我朝着正确的方向前进,我将不胜感激。

我目前正在使用 php.gd 库,这是我拥有的唯一工具。

谢谢

【问题讨论】:

  • 我没有PHP经验,但是确定区域很简单。您所要做的就是计算每个对象有多少个白色像素。现在,要确定面积最大的对象是否是圆形,您可以使用这篇文章中的公式:stackoverflow.com/questions/24802059/removing-square-objects - 该公式表明,易于圆形的对象的比率接近 1,而非圆形物体的比例要低得多。您可以设置一个阈值来确定形状是否为圆形。
  • @rayryeng 感谢您的解决方案。你如何分别计算每个物体的面积?计算白色像素将为所有对象提供累积面积。
  • 我没有说要一起计算所有对象的面积——你单独计算每个对象的面积。 php.gd 只有非常基本的图像处理东西。您需要做的是执行连接组件标记 - homepages.inf.ed.ac.uk/rbf/HIPR2/label.htm - 这为每个唯一对象提供唯一标签。从那里,您可以遍历所有独特的标签并找到它们的总面积。我对 PHP 一无所知,所以我不知道你可以用什么库来做到这一点......但希望你能找到一些处理连接组件和 php.gd 的东西。
  • 我想我已经找到了办法。你知道我怎样才能在这些对象周围创建一个边缘。有什么特别的算法吗?
  • 有了 php.gd 中可用的内容,您可以使用任何标准的梯度估计技术。看看 php.gd 中的imageconvolution 方法:php.net/manual/en/function.imageconvolution.php - 使用这种方法,它需要一个 3 x 3 的卷积掩码。您可以尝试使用的 3 x 3 掩码是:$edgeMatrix = array(1,1,1,1,-8,1,1,1,1)。除数和偏移量都可以为 0 ($divisor = 0; $offset = 0;)。这是一个拉普拉斯掩码,也可以兼作边缘检测器。

标签: php image image-processing image-recognition image-segmentation


【解决方案1】:

检测图像中的边缘实际上非常简单。最标准的方法是使用image convolution 操作并选择正确的内核来扫描您的图像。 php.gd 中有一个名为 imageconvolution 的函数,您可以在其中指定输入图像、卷积核、除数和偏移量。除数只是将内核中的所有值除以该值,偏移量将一个值添加到内核中的每个值。因此,假设您的图像已加载到数组$im,您可以这样做:

$edgeMatrix = array(-1,-1,-1,-1,8,-1,-1,-1,-1);
$divisor = 0;
$offset = 0;

imageconvolution($im, $edgeMatrix, $divisor, $offset);

注意imageconvolution 会改变原始输入图像,因此$im 将包含边缘检测结果。确保您在某处拥有原始图像的副本以备不时之需。

$edgeMatrix = array(-1,-1,-1,-1,8,-1,-1,-1,-1); 是标准的Laplacian convolution matrix,经常用于边缘检测任务。

但是,有一个名为 imagefilter 的函数,其中有一个边缘检测标志 - IMG_FILTER_EDGEDETECT。此功能在给定几个选项之一的情况下过滤图像,边缘检测是这些选项之一。因此,您可以这样做:

imagefilter($im, IMG_FILTER_EDGEDETECT);

imageconvolution 一样,imagefilter 也会改变输入图像,因此请再次确保在需要时将原始图像保存在某个地方。

希望其中之一对您有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2020-02-08
    • 1970-01-01
    • 2017-12-15
    • 2012-04-29
    相关资源
    最近更新 更多