gpt4 book ai didi

c++ - OpenCV vector x矩阵互相关

转载 作者:行者123 更新时间:2023-12-02 17:21:26 25 4
gpt4 key购买 nike

我发现的所有打开的CV示例似乎都与2D图像上的2D内核有关。

我有一个1d内核,正在寻找一个操作,该操作每行将返回导致最大相关性的值和偏移量。

直接C++,我的代码如下所示:

    vector<int> offset(img.rows);
vector<int> amp(img.rows);
std::vector<double> corrs(MAX_SEARCH);

for(int row = 0; row< img.rows; row++){
row_data = img.row(row)
for (int i = 0; i < MAX_SEARCH; i++) {
double correlation = 0;
for (int j = 0; j < wfm.size(); j++) {
correlation += (wfm[j] * row_data[i+j]);
}
corrs[i] = correlation;
}

amp[row] = *std::max_element(corrs.begin(), corrs.end());
offest[row] = std::max_element(corrs.begin(), corrs.end()) - corrs.begin();
}

我正在寻找的关键是能够利用一些我认为OpenCV应该能够做到的单指令多数据优化的优势,或者如果OpenCV无法实现这一目标,那么如何重写此代码来实现所以。

最佳答案

如果使用的是OpenCV功能,则需要使用SIMD支持为计算机构建OpenCV。或者,您可以在OpenCV论坛上关注this solution

对于您的代码,我可能建议您使用OpenMP。很容易添加。您只需在最后一个for循环之前添加#pragma omp simd。然后用-fopenmp编译。 Here是了解OpenMP的简单教程。并将其documentation放在simd选项上。

关于c++ - OpenCV vector x矩阵互相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62029138/

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