遥感原理实习报告--openCV资料 下载本文

回到工程,在“解决方案资源管理器”中,右键单击工程名,弹出菜单中点选“属性”。

在弹出的属性页对话框中,选择“VC++目录”-点击“包含目录”右边的倒三角-点击“编辑”。

在弹出的包含目录对话框中,分别加入“...\\OpenCV2.2\\include”,“...\\OpenCV2.2\\include\\opencv”,“...\\OpenCV2.2\\include\\opencv2”三个文件夹。最后点击“确定”。

点击“库录”右边的倒三角-点击“编辑”。在弹出的库目录对话框中,加入“...\\OpenCV2.2\\lib”文件夹。最后点击“确定”

在属性页对话框中,选择“链接器”-“输入”。点击“附加依赖项”右边的倒三角-点击“编辑”。在弹出的“附加依赖项”对话框中,分别填入如下文件名: opencv_core220d.lib

opencv_highgui220d.lib opencv_video220d.lib opencv_ml220d.lib opencv_legacy220d.lib opencv_imgproc220d.lib

点击“确定”。最后点击“应用”-“确定”。

通过上述方法的操作,即完成了OpenCV环境的配置。

3. 程序的编写。基于多项式的遥感图像几何纠正处理可以大致分为三个步骤:通过地面已知控制点解算多项式系数、遥感图像的纠正变换、数字图像亮度值的重采样。

4.实验结果与分析

基于多项式的遥感图像几何纠正处理前后的效果图如下:

图2:几何纠正效果图

从这张结果图像可以看出,原先具有几何变形的图像得到了一定程度的纠正,图像信息得到了良好的还原。

在亮度重采样的方法选择上,我们采用了最邻近像元法和双线性插值法两种方法进行对比。效果图如下:

图3:最邻近像元法 图4:双线性插值法

从对比上可以看出,图像的几何变形都得到了较为完善的纠正,目视判读的纠正结果基本一致,但是仔细对比可以发现后者相对于前者在图像细节上要模糊一些,但是根据理论后者的几何精度更高。因此纠正方法的选择还是应该综合考虑实际因素。

5 讨论和总结

5.1 小组分工

本实习小组共有贾丹、刘爽、石东博和吴京航四人。 贾丹主要负责答辩PPT 的主要制作。

刘爽主要负责答辩PPT的参与制作,实习报告的参与编写。 石东博主要负责实习报告的主要编写,答辩PPT的参与制作。 吴京航主要负责用于答辩展示的代码编写。

此外组内四人都已各自独立完成彩色图像的几何变形、基于多项式的遥感图像几何纠正的代码的编写。

5.2 实习总结

本次遥感原理课程设计的编程部分为期五天,共六个课时,我们的收获有很多。

首先对于第一个任务,也就是彩色图像的缩放、旋转和平移等操作,这个任务的要求是需要调用OpenCV库自带的函数来完成代码的编写,由于我们在之前的数字图象处理的实习中有接触过OpenCV对图像进行处理,因此对于OpenCV具有一定的了解,而这次实习通过给同学们任务让同学们自主查阅调用函数的方法来完成任务,则是让我们对于遥感图像的处理有了更深层次的了解。

举例来说,对于彩色图像缩放函数,在查阅相关资料的时候我就发现不只有一种函数具有图像缩放功能,比如resize(),Resize(),虽然看上去只有一个字母的差异,不过在使用的过程中,可以发现在参数调用,函数使用上还是具有一定程度的区别的,这就需要我们通过比对和学习选择更加适合的函数来完成彩色图像几何处理的任务。

这次实习我们用了绝大多数时间来完成第二个任务,即基于多项式的遥感图像几何校正。这一部分的知识我们在遥感原理与应用的理论课程上已经进行了比较详细的学习,因此在算法架构的理解上的难度并不是很大。在重温了课本上的基本原理并进行系统的理解后,我们开始了代码的编写。

