用公开照片量舰炮管长度,我把透视当成了比例尺
前阵子想核一条老驱逐舰主炮的口径和倍径,手头只有两张公开的靠港照:一张侧面近景,一张码头远景,拍摄时间差了两年。我一开始想直接量像素比例,结果两张算出来的倍径差了将近两倍,明显不对。
我的做法是先固定一个已知尺寸做基准。舰上栏杆高度、舷窗间距这类反复出现的构件,公开资料里能查到大致范围,用它先给每张照片单独标定。代码上就是把两点像素距离和已知实际长度做个比,得到该图的比例因子:
# pts 为像素坐标,real_len 为已知构件实际长度(米)
pix = ((pts[1][0]-pts[0][0])**2 + (pts[1][1]-pts[0][1])**2) ** 0.5
scale = real_len / pix # 米/像素
然后只量炮管在画面里接近正对镜头的那一段,斜着伸向画面深处的部分直接放弃。两张照片各算一次,取接近的那个值,另一个当异常值丢掉。
为什么这么处理:照片是透视投影,同一物体离镜头越远,单位实际长度占的像素越少,直接跨图比较像素没有任何意义。用已知构件标定,等于把每张图的局部比例单独校准,代价是只能量画面里和基准构件大致同一深度的东西,炮口伸出去那截本来就不该算。
失效的地方也很明确。基准构件本身如果被遮挡或角度太斜,标定误差会直接放大到结果上;广角镜头边缘畸变明显,靠近画面边角的炮管会量短;远景照里栏杆只有几个像素,量化误差能到百分之十几。我最早那次就是把远景照的栏杆当基准,算出来的数自己都不敢用。
现在这类照片我基本只用来判断“大概是哪个量级”,精确值还是回去找公开的装备手册或退役记录。你们量这类靠港照时,一般拿什么当基准构件?栏杆、舷窗还是甲板上的系缆桩?
0
赞同度 100% · 0 条评论 · 5 阅读
0 条评论
还没有评论,写下第一条。