影像图配准代码实现

以下为影像图配准程序。其中pointTo1-4的坐标值是其中的一幅CAD数据通过ArcMap工具手工配准后生成的地理坐标得到的。

private void geoReferencing()

        {

            /*配准主要使用IGeoReference这个接口来完成工作。

              还有使用ActiveView来进行坐标转换,将MapControl中鼠标的点击位置转换为

              地图和影像图上的坐标。

              下面介绍IGeoReference接口

               首先RasterLayer实现了这个接口

               CanGeoRef 监测该图层是否可以做配准

               PointsTransform 将鼠标的位置转换为栅格文件上的相对坐标。

               Rectify 将纠正的结果保存为一个新的栅格文件相当于另存为

                        

             */

 

           

            //如何确定图片与georeference的关系

            IGeoReference pGeoreference ;

            IRasterLayer pRasterLayer = new RasterLayerClass();

            pRasterLayer = (IRasterLayer)axMapControl1.get_Layer(0);// mapMain.Layer(0)

            pGeoreference = (IGeoReference)pRasterLayer;

            IRaster pRaster = pRasterLayer.Raster;

       

            if (pGeoreference.CanGeoRef == true)

            {

                IPointCollection frmPoint = new Multipoint();

                IPointCollection toPoint = new Multipoint();

               

                IPoint pointFrm1 = new PointClass();

                IPoint pointFrm2 = new PointClass();

                IPoint pointFrm3 = new PointClass();

                IPoint pointFrm4 = new PointClass();

               

                pointFrm1.PutCoords(0.0, 0.0);

                pointFrm2.PutCoords(5000.0, 0.0);

                pointFrm3.PutCoords(0.0, -5000.0);

                pointFrm4.PutCoords(5000.0, -5000.0);

              

                object missing = Type.Missing;

 

                frmPoint.AddPoint(pointFrm1, ref missing, ref missing);

                frmPoint.AddPoint(pointFrm2, ref missing, ref missing);

                frmPoint.AddPoint(pointFrm3, ref missing, ref missing);

                frmPoint.AddPoint(pointFrm4, ref missing, ref missing);

 

                IPoint pointTo1 = new PointClass();

                IPoint pointTo2 = new PointClass();

                IPoint pointTo3 = new PointClass();

                IPoint pointTo4 = new PointClass();

               

                pointTo1.PutCoords(493000.0, 4376000.0);

                pointTo2.PutCoords(494000.0, 4376000.0);

                pointTo3.PutCoords(493000.0, 4375000.0);

                pointTo4.PutCoords(494000.0, 4375000.0);

 

                toPoint.AddPoint(pointTo1, ref missing, ref missing);

                toPoint.AddPoint(pointTo2, ref missing, ref missing);

                toPoint.AddPoint(pointTo3, ref missing, ref missing);

                toPoint.AddPoint(pointTo4, ref missing, ref missing);

 

                IRasterGeometryProc pRasterGProc = new RasterGeometryProcClass();

               

                pRasterGProc.Warp(frmPoint, toPoint, esriGeoTransTypeEnum.esriGeoTransPolyOrder1, pRaster);

                pRasterGProc.Register(pRaster);

                pRasterGProc.Rectify("E:\\GIS\\7593.img", "IMAGINE Image", pRaster);//路径和格式(String)

 

//pGeoreference.Warp(frmPoint, toPoint, (int)esriGeoTransTypeEnum.esriGeoTransPolyOrder1);

                //pGeoreference.Register();

                //pGeoreference.Rectify("E:\\GIS\\test1111.tif", "TIFF"); //导出成此格式有问题

                //axMapControl1.Refresh();

            }

            else

            {

                MessageBox.Show("不能进行配准");

            }

           

 

        }

转载于:https://www.cnblogs.com/weihongli/archive/2012/07/20/2555737.html

本程序主要对遥感实现三种处理:几何校正、像增强和图像配准。这三种处理都可以独立实现,然而对于原始的遥感像将这三种处理依次进行效果更佳。 具体操作步骤如下: 1.在主窗口打开像1 2.选择【几何校正】菜单,打开【像几何校正】对话框进行几何校正。在此对话框中,首先打开待校正像2,然后点击【选取特正点】按钮,按照提示依次在待校正像和基准像中手动选取特征点,最后点击【校正像】得到几何校正结果,如果达到预期效果,则点击【保存并在主窗口打开】按钮,保存此校正片,并在主窗口打开。 3.选择【像增强】菜单,打开【像增强】对话框进行像增强。在此对话框中,首先在相应的处理类别(如:直方增强、灰度增强等)中选择具体方法(如:均衡化、规定化等),然后点击本类别的按钮。增强后的结果会在右侧显示,如果达到预期效果,则点击【保存并在主窗口打开】按钮,保存此增强后的片,并在主窗口打开。 4.选择【图像配准】菜单,打开【图像配准】对话框进行图像配准。在此对话框中,首先打开待匹配像3,然后选择“半自动”或“手动”方法并点击【选取特正点】按钮,按照提示依次在待配准像和基准像中半自动或手动选取特征点(如果在半自动选取中特征点对应错误,可以更改特征点),最后点击【匹配像】得到图像配准结果,如果达到预期效果,则点击【保存并在主窗口打开】按钮,保存此校正片,并在主窗口打开。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值