我最近注意到我的旋转算法输出中有异常伪影。我使用将来自目标矩阵的高密度点投影到源图像上的实现来计算来自源像素的贡献的相对比率。这些值被缓存以允许通过展开的循环进行非常快速的旋转。
问题是由舍入行为引起的,最好从一维采样策略的上下文中说明这一点:
如果中心为 0.0 并在任一方向平移 0.9,则四舍五入时仍为 0
short(+0.9) == 0
short(-0.9) == 0
但是,如果中心为 1.0 并在任一方向平移 0.9,则
short(+0.1) == 0
short(+1.9) == 1
与原点 1 个单位距离内的任何点在四舍五入时都归于原点。这会导致对源图像中靠近轴原点的点进行过采样。解决方案是在执行舍入操作时将浮点坐标深度转换为正空间,然后将其转换回原点。
我的问题:有没有办法在不转化为正空间的情况下避免这种舍入错误?