第一步操作是利用地面已知控制点来求解多项式的系数。这部分几乎完全是数学公式的代码实现。多项式次数的选择有一次,二次和三次,而相对应的系数的个数分别是三个,六个和十个,对应的公式是k = (n+1)(n+2)/2。这次实习给出的控制点一共有七个,因此可以用一次或二次纠正。在这里我们小组的成员使用的方法不尽相同。在求解多项式系数矩阵的过程中,主要涉及的操作即矩阵的转置、求逆等等运算,所以这一部分的重点难点主要在于这些矩阵运算的实现。

第二步操作是对于图像进行几何纠正。首先需要确定输出地图的边界坐标值。这里用到的方法即利用上一步结算处的多项式系数,把给出的原图端点坐标进行转换得到输出图像地图的坐标。这里的变换步骤比较琐碎,一定要十分细心和认真才能得到正确的结果,否则很可能会出现坐标反转、区域大小不正确等问题。这里稍不留神就可能出现上述失误。因此我们感悟到,在代码的编写过程中,算法流程的掌握,编码经验都很重要,但是一颗精益求精的心,一个谨小慎微的态度,也是同样重要的。

第三步是在确定了输出图像边界后进行纠正变换。这里有两种方法可以采用,直接法和间接法。这两种方法的原理大致相同,只是函数的参数选择略有不同。这里我们采用的是间接法,从输出图像的像素点出发,寻找对应的原始图像坐标进行纠正处理。

第四步是数字图像的灰度值重采样。这里我们学习了三种方法,分别是最邻近像元法、双线性内插法和双三次卷积法。这三种方法的原理相似,都是通过对邻近像元亮度的综合取舍进行输出。最邻近像元法是采取距离最接近的像素值,双线性内插法则综合考虑了周围四个像素的像素值进行加权处理,双三次卷积法则是综合考虑周围4x4范围内的像素值。这三种方法的几何精度越来越高,计算精度也在逐渐增大,而由于采用的更大的模版进行像素取值则会使得图像模糊度变高。这里我

们采用了前两种方法,在输出结果上可以看出比较明显的区别,几何精度上双线性内插法应该比最邻近像元法更高,但是目视难以判读出区别,模糊程度上双线性内插法与最邻近像元法相比具有明显的模糊。因此在实际应用上还是要综合权衡各方面因素,选取最适合的方法。

5.3 遇到的问题

在本次实习中我们遇到了如下一些问题:

首先是方法的选择。在纠正法案上有直接法和间接法两种方法,纠正次数上有一次和二次两种方法,亮度重采样上有最邻近像元法等三种方法,在面临这些选择的时候,我们查阅了大量资料,对于不同的选择进行多方面比对,并最终选择了更为适合本次实习的一些方法,在辩证的学习中我们也对于这些方法有了更深入的理解。更难能可贵的是,编写程序时遇到的方法选择,和我们在人生中遇到的诸多抉择是共通的,只有进行了多方面的调查,并认真考虑自身因素,才能筛选出最适合自己的选择。

其次是在纠正变换的过程中,坐标变换方面是一个困扰我们的问题。虽然这里并不存在逻辑上知识上的漏洞,问题仅仅出在编码人的细心与认真程度上,但这个问题也绝对不能被忽视。在代码的编写过程中,绘制出简要的流程图是十分必要的,因此我们得到的感悟是,编码所需要的并不仅仅是一个大脑,一台电脑,更需要一支笔一个本,做更为精细的记录。

5.4 实习的建议

这次实习的时间安排正好处于考试周,导致学生需要在复习计划和考试安排之间合理的安排时间,而往往会让学生顾此失彼。希望实习时间能够尽可能的避开考试。我的建议是实习的时间能够安排的更加动态,比如在闲暇的时候集中实习,事情多的时候少安排课时,尽管现实因素也有很多比如机房的预定,考试的不确定性,不过让实习和考试能够分开来进行是绝大多数同学的心愿。

本次编程实习共安排了十五个专题任务,大部分都是和遥感原理与相关方面的应用密切相关的,可是同学们真正动手实践过的只有1到2个,那么对于其他的专题并没有得到深入的理解和动手实现的机会,希望能给同学们安排更多的专题任务,对遥感原理算法方面有更全面的掌握。

参考文献

[1] 孙家抦,遥感原理与应用,武汉:武汉大学出版社,2013 [2] 贾永红,张谦,崔卫红,余卉,数字图像处理实习教程,2012