我需要一个解决方案来比较两个扫描的图像。我有一个申请表(未填写)的图像,我需要将其与同一表格的其他图像进行比较,并想检测是否有任何完全未填写的申请表。
我刚刚尝试使用Emgu CV AbsDiff,MatchTemplate等,但是它们都没有给我100%的匹配,即使我在同一扫描仪中扫描了两次相同的表格,也可能是因为扫描中的噪音,我可以应用公差,但问题是我需要找出用户是否在其中填写了任何东西。如果我应用公差,则不会检测到表单中的微小变化。
我还查看了Python图像库,Accord.Net 等,但找不到比较此类图像的方法。
关于如何进行这种类型的图像比较的任何建议?是否有任何免费或付费图书馆可用?
仅检查表单字段。没有干扰,更容易检测到微小的变化。您也不必检查每个像素。使用直方图或平均颜色。我使用了SimpleCV:
from SimpleCV import *
form = Image("form.png")
form_field = form.crop(34, 44, 200, 30)
mean_color = form_field.meanColor()[0] # For simplicity only red channel.
if mean_color < 253:
print "Field is filled"
else:
print "Field is empty"
或者查找特征。 例如角落、斑点或关键点。关键点将忽略噪点,并且在扫描不佳的情况下效果更好:
key_points = form_field.findKeypoints()
if key_points:
print "Field is filled"
key_points.show(autocolor=True)
else:
print "Field is empty"