我正在开发一个软件项目,我必须将一组“输入”图像与另一组“源”图像进行比较,并找出它们之间是否存在匹配。不能以任何方式编辑/修改源图像;可以缩放/裁剪输入图像以找到匹配项。图像可以是任何尺寸的 BMP、JPEG、GIF、PNG、TIFF。
一个限制:我不允许使用任何外部库。ImageMagick 是一个例外,可以使用。
我打算使用 Java/Python。该软件纯粹基于命令行。
我正在阅读 SO 和一些常见的图像比较算法。我打算采取两种方法。1. 我可以使用直方图/桶来找出被比较的 2 个图像的 RGB 值。
2. 使用 SIFT/SURF 找到关键点描述符,并找到它们之间的欧式距离,并根据结果距离输出结果。
比较的 2 个图像可以是不同的格式。一个直观的想法是,在分析/比较之前,必须将 2 个图像转换为通用格式。我认为应该将图像转换为质量较低的图像,例如,如果 2 个输入图像是 BMP 和 JPEG,则将 BMP 转换为JPEG。这可以被认为是一个预处理步骤。
我的问题:是否需要将图像转换为通用格式?可以比较两张不同格式的图像吗?如果它们必须在比较之前进行转换,我假设从较高质量(BMP)到较低质量(JPEG)的比较是否正确?如果有人可以建议一些图像转换算法,那也会很有帮助。
编辑
如果在源图像中找到图案图像,则称找到匹配。例如,源图像由一个足球场和一名球员组成。如果图案图像包含的玩家与源图像中的玩家完全一样,那么它是匹配的。