Image processing 可分离高斯模糊-优化垂直通道

Image processing 可分离高斯模糊-优化垂直通道,image-processing,x86,sse,simd,gaussianblur,Image Processing,X86,Sse,Simd,Gaussianblur,我已经实现了可分离高斯模糊。通过SIMD处理,水平孔型相对容易优化。然而,我不知道如何优化垂直传球 访问元素对缓存不是很友好,填充SIMD通道将意味着读取许多不同的像素。我正在考虑转置图像,运行水平传递,然后转置图像,但是,我不确定是否会因为两个转置操作而获得任何改进 我有相当大的图像,分辨率为16k,内核大小为19,所以垂直通道增益的矢量化约为15% 我的垂直过程如下所示(它是输入到T的sinde泛型类,可以是uint8\u T或float): intystart=kernelHalfSize

我已经实现了可分离高斯模糊。通过SIMD处理,水平孔型相对容易优化。然而,我不知道如何优化垂直传球

访问元素对缓存不是很友好,填充SIMD通道将意味着读取许多不同的像素。我正在考虑转置图像,运行水平传递,然后转置图像,但是,我不确定是否会因为两个转置操作而获得任何改进

我有相当大的图像,分辨率为16k,内核大小为19,所以垂直通道增益的矢量化约为15%

我的垂直过程如下所示(它是输入到T的sinde泛型类,可以是uint8\u T或float):

intystart=kernelHalfSize;
int xStart=kernelHalfSize;
int yEnd=input.GetWidth()-kernelHalfSize;
int xEnd=input.GetHeigh()-kernelHalfSize;
常量T*inData=input.GetData().data();
V*outData=output.GetData().data();
int kn=内核半尺寸*2+1;
int kn4=kn-kn%4;
对于(int y=yStart;y