ncR*_*ert 8 c++ algorithm computer-vision
我想尽可能高效地在C++程序中使用16位整数的二维数组执行绝对差值计算的可变块大小和.我对实时块匹配代码感兴趣.我想知道是否有可用的软件库?代码在Windows XP上运行,我使用Visual Studio 2010进行编译.CPU是2核AMD Athlon 64 x2 4850e.
通过可变块大小的绝对差值和(SAD)计算,我的意思如下.
我有一个较小的二维数组,我会称之为template_grid,一个较大的二维数组,我将称之为image.我想找到图像中的区域,该区域最小化模板中像素与图像中区域中像素之间的绝对差值之和.
在C++中计算SAD的最简单方法是:
for(int shiftY = 0; shiftY < rangeY; shiftY++) {
for(int shiftX = 0; shiftX < rangeX; shiftX++) {
for(int x = 0; x < lenTemplateX; x++) {
for(int y = 0; y < lenTemplateY; y++) {
SAD[shiftY][shiftX]=abs(template_grid[x][y] - image[y + shiftY][x + shiftX]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
特定阵列大小的SAD计算已在英特尔性能原语库中进行了优化.但是,我正在使用的数组不符合这些库中的大小.
我有两个搜索范围,
范围很大:范围Y = 45,范围X = 10
小范围:rangeY = 4,rangeX = 2
只有一个模板大小,它是:lenTemplateY = 61,lenTemplateX = 7