C# 一种在另一幅有噪声图像中检测图像的算法
我正在搜索最好的库来搜索两个不同图像中的相同区域,所有图像都用JPEG压缩,并且有很多噪声。我很难找到一个。问题是如果你放大一个jpeg,你会看到它看起来像莫奈,我的意思是,噪声包含一个调色板,与原始图像没有直接的联系。因此,我需要找到“最相似的数组”,而不是在图像中搜索相同的数组 这些图像来自谷歌地图类似网站上的随机截图,并且这些图像不能采用jpeg以外的其他格式 我尝试了很多手动方式 我的方法之一是:C# 一种在另一幅有噪声图像中检测图像的算法,c#,.net,algorithm,ocr,detection,C#,.net,Algorithm,Ocr,Detection,我正在搜索最好的库来搜索两个不同图像中的相同区域,所有图像都用JPEG压缩,并且有很多噪声。我很难找到一个。问题是如果你放大一个jpeg,你会看到它看起来像莫奈,我的意思是,噪声包含一个调色板,与原始图像没有直接的联系。因此,我需要找到“最相似的数组”,而不是在图像中搜索相同的数组 这些图像来自谷歌地图类似网站上的随机截图,并且这些图像不能采用jpeg以外的其他格式 我尝试了很多手动方式 我的方法之一是: 将我的两个图像转换为较小的图像 在4bpp图像或更少颜色中更改它们 拍摄图像1的一小部分
// 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;
}
//其中SRC是我搜索的较大图像
//偏移量是我在小图像中开始搜索的位置
//Len是我搜索的数组有多长
//Size是我正在搜索的较大图像的大小。
//专用点simpleSearch(字节[]src,整数偏移量,整数长度,字节[]搜索,大小)
{
字节[]ddd=新字节[len];
数组.Copy(搜索、偏移、ddd、0、len);
int最低=100000000;
int locmatch=0;
对于(int i=0;i
是的,相关或光谱特征是判断两个图像区域有多相似的方法。但我认为这里真正需要的是一种算法,能够有效地搜索重叠区域
是计算机视觉中一个定义明确的问题,它试图找出图像的哪些部分对应于另一图像的哪些部分。有两种基本的算法
还有一种方法将复杂性降低到对数级 那么平移/旋转/缩放不变性呢?对不起,我在我的开发者小泡泡里。这些是在类似谷歌地图的地图上随机拍摄的截图,所以平移不变,旋转不变,比例不变。二维互相关?我认为甚至可以用二维FFT加速。哇,非常好的建议。非常感谢。如果你能把它作为一个答案,我会接受它,因为我明白你的意思。无论如何,我知道所有其他答案都是关于emgucv的。非常感谢你与算法的直接链接。我在考虑类似于四叉树算法的东西。你从一个非常小的图像开始,然后在每一步,放大更相似的图像。有了你的回答,我应该做一些有效的事情。