2024-05-31 23:31:52 发布
网友
我正在寻找一个很好的解决方案来检测和描述(有噪声的)矩阵图像中的矩形图案。 下面给出了一个例子:
图像是单色的,颜色只是指示像素的值
如何检测这些矩形并以参数化方式保存它们? 到目前为止,我还没有尝试过任何东西,但我的前进方向是通过检测特定区域内阈值上的值差异来检测边缘
我使用ImageMagick在命令行中实现了这一点,但在Python中使用基于ImageMagick或使用模板匹配的OpenCV的wand也可以实现同样的功能
基本上,您要查找的形状是7x106像素。因此,我制作了一个正是这种形状的黑条,并要求ImageMagick在图像的灰度副本中查找与这种实心黑条最接近的最佳位置:
制作黑条:
magick -size 7x106 xc:black png8:bar.png
使您的图像灰度化:
magick stripes.png -colorspace gray gstripe.png
搜索图像中的最佳黑条:
magick compare -dissimilarity-threshold 1 -metric RMSE -subimage-search gstripe.png bar.png r.png 24655.4 (0.376218) @ 33,29
这将产生以下输出:
33,29告诉我条的左上角。因此,我现在在那里绘制一个白色矩形,以隐藏第一个条并查找第二个条:
33,29
magick gstripe.png -fill white -draw "rectangle 33,29 40,135" gstripe2.png magick compare -dissimilarity-threshold 1 -metric RMSE -subimage-search gstripe2.png bar.png r.png 30287.3 (0.462155) @ 162,32
这告诉我第二个条在坐标处162,32:
162,32
另一种方法是使用Numpy计算图像中所有列的平均值,然后查找暗区域:
columnMeans = np.mean(im, axis=0)
我使用ImageMagick在命令行中实现了这一点,但在Python中使用基于ImageMagick或使用模板匹配的OpenCV的wand也可以实现同样的功能
基本上,您要查找的形状是7x106像素。因此,我制作了一个正是这种形状的黑条,并要求ImageMagick在图像的灰度副本中查找与这种实心黑条最接近的最佳位置:
制作黑条:
使您的图像灰度化:
搜索图像中的最佳黑条:
这将产生以下输出:
33,29
告诉我条的左上角。因此,我现在在那里绘制一个白色矩形,以隐藏第一个条并查找第二个条:这告诉我第二个条在坐标处
162,32
:另一种方法是使用Numpy计算图像中所有列的平均值,然后查找暗区域:
相关问题 更多 >
编程相关推荐