/// <summary> /// 相对定向元素计算 /// </summary> /// <param name="data">数据</param> /// <param name="cam">相机参数</param> public RelativeOrientation(List <Dictionary <string, double> > data, CameraPara cam) { this._data = data; this._cam = cam; InitialFactor(); }
private void toolStripMenuItem2_Click(object sender, EventArgs e) { var ofd = MyOpenFileDialog("选择相机参数文件", "文本文件(*.txt)|*.txt"); if (ofd == null) { return; } try { _camPara = new CameraPara(ofd.FileName); textBox1.Text = _camPara.Type; textBox2.Text = _camPara.WidthPix.ToString("##.0"); textBox3.Text = _camPara.HeightPix.ToString("##.0"); textBox4.Text = _camPara.f.ToString("##.00"); textBox5.Text = _camPara.PixSize.ToString("##.0000"); textBox6.Text = _camPara.MainPosX.ToString("0.000"); textBox7.Text = _camPara.MainPosY.ToString("0.000"); MessageBox.Show(Resources.MainForm_OpenSucc, Resources.Prog_Name, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message, Resources.Prog_Name, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }
/// <summary> /// 像平面坐标转换,拷贝自作业-1 /// </summary> /// <param name="data">匹配线数据</param> /// <param name="cam">相机参数</param> public ImagePaneCoord(List <DataList> data, CameraPara cam) { this._camData = cam; // PPT:4-1.P9 什么鬼,怎么突然这么简单了,害我调试了10分钟…………………… /*_l0 = (_camData.WidthPix - 1) / 2.0 + _camData.MainPosXPix; * _h0 = (_camData.HeightPix - 1) / 2.0 + _camData.MainPosYPix;*/ this._l0 = cam.MainPosXPix; this._h0 = cam.MainPosYPix; MakeMatchList(data); }
/// <summary> /// 后方交会处理 /// </summary> /// <param name="data">匹配线数据</param> /// <param name="cam">相机参数</param> /// <param name="dir">左影像或者右影像</param> public BackMatch(List <DataList> data, CameraPara cam, string dir) { if (data.Count < 4) { throw new FormatException("进行单张像片的空间后方交会,至少应有三个已知三维坐标的地面控制点!"); } this.HasProcessed = false; this._camData = cam; // PPT:4-1.P9 _l0 = (_camData.WidthPix - 1) / 2.0 + _camData.MainPosX / _camData.PixSize; _h0 = (_camData.HeightPix - 1) / 2.0 + _camData.MainPosY / _camData.PixSize; MakeMatchList(data, dir); }
/// <summary> /// 前方交会 /// </summary> /// <param name="left">左影像的后方交会结果</param> /// <param name="right">右影像的后方交会结果</param> /// <param name="tar">要匹配的点</param> /// <param name="cam">相机参数</param> public FrontMatch(BackMatch left, BackMatch right, List <DataList> tar, CameraPara cam) { this.HasProcessed = false; this._l = left; this._r = right; this._cam = cam; this._targetList = tar; _l0 = (cam.WidthPix - 1) / 2.0 + cam.MainPosX / cam.PixSize; _h0 = (cam.HeightPix - 1) / 2.0 + cam.MainPosY / cam.PixSize; MakeTargetList(tar); this._r1r2 = GetR1R2(); this._bUvw = CalcBaselineB(); }