我正在寻找最好的库来搜索两个不同图像中的相同区域,所有图像都以 JPEG 压缩,有很多噪音。我很难找到一个。问题是,如果您缩放 jpeg,您会看到它看起来像莫奈,我的意思是,噪声包含与原始图像没有直接链接的调色板。因此,我需要找到“最相似的数组”,而不是在图像中搜索相同的数组。
这些图片来自googlemap类似网站的随机截图,图片不能是jpeg以外的其他格式。
我尝试了很多手动方式。
我的方法之一是:
该算法有效,但我在一维数组中做所有事情,而且速度很慢。
是否有可以直接执行此算法的现有库?
我的算法是:
// Where SRC is the bigger image in which I search
// Offset is where in my small image I start to search
// Len is how long is my searched array
// Size is the size of the bigger image in which I'm searching.
// private Point simpleSearch(byte[] src, int offset, int len, byte[] search, Size size)
{
byte[] ddd = new byte[len];
Array.Copy(search, offset, ddd, 0, len);
int lowest = 100000000;
int locmatch = 0;
for (int i = 0; i < src.Length - len; i++)
{
int thed = 0;
for (int a = 0; a < len; a++)
{
int diff = Math.Abs(src[i + a] - ddd[a]);
thed += diff;
}
thed = thed / len;
if (thed < lowest)
{
lowest = thed;
locmatch = i-len;
}
}
int yy = (locmatch / size.Width);
int xx = locmatch - (yy * size.Width);
Point p = new Point(xx, yy);
return p;
}