Python:检测和参数化图像矩阵中的简单矩形/高斯条纹图案

2024-05-31 23:31:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个很好的解决方案来检测和描述(有噪声的)矩阵图像中的矩形图案。 下面给出了一个例子:

Pattern

图像是单色的,颜色只是指示像素的值

如何检测这些矩形并以参数化方式保存它们? 到目前为止,我还没有尝试过任何东西,但我的前进方向是通过检测特定区域内阈值上的值差异来检测边缘


Tags: 图像区域参数颜色方式矩阵阈值像素
1条回答
网友
1楼 · 发布于 2024-05-31 23:31:52

我使用ImageMagick在命令行中实现了这一点,但在Python中使用基于ImageMagick或使用模板匹配的OpenCVwand也可以实现同样的功能

基本上,您要查找的形状是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

这将产生以下输出:

enter image description here

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

enter image description here


另一种方法是使用Numpy计算图像中所有列的平均值,然后查找暗区域:

columnMeans = np.mean(im, axis=0)

enter image description here

相关问题 更多 >