裁剪/缩放图像后相机内参(f_x,f_y,c_x,c_y)如何变化?
相机裁剪/缩放后的内参计算(无畸变场景)
针对你用Realsense录制的ROS bag,原分辨率848×480、无畸变内参已知的情况,直接给出两种场景的参数变化规则:
1. 裁剪图像(仅顶部裁切)后的内参变化
假设你裁切了顶部h_crop像素,新图像分辨率为848 × (480 - h_crop):
- 焦距f_x、f_y:完全不变。裁切只是丢弃部分成像区域,未改变相机硬件透视关系,像素焦距是相机固有参数,与图像裁切无关。
- 主点c_x:完全不变。仅裁切顶部时图像宽度未变,主点水平像素位置不受影响(只有裁切左右两侧时c_x才会变化:比如左裁
w_left像素,新c_x = 原c_x - w_left)。 - 主点c_y:原c_y减去裁切的顶部像素数,即
新c_y = 原c_y - h_crop。
示例
原内参:f_x=615, f_y=615, c_x=424, c_y=240(对应848×480的中心主点),裁切顶部80像素后:
新内参:f_x=615, f_y=615, c_x=424, c_y=240-80=160,新分辨率848×400。
2. 仅缩放图像后的内参变化
假设将原图像(或裁切后的图像)缩放到新分辨率W_new × H_new:
- 先计算缩放因子:
s_x = W_new / 原宽度,s_y = H_new / 原高度(等比例缩放时s_x=s_y) - 新焦距:
f_x_new = 原f_x × s_x,f_y_new = 原f_y × s_y - 新主点:
c_x_new = 原c_x × s_x,c_y_new = 原c_y × s_y
示例
原分辨率848×480,原内参f_x=615, c_x=424,缩放到640×360:s_x=640/848≈0.7547,新f_x=615×0.7547≈464,新c_x=424×0.7547≈320(对应640的中心)。
补充:裁切+缩放的组合场景
先按裁切规则计算裁切后的内参,再将裁切后的图像和内参代入缩放规则,得到最终内参即可。
内容的提问来源于stack exchange,提问作者vanguard478
相关产品推荐
相关产品推荐

