1、遥感原理与应用课程设计,一、课程设计的目的 加深理解和巩固遥感原理与应用的有关理论知识; 运用专业遥感软件,通过对遥感影像进行各种处理以及专题信息提取等综合应用,培养独立分析问题和解决问题的能力; 通过自主编程设计,加强对遥感图像处理算法的理解和提高编程实践能力; 培养良好的工作习惯和科学素养,为今后工作打下良好的基础。,遥感原理与应用课程设计,二、课程设计性质 综合型、设计型课程,遥感原理与应用课程设计,课程设计针对什么?课程设计的任务 课程设计要设计什么?课程设计的内容 如何去完成课程设计?课程设计的方法 课程设计得到什么?课程设计的成果,遥感原理与应用课程设计,三、课程设计的任务对于常用
2、的遥感图像处理,自主设计算法并用VC编程实现。针对遥感影像数据,如何从影像上进行专题信息提取与专题制图。,遥感原理与应用课程设计,四、课程设计的内容 - 数据说明 地点:不同地区(武汉等地) 传感器类型 TM1、3、4、5、6、7波段影像,相邻有重叠左右影像各一幅。空间分辨率:30米、120米, tif 图像格式,无空间坐标信息。 SPOT影像,分辨率10米。tif图像格式。SPOT影像投影信息、大地坐标、分辨率可参见说明文件:Readme.txt Ikonos、Quickbird、GF,遥感原理与应用课程设计,四、课程设计的内容 - 使用软件常用遥感图像处理的算法的实现 (MS VC+ 6.
3、0,vs2010)针对遥感影像数据,设计从遥感影像上进行专题信息提取与专题制图的总体方案、流程框图以及具体步骤、方法 (Erdas Imagine),遥感原理与应用课程设计,五、课程设计的方法实习过程中要求大家养成遇到问题先独立思考、后询问教师、再归纳总结的习惯; 效果评估与改进:对每一步骤的实现方法进行归纳总结,找出其中的关键点和难点;对每一步处理的效果进行评估,找出影响效果的因素和提高效果的方法; 利用VC自主编程完成和实现算法的设计,编程中出现疑难可采取查阅资料、相互讨论、询问教师的方法,不得互相抄袭、拷贝。 自主设计任务方案与流程框图:学生根据课程设计任务,完成“遥感专题信息提取与专题
4、图制作”的总体方案设计与流程框图设计,交给教师审核修改;,遥感原理与应用课程设计,六、课程设计的成果VC编程实现算法设计的程序代码(注释完备);VC编程实现遥感图像处理算法的设计报告。“遥感专题信息提取与专题制图”的总体实际方案与流程框图;基于ERDAS软件完成的“遥感专题信息提取与专题制图”专题图成果及实习报告;,遥感原理与应用课程设计,七、课程设计的进度安排,遥感原理与应用课程设计,ERDAS软件 “遥感专题信息提取与专题图制作”设计报告,按以下框架撰写 课程设计的目的和意义 课程设计的原理和方法 课程设计的过程和步骤 课程设计的结果分析与评价 课程设计的总结与体会VC编程实现遥感图像处理
5、算法的设计报告,设计报告按科技论文格式撰写,遥感原理与应用课程设计,课程设计的要求 独立设计、自主完成。在教师指导下独立完成。提倡交流、讨论,严禁抄袭、拷贝等现象。 课程设计完成后每个学生制作PPT并进行个人答辩,个人答辩情况将计入成绩。 遵守纪律、按时上下课。 主动维护好实验室硬软件,保持实验室卫生,遥感原理与应用课程设计,课程设计的考核算法自主设计编程与答辩(50%) ERDAS软件部分(40%) 平时考勤(10%),开源库的利用,GDAL:一个操作各种栅格地理数据格式的库。包括读取、写入、转换、处理各种栅格数据格式。这个库还同时包括了操作矢量数据的另一个有名的库ogr。这样这个库就同时具
6、备了操作栅格和矢量数据的能力。,开源库的利用,OpenCV:(Open Source Computer Vision Library),OpenCV是一个开源发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。拥有包括 300 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库尽管也可以使用某些外部库。 这两个库的使用先由学生自己查阅资料,根据自己的软件开发环境选择相应版本下载。,编程要求,以小组为,每组三人。单位选择专题,至少选择2个专题。 封装一个专门用于读写和显示影像类; 封装一个对影像进行各种处理的算法类。 如果选择专题一专题六,要求使用G
7、DAL库读写影像;,时间安排,第一、二单元确定任务和熟悉GDAL库与OpenCV的使用,基本读写和显示操作封装到一个类;注意查看影像数据的类型(unsigned char 8bit,unsigned 16bit、float等),如何将不同类型数据都直观显示在屏幕上; 第三单元算法流程设计; 第四-六单元算法设计实现; 第七单元设计成果汇报。,汇报内容,分小组,小组不同人分工汇报 GDAL的使用,使用了哪些功能,如何调用实现的; OpenCV的使用,使用了哪些功能,如何调用实现的; 算法设计思想和流程 算法实现中遇到的问题 算法的效果、适用性以及改进。,遥感影像数据读取与基本处理,GDAL库基本
8、介绍 基于GDAL库的图像读取与保存 函数模板与类模板 图像显示 图像基本处理,GDAL库基本介绍GDAL 抽象数据模型,GDAL库基本介绍GDAL基础类,1、GDAL库基本介绍GDAL实用工具介绍,gdalinfo gdal_translate gdalwarp gdal_contour gdaladdo gdaldem gdal_rasterize gdal2tiles,第 21 页,1、GDAL库基本介绍GDAL库使用设置,第 22 页,2、GDAL库读取影像(1)打开文件,得到数据集,GDALAllRegister(); GDALDataset *poDataset = (GDALDa
9、taset *) GDALOpen( pszFilename, GA_ReadOnly); /GA_Update if( poDataset = NULL ) AfxMessageBox(LPCTSTR)“File open Error!“,0,0); ,第 23 页,2、GDAL库读取影像(2)获取影像基本信息,宽度:poDataset-GetRasterXSize() 高度:poDataset-GetRasterYSize() 波段数:poDataset-GetRasterCount() 数据类型: GDALRasterBand *pRasterBand; pRasterBand = po
10、Dataset-GetRasterBand(1); GDALDataType T = pRasterBand-GetRasterDataType();,第 24 页,2、GDAL库读取影像像素数据类型,typedef enum /*! Unknown or unspecified type */ GDT_Unknown = 0,/*! Eight bit unsigned integer */ GDT_Byte = 1,/*! Sixteen bit unsigned integer */ GDT_UInt16 = 2,/*! Sixteen bit signed integer */ GDT
11、_Int16 = 3,/*! Thirty two bit unsigned integer */ GDT_UInt32 = 4,/*! Thirty two bit signed integer */ GDT_Int32 = 5,/*! Thirty two bit floating point */ GDT_Float32 = 6,/*! Sixty four bit floating point */ GDT_Float64 = 7,/*! Complex Int16 */ GDT_CInt16 = 8,/*! Complex Int32 */ GDT_CInt32 = 9,/*! Co
12、mplex Float32 */ GDT_CFloat32 = 10,/*! Complex Float64 */ GDT_CFloat64 = 11,GDT_TypeCount = 12 /* maximum type # + 1 */ GDALDataType; /*!Pixel data types*/,第 25 页,2、GDAL库读取影像(3)获取影像数据,/注意:不同类型数据类型需要分配的内存空间大小不同 int nTypeSize=GDALGetDataTypeSize( T); /分配内存 BYTE * m_BandsDataPtr = new BYTE nWidth*nHeig
13、ht*nTypeSize*nBands; /读取影像原始大小的数据到内存 poDataset-RasterIO(GF_Read,0,0,nWidth,nHeight,m_BandsDataPtr,nWidth,nHeight,nDataType,nBands,NULL,0,0,0); /通过模板函数访问以及处理不同类型影像数据 template void CImg:SetDibData(T),第 26 页,3、影像显示,显示原理:位图结构 显示方法:创建位图 显示函数:StretchDIBits()可以使用CBmpFile类、DIB库、OpenCV库生成位图,调用相应函数显示图像。,第 27
14、页,路径设置,路径设置,路径设置,附加 依赖库 设置,附加依赖库,opencv_calib3d248d.lib opencv_contrib248d.lib opencv_core248d.lib opencv_features2d248d.lib opencv_flann248d.lib opencv_gpu248d.lib opencv_highgui248d.lib opencv_imgproc248d.lib opencv_legacy248d.lib opencv_ml248d.lib opencv_nonfree248d.lib opencv_objdetect248d.lib o
15、pencv_photo248d.lib opencv_stitching248d.lib opencv_ts248d.lib opencv_video248d.lib opencv_videostab248d.lib opencv_calib3d248.lib opencv_contrib248.lib opencv_core248.lib opencv_features2d248.lib opencv_flann248.lib opencv_gpu248.lib opencv_highgui248.lib opencv_imgproc248.lib opencv_legacy248.lib opencv_ml248.lib opencv_nonfree248.lib opencv_objdetect248.lib opencv_photo248.lib opencv_stitching248.lib opencv_ts248.lib opencv_video248.lib opencv_videostab248.lib gdal_i.lib,