gpt4 book ai didi

c++ - 中值滤波器 OpenMP 优化

转载 作者:行者123 更新时间:2023-11-30 05:21:04 25 4
gpt4 key购买 nike

我正在尝试使用 CImg 库并行化中值滤波器。代码看起来很简单:

void omp_median_filter(CImg<float> & img) {
CImg<float> copy(img);
size_t i;
#pragma omp parallel for schedule(dynamic)
for (i = 1; i < img.width()-1; i++) {
for (size_t j = 1; j < img.height()-1; j++) {
for (size_t k = 0; k < img.spectrum(); k++) {
img(i, j, k) = getNeighboursMedian(copy, i, j, k);
}
}
}
}

getNeighboursMedian 函数与这种情况无关,但无论如何:

float getNeighboursMedian(CImg<float> & img, int i, int j, int k) {
float neighbours[9];
int kk = 0;
for (size_t ii = i-1; ii <= i+1; ii++) {
for (size_t jj = j-1; jj <= j+1; jj++) {
neighbours[kk++] = img(ii,jj,k);
}
}
sort(&neighbours[0], &neighbours[8]);
return neighbours[4];
}

我的问题是:我可以使用任何额外的 pragma 参数来让它运行得更快吗?我一直在尝试一些事情,但没有人能提高算法的性能……我一无所知。

提前致谢。

最佳答案

也许你应该看看 CImg 方法的代码 CImg<T>::blur_median() .它还通过 openMP 并行化实现了中值滤波器。在文件中搜索 CImg.h .

关于c++ - 中值滤波器 OpenMP 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40401856/

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