python 中是否存在使用 OpenCL 加速进行内核大小大于 5 的中值滤波的现有库?
Is there any existing library for median filtering with kernel size greater then 5 using OpenCL acceleration in python?
预先感谢您的回答。
我尝试了很多 google 搜索,我看到了 scipy.sgnal.medfilt2,skimage.filters.median 但其中 none 支持 OpenCL。
但是此代码针对内核大小进行了硬编码:3。
OpenCV 有 UMat,透明 API 但它再次限制为内核大小 5。
如果您知道任何库可以在 python 中使用 openCL 以约 51 的内核大小进行中值过滤,那就太好了。
如果没有,我敢肯定,我不是第一个需要更大内核的中值滤波器的人,我很虚心地问为什么社区还没有解决它?有什么我不知道的技术挑战吗?请赐教。
再次感谢您的关注。
此致
嗯
您尝试过 cv::medianBlur
(8 位 CPU 版本)了吗?它的移动直方图实现使其相对于块半径的复杂度为 O(1),因此无论您有多少个内核,都很难在更大的半径上击败它。另一方面,令人尴尬的并行 OpenCL 版本使用中值排序网络。不幸的是,随着所需比较操作的数量增长得非常快,这种算法很快变得不切实际。
预先感谢您的回答。
我尝试了很多 google 搜索,我看到了 scipy.sgnal.medfilt2,skimage.filters.median 但其中 none 支持 OpenCL。
但是此代码针对内核大小进行了硬编码:3。
OpenCV 有 UMat,透明 API 但它再次限制为内核大小 5。
如果您知道任何库可以在 python 中使用 openCL 以约 51 的内核大小进行中值过滤,那就太好了。
如果没有,我敢肯定,我不是第一个需要更大内核的中值滤波器的人,我很虚心地问为什么社区还没有解决它?有什么我不知道的技术挑战吗?请赐教。
再次感谢您的关注。
此致
嗯
您尝试过 cv::medianBlur
(8 位 CPU 版本)了吗?它的移动直方图实现使其相对于块半径的复杂度为 O(1),因此无论您有多少个内核,都很难在更大的半径上击败它。另一方面,令人尴尬的并行 OpenCL 版本使用中值排序网络。不幸的是,随着所需比较操作的数量增长得非常快,这种算法很快变得不切实际。