我正在维度图像上执行NxN图像卷积 w和h,其中N远小于w或h。给定一个坐标alpha,我想计算一个保证位于边界内的新坐标safe_alpha。应该对边界外的坐标进行镜像。
即,如果
alpha = (w-1) +2;
然后
safe_alpha = (w-1) -2;
这将在GPU上运行,所以我宁愿避免计算中的条件。
仅镜像外边界很简单:
safe_alpha = -| (w-1) - alpha| + alpha;
但我需要反映两者。
编辑:
这似乎有用,但我不确定它是否是最快的:
safe_alpha = |alpha| + (alpha/(w-1)) * (alpha - (w-1));
答案 0 :(得分:0)
我不知道openCL细节,但您可以使用边缘处的适当卷积窗口来避免边缘数据镜像:卷积窗口值将使图像边缘值加倍。对于每4个边缘,您将需要N / 2个卷积窗口阵列(一次只是从原始N * N窗口导出),而角落则需要更多,但是没有条件,也没有任何设计。