在过去的两天里,我一直在浏览帖子和示例,我尝试过并经过广泛测试的所有片段都被证明是毫无用处的,至少对我来说是这样。
我想做的是比较从墙上或纸上拍摄的黑色矢量符号(质量类似于人们可能会说的扫描不良的图像),并将其与相同或相似符号的电子版本(将存储在本地和与照片相比)。请看一下所附的两张图片,第一张干净的(参考图片)是符号的数据库版本,第二张是我在一张纸上画的蹩脚的图画,然后用我的 iPad 拍照。
我希望程序如下:
- 加载这两个图像,然后使用我在此处找到的此修剪算法的修改版本进行修剪:使用 PIL 修剪图像。我发现 50 的“阈值”值和 20 的“明显性”值(链接脚本中的参数)为这些图像提供了良好的结果
- 然后将图像调整为相同大小并进行比较
现在为了比较,我尝试了很多不同的建议方法,但到目前为止结果很糟糕。实际上,我可以通过随机图像获得比测试图像更好的比较结果。我已经尝试了基于实际图像的RMS 差异比较,它们的边缘(使用 ImageFilter.CONTOUR 或 ImageFilter.FIND_EDGES 的“过滤器”函数创建),基于像素的比较,但到目前为止我在网上找不到任何东西(尽管我不断地谷歌搜索)或者在 StackOverflow 中给了我不错的结果。
我认为问题在于测试图像的嘈杂背景,但我无法证明这一点。有谁知道是否有办法从这些图像的边缘中获取矢量轮廓,并将它们不仅作为图像进行比较,而且作为图像矢量进行比较?尽管我的画很糟糕,但我发现这两张图片非常相似,应该可以从中得到一个很好的比较。