【发布时间】:2012-11-18 18:16:13
【问题描述】:
过去两天我一直在浏览帖子和示例,我尝试过并经过广泛测试的所有 sn-ps 都被证明是毫无用处的,至少对我来说是这样。
我想做的是比较从墙上或一张纸上拍摄的黑色矢量符号(质量类似于人们可能会说的扫描不良的图像)并将其与相同或相似符号的电子版本进行比较(这将是本地存储并与照片进行比较)。请看一下附上的两张图片,第一张干净的(参考图片)是符号的数据库版本,第二张是我在一张纸上画的蹩脚的图画,然后我用我的 iPad 拍照。
我希望过程如下:
- 加载两个图像,然后使用我在此处找到的此修剪算法的修改版本进行修剪:Trimming images with PIL。我发现 50 的 'threshold' 值和 20 的 'obviousness' 值(链接脚本中的参数)为这些图像提供了良好的结果
- 然后将图像调整为相同大小并进行比较
现在为了比较,我尝试了很多不同的建议方法,但到目前为止结果很糟糕。实际上,我可以使用随机图像获得比测试图像更好的比较结果。我已经根据实际图像、它们的边缘(使用 ImageFilter.CONTOUR 或 ImageFilter.FIND_EDGES 的“过滤器”功能创建)、Pixel-Based Comparison 尝试了RMS difference comparison,但到目前为止我在网上没有找到任何东西(尽管我不断地谷歌搜索)或StackOverflow 给了我不错的结果。
我认为问题在于测试图像的嘈杂背景,但我无法证明这一点。有谁知道是否有办法从这些图像的边缘中获取矢量轮廓,并将它们不仅作为图像进行比较,而且作为图像矢量进行比较? 尽管我的画很糟糕,但我发现这两张图片非常相似,应该可以从中得到很好的比较。
【问题讨论】:
-
基于矢量的方法存在问题,您如何处理错误的杂散标记或具有不同纵横比的绘制图像?除了我的回答之外,如果您可以获得标准化图像,则使用特征脸(参见 wiki)的光栅化方法在这里可能很有用(尽管计算量很大并且需要一些线性代数)。
标签: python image image-processing computer-vision python-imaging-library