P108
P105 定点误差分析与字长优化
1 像素误差是什么原因导致的?
在本书所说的算法中,像素误差是由几次定点运算累加导致的:
首先由行(列)号与定点正弦/正切值计算出该行(列)的小数平移量,然后将这些小数平移量截取一定字长用来计算插值核,再将这些插值核也截取一定字长后与定点像素完成插值计算,得出每步平移后的像素值。
为了合理得出每步运算的字长,本书采用了由后向前的推理策略,依据最终要求的旋转像素精度,依次推测出插值核、小数平移量、正弦/正切等参数的合理字长。
2 如何得出每步运算的字长
以三个定点计算模块为例:整数小数平移量计算单元、插值核计算单元、插值运算单元
(1)整数小数平移量计算单元
这部分的算法,每行的平移量的公式中涉及浮点减法,为避免a,/2量化带来的误差,在结构中将其扩大两倍,即所有中间变量的量化宽度都将增加1位,最终模块输出再右移1位,恢复原位宽(也就是计算过程中多加一位,等最终结果计算完,再减一位)
(2)插值核计算单元
插值核计算中为避免小数量化带来的误差,在结构中将其扩大两倍,故所有中间变量的量化宽度都将增加1位,最终模块输出再右移1位&#