gpt4 book ai didi

c++ - cv::absdiff() 使用什么方法/算法?

转载 作者:行者123 更新时间:2023-11-30 01:41:12 25 4
gpt4 key购买 nike

OpenCV 的 cv::absdiff(InputArray src1, InputArray src2, OutputArray dst) 使用什么方法/算法?

对于 1 channel Mat,它是否计算 src1 的每个单元格/体素与 src2 相同位置的体素之间的颜色距离>?它是否计算强度差异或色差或其他?它是最坏情况、平均情况和最佳情况的运行时间 O(N)(其中 N 是 Mat 中的体素数)?如何计算绝对差值?

就运行时复杂性而言,cv::canny()cv::absdiff() 慢还是快?速度差异显着吗?

最佳答案

absdiff是对矩阵的简单操作。它为每个 channel 计算每个像素的差异的绝对值。

操作是:

// 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相反是一个算法,带有lot of steps involved .我不知道它的复杂性,但它至少是 O(N),并且 Nabsdiff 大得多。

因此,cannyabsdiff 慢得多,但这不是一个公平的比较。


OpenCV 没有体素的概念。

关于c++ - cv::absdiff() 使用什么方法/算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41759804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com