1. 从针孔到透镜:相机成像的进化史
记得我第一次拆解老式胶片相机时,发现它的结构简单得令人惊讶——就是一个带小孔的暗箱。这种针孔相机模型至今仍是计算机视觉领域的基石,但现代相机早已不是那个简陋的暗盒。我们手机里的摄像头,其实经历了从物理小孔到复杂透镜组的跨越式发展。
为什么需要透镜?试过用针孔相机拍照的人都知道,要获得清晰图像需要极长的曝光时间。我在实验室做过对比:相同光照下,针孔相机需要30秒曝光,而加上透镜组后仅需1/100秒。透镜通过折射汇聚更多光线,但代价是引入了畸变这个"不速之客"。就像透过鱼缸看物体,直线会变成曲线,这就是我们接下来要解决的难题。
2. 针孔相机模型:三维到二维的魔法
2.1 小孔成像的数学表达
中学物理课的小孔成像实验,其实藏着计算机视觉的核心密码。当我在黑板上推导这个模型时,发现它用简单的相似三角形就解释了三维世界到二维图像的转换:
实际物体高度/像高 = 物距/像距
但这个理想模型需要三个关键假设:
- 孔径无限小(实际做不到)
- 成像平面无限大(显然不可能)
- 环境绝对黑暗(现实中总有杂光)
在代码中,我们用3×4的投影矩阵表示这个过程:
import numpy as np
def pinhole_project(world_points, K, R, t):
"""
world_points: Nx3的物体坐标
K: 3x3内参矩阵
R: 3x3旋转矩阵
t: 3x1平移向量
"""
camera_coords = R @ world_points.T + t.reshape(3,1)
image_points = K @ camera_coords
image_points = image_points[:2] / image_points[2] # 齐


3086

被折叠的 条评论
为什么被折叠?



