“基于遥感影像的变化检测”设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在课程设计前,需要对遥感图像变化检测的原理有比较深刻的理解。实验的 过程中,需要对每种算法的阈值有较好的把握,不断摸索分析,才能得到比较理 想的检测效果。本次课程设计的三个核心算法都相对较简单,相对来讲,变换检 测算法前期的影像信息读取、建立映射以及算法执行完毕后的释放句柄、解除文 件映射、刷新显示等框架是重难点,在编程过程中查阅学习了相关的参考书籍和 网上资料。
相关系数法计算两个影像中对应窗口的相关系数,相关系数小于阈值的, 窗口中心像素即被判断为发生变化的像素,将该像素灰度值赋为 255,根据具体 情况要求可设置不同阈值,如 0.9、0.8 等。
比值法计算两个影像对应像素的灰度值(窗口灰度均值)的比值,比值小 于阈值的即为发生变化的像素,将该像素灰度值赋为 255,根据具体情况要求可 设置不同阈值,如 0.85、0.75 等。
城市遥感这门课内容丰富,专业知识和实际联系紧密,应用前景广阔,如城 市目标解译、三维重建、城市规划和生态环境等的动态监测,从这门课上学到了 很多有用的知识,更对我们的专业发展有了更深更广的了解和认识。城市遥感技 术在城市规划、监测和管理中已经有愈来愈重要的地位,成为城市建设和城市环 境监测的主要手段。徐老师讲课深入浅出,使我们既学到了理论知识又了解了实 际技术,基础性与实用性相结合,非常感谢老师细致耐心的讲授!
城市遥感课程设计
—“基于遥感影像的变化检测”设计报告
学院
***
班级
***
学号
***
姓名
***
日期
***
摘要:本次城市遥感课程设计为基于遥感影像进行的变化检测处理与分析,在 vc6.0 环境下,编写程序完成设计内容。报告对遥影像变化检测的原理、三种像 素级检测算法、编程实现方法与过程、实验的结果的分析以及本次课程设计和 城市遥感课程的体会与总结进行阐述。 关键词:变化检测 像素级检测 城市遥感 算法与编程 一、课程设计的目的和意义
灰度差值法
相关系数法
比值法
五、实验结果分析
本次城市遥感课程设计,我选择的专题是基于遥感影像的变化检测,采用的
直接多时相图像分类法中的像素级检测法,分别实现了灰度差值法、相关系数法
和比值法的变化检测,最后生成的结果图像效果比较理想,说明该程序对遥感影
像变化检测处理可行有效。
对于三种变化检测算法生成的结果图像,从检出率、误检、漏检和噪声影响
时间图像中对应像素的相关性。一般是取窗口,计算两个图像中对应窗口的相关 系数,来表示窗口中心像素的相关性。如果相关系数值接近 1 则说明相关性很高, 该像素没有变化;反之,则说明该像素发生了变化。
比值法:计算己配准的多时相图像对应像素的灰度值的比值,如果在一个像 素上没有发生变化,则比值接近 1;如果在此像素上发生变化,则比值远大于或 远小于 1 。
获取影像信息
建立文件映射
结尾代码
框架性的东西做好后,下面实现变化监测核心算法。在显示结果上,可以有 两种选择,一是原图像做底图,变化区域用白色显示,二是底图为黑色,变化区 域用白色显示,两种方式各有优点,前者有不变化的景物做参照,后者由黑色做 底,可以更好地显示变化区域。若使用第一种方式,算法开始对结果图像各像素 赋原图像像素的灰度值:
加深理解和巩固理论课上所学的有关城市遥感的基本原理和遥感影像变化 检测相关知识;锻炼对遥感图像进行处理分析的实际编程能力;培养良好的工作 习惯和科学素养,为今后参加科学研究工作以及毕业设计打下良好的基础。 二、原理介绍
遥感影像变化检测指利用多时相获取的覆盖同一地表区域的遥感影像及其 它辅助数据来确定和分析地表变化。变化检测技术是利用计算机图像处理系统, 对不同时段目标或现象状态的变化进行识别、分析;它能确定一定时间间隔内地 物或现象的变化,并提供地物的空间分布及其变化的定性与定量信息,在地物覆 盖分析、国土资源普查等方面拥有广泛的应用价值和商业价值。
} } 若使用第二种方式则将赋值代码改为 *(lpFusionDIBBits+lLineBytesMulspec*(lMulspecHeight-1-i) + j*3+k)=(char)0 两种方式最后生成的结果图像为
无论哪一种算法,都要计算窗口的灰度均值,这里取 3*3 大小的窗口,
灰度差值法计算对应像素灰度差(窗口灰度均值差),差值大于阈值的即为 发生变化的像素,将该像素灰度值赋为 255,通过试验分析,这里取阈值为 20。
对于变化检测这一专题,我采用了三种不同的算法来实现,在显示上,每来自百度文库 方法又有两种方式。通过对不同算法和相应结果的比较,可以更好地去理解各种 算法和显示方式的有缺点,根据不同情况和需要选择恰当的算法和显示方式。
通过此次课程设计,我对课本上的知识有了更加深入的理解,掌握了相关的 编程算法,锻炼了编程思想,提高了实际动手能力。在实习过程中,也暴露出里 我的缺点和不足,急需加深学习和练习。
变化检测方法分为分类后比较法和直接多时相图像分类法。直接多时相影像 分类法是通过对两个或多个日期的组合数据序列进行单一分析来识别变化区域, 本次实习采用直接多时相图像分类法中的像素级检测法,实现了该类方法中的灰 度差值法、相关系数法和比值法。
灰度差值法:图像差值法对多时相图像中对应像素的灰度值进行相减,结果 图像代表了两个时间图像的变化
三、课程设计方案和流程 1、实验数据:
两幅同一地区不同时相的遥感影像,影像名为 08、09,均为为多波段合成 的假彩色影像,均为 bmp 格式。 2、设计方式:
在 vc6.0 环境下,利用编程语言 C++完成设计内容。 3、程序框图:
建立 CDib建动立态链接库
读取两幅不同时相的影像并建立映射
创建检测结果影像并建立映射
for(i=0;i<lMulspecHeight;i++) { for(j=0;j<lMulspecWidth;j++) {
for(k=0;k<3;k++) *(lpFusionDIBBits+lLineBytesMulspec*(lMulspecHeight-1-i) + j*3+k)= *(lpMulspecDIBBits + lLineBytesMulspec*(lMulspecHeight-1-i) + j*3+k);
参考文献: 【1】邵振峰.城市遥感【M】.武汉:武汉大学出版社,2009. 【2】孙家抦.遥感原理及应用【M】.武汉:武汉大学出版社,2009. 【3】贾永红,崔卫红,余卉.数字图像处理实习教程【M】.武汉:武汉大学出版 社,2007.
在这次程序设计过程中遇到了一些问题,例如相关系数法在计算相关系数和 比值法在计算比值时,有分母为零的情况,使得相关系数和比值出现无穷的情况, 为后面的与阈值比较、判断像素是否变化造成了干扰。这次程序设计中还有不足 和不满意的地方,如没有进行分类后比较法的程序编写,没有将直接多时相图像 分类法与其进行比较,在以后的时间里,一定会再对这次实习向深摸索,不断加 深理解。 六、对课程设计和城市遥感课程的体会与总结
对应像素灰度值相减
计算对应窗口相关系数
计算对应像素灰度值比值
Dx – m≥Td*STD

r≤Tr

Rx≤Tl

该像素发生变化,赋灰度值为 0 以显示
显示检测结果影像
四、实现方法与过程 1、创建基于 MFC 的 Visual C + +应用程序 在 “ MFC AppWizard-Step 1 ” 对 话 框 中 , 选 择 单 文 档 形 式 , 在 “ MFC
等方面分析比较,图像上线状地物处灰度差值法检测完全,比值法有漏检现象, 相关系数法效果介于灰度差值法和比值法之间;图像上面状地物处检测比值法的 误检比灰度差值法要少,相关系数法在最下面这块地物出的检测出现了一定问题, 误检过多,分析原因有阈值设定和算法本身两方面问题。
从算法和编程的角度看,相关系数法较复杂,程序执行速度一般,灰度差值 法和比值法较简单,程序执行速度很快。
r1=ave1-bve1;r2=ave2-bve2;r3=ave3-bve3; if(r1<0) r1=-r1; if(r2<0) r2=-r2; if(r3<0) r3=-r3;
if ((r1>20)||(r2>20)||(r3>20)) { for (int k=0;k<3;k++) *(lpFusionDIBBits+lLineBytesMulspec*(lMulspecHeight-1-i) + j*3+k)=(char)255; }
AppWizard-Step 6”对话框中,将 CImageProcessEx View 类的基类设为 CScrollView (滚动视图类),以使得视窗能完整显示各种不同大小的影像,其它步骤均采用 默认项。
2、位图操作 HDib 类的实现 利用动态链接库 DIB.dll 完成了位图操作类 HDib 的定义和实现。实现了对位 图的操作,并将所有对位图的操作都封装在一个类中,方便继承和移植。在这次 实习中我用到 DIB.dll 动态链接库中的函数有计算位图宽和高、位图显示、找位 图文件数据的指针等。 实现过程为首先将 DIB.lib 和 DIB.dll 拷贝到所建的工程下,再将 DIB.dll 中函 数的声明语句复制到工程下的 StdAfx.h 里,最后分别通过“工程→设置→link” 和“工具→选择→目录”两项操作完成链接动态链接库 DIB.dll。 3、位图文件读取、显示和存储 位图读取:首先在 Doc 中定义 HDib 类型的对象,即在 Doc.h 文件中加入两 行代码:DECLARE_DYNCREATE(CChangedetectionDoc) //动态创建句柄,HDIB nDIB; 接 着 在 Doc.cpp 中 添 加 OnOpenDocument 函 数 , 在 函 数 体 内 添 加 nDIB=Open(lpszPathName);等用于打开位图文件的代码。如打开的是 DIB 位图, 则代码存储在 nDIB 对象中,即 nDIB 对象表示了位图的所有信息,对位图的各种 操作即可通过 nDIB 中的各函数实现。 位图的显示:在 View 类的 OnDraw 成员函数中添加 Draw(pDC,pDoc->nDIB); 等代码。另外,为了使得视窗能完整显示各种不同大小的影像,即为窗口添加滚 动条,还需在 View 类头文件加入 CSize sizeTotal;并在 OnDraw 函数中加入 sizeTotal.cx = DIBWidth(lpDIB); sizeTotal.cy = DIBHeight(lpDIB); SetScrollSizes(MM_TEXT, sizeTotal);等代码。综上实现了位图的显示和滚动条的添 加。 位图的存储:在 Doc.cpp 中添加 OnSaveDocument 函数,调用 Save 函数保存 位图。 4、变化检测 在 View 类中分别建立灰度差值法、相关系数法和比值法的消息响应函数,
函数的功能都是获取第一时相和第二时相影像路径,并分别调用 Doc 类中的函数 Minus()、Relevant()和 Ratio()变化检测函数。
在 Doc 类中的三种变化检测函数的开头结尾代码都一样,开头代码的作用是首先 选择变化检测结果影像的路径和文件名;然后获取第一时相和第二时相影像信息,
包括读文件头、读信息头、计算图像的行宽度等,并对两幅影像分别建立文件映 射;最后创建结果影像文件、建立结果影像文件映射等。结尾的代码作用是解除 文件映射、释放句柄以及刷新显示等。
一般用窗口(如 3*3、5*5)均值代替窗口中心像素的灰度值进行计算。然后对 差值图像进行统计处理,计算差值图像的均值和标准差。如果差值图像中像素的 灰度值满足如下公式,就认为该像素发生变化。
其中,m 为差值图像均值,Td 为差值图像标准差,STD 为门限值。 相关系数法:计算多时相图像中对应像素灰度的相关系数,结果代表了两个
相关文档
最新文档