如何将生成的不规则像素网格重采样为规则网格?
卷帘快门畸变校正后不规则网格重采样方案
方案1:前向散点累加插值(直接适配你已有的计算结果)
- 先初始化和目标规则网格尺寸一致的两个矩阵:空像素矩阵
dst_img、权重累加矩阵weight_map,初始值全部设为0 - 遍历所有源图像像素
(src_x, src_y),读取你已经计算得到的该像素在目标平面的坐标(dst_x, dst_y) - 计算
(dst_x, dst_y)周围4个相邻的整数规则格点坐标,按照双线性插值的距离权重,将src_img[src_x][src_y]的像素值拆分后累加到dst_img的4个对应格点上,同时将对应权重累加到weight_map的相同位置 - 所有源像素遍历完成后,将
dst_img每个位置的累加值除以weight_map对应位置的权重值,得到最终像素;权重为0的孔洞区域可用邻域插值补全
小提示:如果对速度要求高于精度,可以直接将(dst_x, dst_y)取整后给对应格点赋值,操作更简单但会存在少量孔洞和重影
方案2:拟合反向映射场(适配你熟悉的Target-to-Source逻辑)
- 你已经得到了全量的映射对:
源坐标(src_x, src_y) → 目标不规则坐标(dst_x, dst_y),将所有映射对反转得到散点映射集(dst_x, dst_y) → (src_x, src_y) - 用2D薄板样条插值/双三次插值对上述散点集做拟合,得到连续的反向映射函数,输入任意目标规则网格的坐标
(x, y)都可以输出对应的源图像坐标 - 之后就可以沿用你熟悉的Target-to-Source逻辑,遍历每个目标规则像素,查找对应源坐标插值取像素值即可
针对卷帘快门场景的专属优化
卷帘快门畸变是逐行曝光的时间差导致的,同一行像素的y方向偏移一致,x方向偏移是连续曲线,你可以逐行做1D插值拟合映射关系,不需要全图做2D计算,速度能提升3~5倍。
内容的提问来源于stack exchange,提问作者Photo_Survey
相关产品推荐
相关产品推荐

