神经网络用以变形文本矫正系列第六篇

0.前言

前一篇已经完成对于网络预测结果误差的统计,这一篇主要对逆映射进行介绍并进行相应的逆映射工作。

1.逆映射资料

主要参考https://wenku.baidu.com/view/85157fab43323968001c927b.html?qq-pf-to=pcqq.discussion这篇文档。文章中说道:平行投影不受深度信息的影响;物体在摄像机坐标系中的坐标即是世界坐标系中的尺寸。最后得出公式如下:


2.代码

根据以上公式写出代码如下:

def getRTranspose(pitch, roll, heading, isRotation):
    R = getRotationMatrix(pitch, roll, heading, isRotation)
    RMatrix = np.mat(R)
    return RMatrix.T

def perColInverseMapWorld(perColPixelPos, focalLength, pitchA, rollA, headingA, isRotation, tx, ty, tz):
    RTranspose = getRTranspose(pitchA, rollA, headingA, isRotation)
    T = getTranslationMatrix(tx, ty, tz)
    OW = -(RTranspose*T)
    ox = OW[0,0]
    oy = OW[1,0]
    oz = OW[2,0]
    DW = RTranspose*perColPixelPos
    dx = DW[0,0]
    dy = DW[1,0]
    dz = DW[2,0]    
    return ox,oy,oz,dx,dy,dz

3.结果

随机选择样本,进网络得到预测值,将预测值与样本坐标进行逆映射,最终得到的结果图如下:


可以看出,有一定的倾斜,大概有2.5度。

4.验证逆映射公式正确性

选择特定样本及正确的角度值进逆映射公式,得到结果图如下:


可以确定, 逆映射公式无误。

5.总结

1)确定了逆映射公式及其正确性

2)预测值偏差较大,分析原因有二:一是网络预测尚未达到足够精准的地步;二是结果不佳的只是个别情况

6.下一步工作

1)提高网络准确率

2)进行测试,预测值与真实值的误差记录之,观察规律

猜你喜欢

转载自blog.csdn.net/qq_35546153/article/details/80501893