我对使用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/