/// <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();
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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();
        }