opencv - OpenCV GPU卷积功能和缺少的边框

标签 opencv cuda border gpu convolution

我对使用GPU加速的OpenCV中的卷积函数有疑问。
使用GPU的卷积速度大约快3.5

运行时:

convolve(src_32F, kernel, cresult, false, cbuffer);

但是,图像边框丢失(逐渐增加)

否则结果非常好(内核尺寸为60x60)

谢谢

最佳答案

这就是卷积的工作方式。

它将每个像素的值计算为周围像素的加权平均值。因此,如果考虑到每边30个像素,对于比30个像素更靠近图像边框的所有像素,将不定义卷积。

在CPU的过滤功能实现中,根据给定的策略(复制,镜像,空白等),为那些丢失的像素补充了虚假值。

您可以做的是在较大的矩阵中手动填充所需值的矩阵,过滤较大的矩阵,然后将其裁剪回去。为此,您可以使用gpu::copyMakeBorder()函数。

关于opencv - OpenCV GPU卷积功能和缺少的边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8549673/

相关文章:

python - OpenCV python:如何使用渐变和第一个点画一条线?

c++ - 在 OpenCV C/C++ 中只过滤掉一个轮廓

cuda - CUDA 全局内存交易的成本

css - IE10 - 使用 CSS 样式高度并在聚焦于 SELECT 元素时添加边框需要用户双击 SELECT 元素

javascript - jQuery 单击 div 的边框

opencv - 使用 SVM 进行实时面部表情分类

opencv - 使用深度信息的物体识别算法建议

c++ - rint 不存在于 Visual Studio 2010 math.h 中,相当于 CUDA rint

c++ - CUDA,使用共享内存可以提高我的性能吗?

html - 在黑色父边框上设置透明背景色 div