图像分割和图像识别 - 如何识别黑色背景图像中白色斑块的坐标?

时间:2015-04-08 03:42:30

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

目标:找到面积最大的白色补丁。如果可能的话,确认它是否是一个圆圈。然后找到此贴片的平均中心和半径。

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

我正在努力实现这个目标,如果有人能指导我朝着正确的方向前进,我会非常感激。

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

由于

1 个答案:

答案 0 :(得分:2)

检测图像中的边缘实际上非常简单。最标准的方法是使用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也会改变输入图像,因此如果需要,请再次确保将原始图像保留在某处。

希望其中一个适合你!