图像分割和图像识别 - 如何识别黑色背景图像中白色块的坐标?
Image segmentation and Image Recognition - How to recognise the coordinates of a white patch in a black background image?
目的:找到面积最大的白色块。如果可能,请确认它是否是一个圆圈。然后找到这个补丁的平均中心和半径。
我想过在图像周围创建一个边缘,但我不知道这将如何帮助找出补丁的区域。
我正在努力完成这个,如果有人能指导我正确的方向,我将不胜感激。
我目前正在使用 php.gd 库,这是我唯一的工具。
谢谢
检测图像的边缘其实很简单。最标准的方法是使用 image convolution operation and choosing the right kernel to sweep over your image. There is a function in php.gd
called 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
也会改变输入图像,因此再次确保在需要时将原始图像保存在某个地方。
希望其中之一对您有用!
目的:找到面积最大的白色块。如果可能,请确认它是否是一个圆圈。然后找到这个补丁的平均中心和半径。
我想过在图像周围创建一个边缘,但我不知道这将如何帮助找出补丁的区域。
我正在努力完成这个,如果有人能指导我正确的方向,我将不胜感激。
我目前正在使用 php.gd 库,这是我唯一的工具。
谢谢
检测图像的边缘其实很简单。最标准的方法是使用 image convolution operation and choosing the right kernel to sweep over your image. There is a function in php.gd
called 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
也会改变输入图像,因此再次确保在需要时将原始图像保存在某个地方。
希望其中之一对您有用!