cv::absdiff() 使用什么方法/算法
What methodology/algorithm does cv::absdiff() use?
OpenCV的cv::absdiff(InputArray src1, InputArray src2, OutputArray dst)
使用什么方法/算法?
对于 1 通道Mat
它是否计算src1
的每个像元/体素与体素在相同位置src2
之间的颜色距离?它是否计算强度差异或色差或其他?它是最坏情况、平均和最佳运行时 O(N)(其中 N 是Mat
中的体素数)?绝对差值是如何计算的?
就运行时复杂性而言,cv::canny()
比cv::absdiff()
慢还是快?速度差异是否显着?
>absdiff
是对矩阵的简单操作。它计算每个像素、每个通道的差值的绝对值。
操作为:
// pseudocode
Mat src1, src2, dst;
...
for each row : r
for each column : c
for each channel : ch
dst(r,c,ch) = abs(src1(r,c,ch) - src2(r,c,ch))
您可以看到复杂度为 O(N),其中 N = rows * cols * channels
,因为您必须扫描整个矩阵。这也是高度可优化的。
相反,Canny是一种算法,涉及很多步骤。我不知道它的复杂性,但它至少是 O(N),N
远大于 absdiff
.
所以,canny
比absdiff
慢得多,但这不是一个公平的比较。
OpenCV没有体素的概念。
相关文章:
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 有什么方法可以将元素添加到列表中,如图所示?
- 有什么方法可以将具有不同模板参数的模板类实例放入向量中?
- 通常使用什么方法来检测时间情况?
- 有什么方法可以包装自动类型扣除的助推"tee"流的构造?
- 有什么方法可以使用 int 变量来完成组件名称吗?
- C++ - 有什么方法可以将输入插入缓冲区/停止 cin.忽略需要输入?
- 有什么方法可以在标头中定义和声明 extern 对象吗?
- 终端进程终止,退出代码为:1有什么方法可以修复它吗
- 有什么方法可以从不同函数的变量中检索值吗?c++
- 有什么方法可以检测我的类的对象是否在堆栈上创建
- 当矢量改变容量时,有什么方法可以更新指针/参考值
- 计算机使用什么方法添加无符号整数
- 有什么方法可以延长C++中临时对象的生存期吗
- 有什么方法可以识别可用的内存地址吗?
- 有什么方法可以在 c++ 中组织"cycling"(循环)数字?
- 有什么方法可以"factor out"公共字段以节省空间?