【发布时间】:2021-10-28 17:43:15
【问题描述】:
我扫描了由不同喷墨打印机(爱普生、惠普、佳能等)打印的文档。每张照片都具有非常高的质量(例如 1.6GB),您可以放大并查看使用频率调制的图片的半色调。
我的任务是根据网格点、网格的图案、点的距离等进行特征提取。
相关特征是这些点的大小(每台打印机打印不同大小的这些点 - 必须计算平均值和标准差)。
稍后我将不得不使用 ML 训练一个模型,训练后的模型应该将打印分类到特定的打印机(所以基本上这个打印属于打印机 XYZ)。
但现在我已经在特征工程和预处理方面苦苦挣扎,因为这是我的第一个计算机视觉项目,而且我对 opencv 不太熟悉。
我有一个想法,我的计划是使用图像的 opencv 进行二进制转换,以通过 Sobel 或 Prewitt 滤波器或其他方式确定边缘(边缘检测)。 所以我认为我必须先进行一些模糊处理,然后再进行边缘检测?
我不确定这是否是正确的方法,所以我在这里问,你怎么看? 如果您能给我一些提示或步骤以获得最佳或好的方法,我会很高兴。
【问题讨论】:
-
您可以使用 cv2.inRange() 设置颜色阈值。一次选择一种颜色。然后可能使用 cv2.connectedComponentsWithStats() 来查找所有隔离区域及其大小。然后您可以获得所有区域的平均大小和标准差。或者,在阈值化之后,您可以获得每个孤立区域的轮廓并从中获取大小。
标签: python opencv computer-vision