- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试增强 stereobm(Opencv 立体 block 匹配)。他们声称该算法使用 SAD cost_function 方法。 (ABOSLUE 差异的 SAD 总和)。
但是在代码中他们以这种方式计算了 SAD:
for( y = -dy0; y < height + dy1; y++, cbuf += ndisp, cbuf_sub += ndisp,
hsad += ndisp, lptr += sstep, lptr_sub += sstep, rptr += sstep )
{
int lval = lptr[0];
for( d = 0; d < ndisp; d++ )
{
int diff = std::abs(lval - rptr[d]);
cbuf[d] = (uchar)diff;
hsad[d] = hsad[d] + diff - cbuf_sub[d];
}
htext[y] += tab[lval] - tab[lptr_sub[0]];
}
......
sad[d] = (int)(hsad0[d-ndisp*dy0]*(wsz2 + 2 - dy0));
// *******************************
Instead of
//....
hsad[d] = hsad[d] + diff ;
// .....
sad[d] = hsad[d]
那么,为什么他们用 *(wsz2 + 2 - dy0)) 进行乘法运算?
以及为什么他们从 hsad[d] 中减去 cbuf_sub[d](hsad[d] = hsad[d] + diff - cbuf_sub[d];)
最佳答案
是的,OpenCV StereoBM 确实是基于 SAD。
当你在y方向滑动滑动窗口一行时,你不必重新计算整个窗口的SAD。相反,您将新行的 SAD 添加到窗口的 SAD。此外,您还可以从中减去不再位于窗口中的行的 SAD。
换句话说,一旦有了初始窗口的 SAD,就开始滑动窗口,只将新加入窗口的部分添加到 SAD 中,减去窗口中不再存在的部分,作为窗口已经通过了。
这正是 OpenCV 代码中所做的:
hsad[d] = hsad[d] + diff - cbuf_sub[d];
...
int currsad = sad[d] + hsad[d] - hsad_sub[d];
你对处理边界大小写的 sad[] 初始化代码感到困惑:
// initialize sums
for( d = 0; d < ndisp; d++ )
sad[d] = (int)(hsad0[d-ndisp*dy0]*(wsz2 + 2 - dy0));
第一个窗口的前半部分是这样初始化的。这意味着第一行之前的行的 hsad 值与第一行的 hsad 值相同。在这段代码之后是初始化窗口另一半的代码,其中 hsad 值已经来自有效行。
关于c++ - opencv stereobm,真的是基于SAD代价函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507865/
为大家分享一组极度闷骚的讨红包表情,聊天发状态可以有!讨红包的主人公是一只嫉妒闷骚的绿皮青蛙,名为sad frog,希望大家会喜欢。 &
平安夜没人约,圣诞节没人约,今后的节日都没人约,反倒是得看情侣们在网上各种秀恩爱,人生如此艰难,为何要虐单身狗呢? &nb
我正在实现一个 JAVA 程序来查找不同图像帧之间的相似性。目前我正在使用两种不同的算法来实现这一目标。基本上我将图像划分为 n*n 像素 block 并计算 SAD为他们进行比较。现在我的主要问题是
我有文本文件: # How often update data period=30 #For Location location=London.uk 我想在标准输出上打印: London.uk 当我使
我正在尝试编写 16 个 uint8_t 大小输入的绝对差和的 NEON 版本: inline static int f_sad_16(const uint8_t* a, const uint8_t*
我对 ARM 和 NEON 编程相当陌生,我被赋予了优化 SAD(绝对差和)函数的任务。我不知道从哪里开始,我尝试了几种生成 NEON 代码的方法但没有成功。顺序函数看起来像这样: void sad_
所以我想用“HAPPY”替换所有快乐的表情符号,反之亦然用“SAD”替换文本文件的悲伤表情符号。但是代码无法正常工作。虽然它检测到笑脸(截至目前 :-)),但在下面的示例中它没有用文本替换表情符号,它
如果我们从 SAD 算法计算出视差值,我们如何使用该视差值来制作视差图?他们有什么方法吗? 最佳答案 当您使用 SAD 算法计算视差值时,您会得到每个像素的视差值。假设您有两张尺寸为 100x100(
我有两个 uint8_t 数组,它们都有 64 个元素。我想出的“最佳”方法是加载 4x 16 个元素,将它们放入两个 m128i 寄存器,然后将它们都放入一个 m256 寄存器。这是为两个 uint
网络应用在这里: http://www.digitaltransitions.com/visualizer/visualizer.html 主要的javascript在这里: http://www.d
我刚开始学习 Python 几天,所以请原谅我的粗暴工作。 def sum_digits(n): s = 0 while n: s += n % 10
我是一名优秀的程序员,十分优秀!