进一步的想法
正如我在 cmets 中所解释的,我认为原始图像和扫描图像的配准将很重要,因为您的扫描不是完全水平的,也不是相同的尺寸。要进行粗略的配准,您可以找到一些希望在原始图像中独一无二的高对比度点。所以,假设我想要一个在左上角(称为tl.jpg),一个在右上角(tr.jpg),一个在左下角(bl.jpg),一个在右下角(@ 987654349@)。我可能会选择这些:
[]
[]3
我现在可以使用子图像搜索在原始图像和扫描图像中找到这些,例如:
compare -metric RMSE -subimage-search original.jpg tl.jpg a.png b.png
1148.27 (0.0175214) @ 168,103
这向我显示了找到子图像的位置,第二张(灰色)图像向我显示了图像实际所在的白色峰。它还告诉我子图像位于原始图像中的坐标 [168,103]。
compare -metric RMSE -subimage-search scanned.jpg tl.jpg a.png b.png
7343.29 (0.112051) @ 173,102
现在我知道同一点位于扫描图像中的坐标 [173,102] 处。所以我需要将 [173,102] 转换为 [168,103]。
然后我需要对其他子图像执行此操作:
compare -metric RMSE -subimage-search scanned.jpg br.jpg result.png
8058.29 (0.122962) @ 577,592
好的,所以我们可以得到 4 个点,原始图像中每个角附近的一个,以及它们在扫描图像中的对应位置。然后我们需要做一个仿射变换——我将来可能会做,也可能不会做。有注意事项here.
原答案
如果您能够提供一些示例图像来显示您对标签的预期问题,这将有所帮助。但是,假设您有这些:
标签.png
不开心.png
unhappy2.png
我只在它们周围放了一个红色边框,这样你就可以看到这个白色背景上的边缘。
如果您使用 Fred Weinhaus 的脚本 similar 来自他的出色 website,您现在可以计算原始图像和不满意图像之间的标准化互相关。因此,将原始标签和带有一条白色轨迹的标签放在一起,结果非常相似 (96%)
./similar label.png unhappy.png
Similarity Metric: 0.960718
如果我们现在尝试更不满意的一个,其中有两条轨道,它们不太相似 (92%):
./similar label.png unhappy2.png
Similarity Metric: 0.921804
好的,这似乎可行。我们现在需要处理偏移且大小不同的扫描,因此我将尝试修剪它们以仅获取重要的内容并将它们模糊以丢失任何噪声并调整为标准化大小以使用小脚本进行比较。
#!/bin/bash
image1=$1
image2=$2
fuzz="10%"
filtration="-median 5x5"
resize="-resize 500x300"
echo DEBUG: Preparing $image1 and $image2...
# Get cropbox from blurred image
cropbox=$(convert "$image1" -fuzz $fuzz $filtration -format %@ info:)
# Now crop original unblurred image and resize to standard size
convert "$image1" -crop "$cropbox" $resize +repage im1.png
# Get cropbox from blurred image
cropbox=$(convert "$image2" -fuzz $fuzz $filtration -format %@ info:)
# Now crop original unblurred image and resize to standard size
convert "$image2" -crop "$cropbox" $resize +repage im2.png
# Now compare using Fred's script
./similar im1.png im2.png
我们现在可以将原始标签与名为 unhappy-shifted.png 的新图像进行比较
./prepare label.png unhappy-shifted.png
DEBUG: Preparing label.png and unhappy-shifted.png...
Similarity Metric: 1
我们可以看到尽管被转移,但它们的比较相同。显然我看不到你的图像,它们有多嘈杂,你有什么样的背景,它们有多大,它们是什么颜色等等 - 所以你可能需要调整我刚刚完成中值过滤器的准备工作。也许您需要模糊和/或阈值。也许你需要去灰度。