高光谱图像处理之目标检测技术(CEM算法)(图像处理)@慕课网原创慕课网

1、高光谱图像目标检测的发展趋势和研究现状:

20世纪80年代末,美国的一些研究机构开始利用高光谱图像数据进行目标检测方面的研究。自上世纪九十年代,国外出现了进行高光谱图像目标检测算法理论研究的研究组。由Reed和Yu提出了基于广义似然比检验的恒虚警RX检测器(RXD)。Chang课题组提出了基于正交子空间投影的OSP检测方法,Harsanyi提出了基于约束能量最小化的CEM算法。未来高光谱目标检测的发展将会越来越重视实用性,算法的性能将会进一步提高,同时更也加适合使用FPGA硬件对其进行加速从而具有更高的实际应用价值。

2、高光谱目标检测技术的应用范围:

高光谱目标检测具有较强的实用性,可应用于公共安全、环境检测、城市规划、食品卫生、地质岩矿的识别等众多方面。

图1.1高光谱图像数据结构

3、高光谱图像数据的特点:

高光谱图像数据“图谱合一”,具有丰富的光谱维信息。高光谱图像数据共有三个维度,如图2.1所示,其中,图像空间维信息x、y用于表示物体的实际空间分布,而光谱波段L用于表示每个像素的光谱属性。

4、高光谱图像目标检测原理:

高光谱图像的各波段在成像范围内都是连续成像,因此高光谱的光谱曲线一般是平滑的、连续的曲线。高光谱图像的波段L中涵盖了物质的光谱信息,而每种物质的光谱信息都不一样,我们可以利用图像像素的光谱波段L所包含的特定的光谱信息来判断该像素所代表的特定的物质种类。

5、高光谱图像目标检测流程:

图1.2高光谱图像目标检测流程图

如图所示,对于拍摄得到的原始高光谱图像数据,需要先对数据进行预处理,包括数据格式化、无用数据剔除以及亮度到反射率的转化等。同时,对于遥感仪拍摄的高光谱图像还需要进行辐射校正,在目标检测前,应对数据进行调整,包括数据归一化等。最后根据已知的先验信息选择相应的目标检测算法进行检测。

6、现场可编程门阵列(FPGA)在高光谱图像处理中的应用:

二、算法分类、比较和选择:

1、方法分类:

高光谱目标检测方法按照先验信息是否已知分为监督方法和非监督方法。前者用于目标光谱已知的情况下,利用目标光谱与图像像元光谱进行匹配,从而完成目标检测,比如CEM算法、OSP算法;后者多用于异常目标检测,一般不需要目标和背景的先验信息,根据高光谱图像数据获取目标检测所需要的数据,然后根据数据的大小来判断是否为异常目标,比如RXD算法。

2、CEM、OSP、RXD算法的区别:

(1)CEM(ConstrainedEnergyMinimization)算法:

CEM算法主要思想是设计一个FIR线性滤波器,使得在满足约束条件式的情况下滤波器的输出能量最小。该算法不需要图像的背景信息,只需要知道要检测的先验光谱信息(目标向量)即可,具体方法是通过高光谱图像数据和先验已知的待检测目标确定一个滤波向量,让图像经过该滤波向量即可得到检测结果,其中滤波向量的作用是滤除图像中的非目标像素,让感兴趣的目标能够通过,同时抑制由其他信号带来的滤波器输出能量。

(2)OSP(OrthogonalSubspaceProjection)算法:

OSP算法与CEM算法相比,最大区别在于不仅需要目标的先验知识,还需要图像中背景的先验知识,但在实际中中这些先验信息很难全部得到。在高光谱检测中我们一般用其来检测异常。该算法需要前提条件:图像信息、目标像元、非目标像元(异常目标)信息。

(3)RXD(Reed-XiaoliDetector)算法:

RXD算法是异常目标检测领域中最基础的算法,不需要目标光谱的先验知识,而是基于背景服从多元正态分布的假设,通过检测与背景分布中心相比属于异常像元,并在这些感兴趣区域进一步查找可能存在的目标。该算法主要针对的是小目标检测问题。

(4)确定所采用的目标检测算法:

由于我们的应用场景多为有特定目标的目标检测,CEM正是针对未知场景中可能存在的特定目标的检测,只需要知道目标的光谱信息即可,而RXD算法适应于对特定场景的异常(未知目标)检测,而OSP算法除了需要已知目标光谱还需要背景信息。综上,我决定采用CEM算法进行高光谱目标检测的实现。

三、CEM算法分析:

1、算法步骤:

(1)对高光谱图像进行预处理,得到二维化和归一化后的数据r(L*N);

(3)确定目标光谱向量d(d大小为L*1);

(4)根据公式:

设计FIR线性滤波器:

(5)将归一化后的数据经过FIR滤波器,得到输出信号y。

2、问题分解:

图1.3CEM算法分解流程图

四、CEM算法实现:

1、算法流程:

在MATLAB和C语言中实现CEM算法的具体流程如图所示,因为语言特性是串行执行命令,所以在编写程序时与硬件设计比较更加直接明了。

图1.4CEM算法流程图

2、数据预处理:

对前期得到的高光谱图像在MATLAB平台上进行预处理。这一过程主要对原始的200*200*189大小的高光谱图像进行操作:

(1)二维化:通过调用MATLAB里面的reshape()函数实现。

(2)归一化:采用“min-max”方法。具体步骤是先找到数据的最大值(maxA)和最小值(minA),通过y=(x-minA)/(maxA-minA)计算的y即为归一化后的数据。高光谱数据量大,也造成了数据的存储比较困难,数据在程序中的存储等处理

3、CEM算法的MATLAB实现:

4、CEM算法的C语言实现:

在VisualStudio平台上完成CEM算法C程序的编写。相比于MATLAB实现,CEM算法的C语言实现主要难点在于矩阵运算。因为在C语言中,矩阵的转置、相乘、求逆等操作均没有现有的函数,需要编写相应的函数。在实现矩阵基本运算过程中,通过动态分配内存运用二维指针传递参数,完成矩阵加减法运算、矩阵转置运算、矩阵相乘运算以及矩阵求逆运算,这样可以节省存储空间,使用完后释放空间即可。

CEM算法的C语言实现主要包括如下步骤:

(1)在MATLAB中,将归一化后的高光谱图像数据转为189*40000的二维形式,保存为CEM.mat;

(2)编写矩阵初始化、矩阵转置、矩阵相乘、矩阵求逆、内存释放函数;

(3)编写main函数,读CEM.mat,调用上述函数,求得FIR滤波器,进而获得输出信号y,将其写入CEM.txt;

(4)在MATLAB中显示CEM.txt中数据所代表的图像。

5、难点解决:

(1)矩阵转置

矩阵转置函数的输入是大小为m*n的矩阵A,输出是大小n*m为的矩阵B。采用嵌套的for循环分别遍历矩阵的行和列,将输入的二维矩阵A按列读出,重新按行写入新矩阵B中,即可实现矩阵的转置。

(2)矩阵相乘

矩阵相乘函数的输入是大小m*n为的矩阵A和n*k的矩阵B,输出是大小为m*k的矩阵C。采用嵌套的for循环分别遍历矩阵的行和列,首先将矩阵A按行读出,矩阵B按列读出,然后将读出的矩阵A的第i行和矩阵B的第j列对应位相乘求和,将计算的结果写入矩阵C第i行第j列元素中。

(3)矩阵求逆——QR分解求逆

QR分解求逆的原理是:对于可逆矩阵A,首先利用QR分解将A矩阵分解为Q矩阵和R矩阵。即A=QR,其中Q是正交矩阵,R是上三角矩阵。然后将公式左右同时求逆,可以求得A的逆矩阵,其中Q矩阵的逆矩阵和转置矩阵相同,R求逆有特定的公式。QR分解求逆的运算较为简单,且数据稳定度较高,可以得到误差较小的求逆结果。

6、算法实现结果和对比分析:

1)MATLAB和C语言实现CEM算法的检测结果如图所示:

(a)(b)(c)

图1.6原图CEM算法检测结果:(a)原图(每一行是一种物质)(b)MATLAB检测C物质(c)C语言检测C物质

通过对MATLAB和C语言实现结果进行对比,发现二者均成功实现了CEM算法并完成了对目标的检测,观察检测结果基本无差异。

THE END
1.专业学习如何绘制算法流程图?算法流程图怎么做3)基本结构:流程图可以分为顺序结构,条件结构(又称选择结构),循环结构,分支结构。其中顺序结构确定程序的整体执行顺序;选择结构对程序的执行过程进行分解,确定某个程序块的执行条件;循环结构确定某个程序块重复开始和结束的条件。 (3)简单案例介绍 例如,一个简单的算法流程图可能包括以下步骤: https://blog.csdn.net/weixin_63253486/article/details/144084968
2.pid控制算法java代码pid控制算法流程图pid控制算法 java代码 pid控制算法流程图 一、PID控制原理与程序流程 (一)过程控制的基本概念 过程控制――对生产过程的某一或某些物理参数进行的自动控制。 1、 模拟控制系统 图5-1-1 基本模拟反馈控制回路 控制规律用对应的模拟硬件来实现,控制规律的修改需要更换模拟硬件。https://blog.51cto.com/u_16213569/9128152
3.www.tup.tsinghua.edu.cn/upload/books/yz/076451(1) 程序1: #include int main( ) { int i,j,n=0; for (i=1;i<=4;i++) for (j=1;j<=5;j++,n++)//n用来累计输出数据的个数 { if (n%5==0) printf (″\\n″);//控制在输出5个数据后换行 printf (″%d\\t″,i j); } printf(″\\n″); return 0; }其对应的流程图见http://www.tup.tsinghua.edu.cn/upload/books/yz/076451-03.txt
4.算法流程图新手指导说到流程图,其实大家都不陌生,在我们生活中经常会看到流程图,并需要按照流程图的要求去执行流程图中的各个步骤。流程图的目的,就是让我们能够明确每一个步骤,避免出现遗漏和差错。 算法流程图,顾名思义,就是以特定的图形符号加上说明,表示算法的图,算法流程图包括传统流程图和结构流程图两种。一张图胜过千言万语https://modao.cc/flowchart/algorithm-flow-chart-beginners-guide.html
5.算法与程序·程序框图6篇(全文)1.写出算法:给定一个正整数n,判定n是否偶数.2.用二分法设计一个求方程的近似根的算法.二、讲授新课: 1.教学程序框图的认识: ① 讨论:如何形象直观的表示算法? →图形方法.第 1 页 教师给出一个流程图(上面1题),学生说说理解的算法步骤.② 定义程序框图:程序框图又称流程图,是一种用规定的图形、指向线及https://www.99xueshu.com/w/ikeyuh2rnlqg.html
6.算法流程图绘制方法,简单画算法流程图算法流程图使用用途也较为广泛,例如数学教学时用于逻辑运算,有利于学生整理学习思路;制作活动策划时用于展示创作者策划的逻辑思路,让参与者明白并跟上活动节奏等.下面给大家分享算法流程图的绘制方法,帮助大家了解并简单绘制算法流程图.https://www.liuchengtu.com/tutorial/sflcthzjc.html
7.遗传算法流程图桌面使用卡顿怎么办?华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:遗传算法流程图。https://support.huaweicloud.com/topic/454909-5-Y
8.算法流程图简介处理框:流程中需要执行或处理的内容; 判断框:对流程中的某一条件进行判断,用来决定执行下一操作。 流程线:流程中程序执行的方向与顺序; 输出输入框:表示程序流程中资料的输入或结果的输出,一般用做数据处理 3、算法流程图基本结构 程序的基本结构有三种:顺序结构、选择结构、循环结构;所https://mp.weixin.qq.com/s?__biz=MzAwMTQ1MTYyMQ==&mid=2247494617&idx=2&sn=a6e06773ed97201a39dc71e661935934&chksm=9adbd8d3adac51c5dd06334ac5ac109ec17d9346a36188d47a5b82cb110384f5f9b559949304&scene=27
9.算法流程图(附答案)算法流程图(附答案)流程图一一三种基本算法逻辑结构 6.运行如图所示的程序框图,则输出的结果S=.61 7.如图所示的算法流程框图中,若输入a=4,b=48,则最后输出的a的值是.96 8. 如图,程序执行后输出的结果为64 9. 10.阅读下面的流程图,若输入a=10,b=6,则输出的结果是2 11.右图是一个算法的流程图,则https://wenku.baidu.com/view/aa883360aa114431b90d6c85ec3a87c240288aae.html
10.算法流程图教案(精选7篇)②理解程序框图的三种基本逻辑结构:顺序、选择、循环. ③理解几种基本算法语句—输入语句、输出语句、赋值语句、条件语句、循环语句的含义.考情分析: ①高考对本章的考查主要以填空题的形式出现,单独命题以考查考生对流程图的识别能力为主,对算法语言的阅读理解能力次之。 https://www.360wenmi.com/f/fileeyi644fh.html
11.电梯调度算法前者可能是写字楼里上班族惯有的精神类疾病,但后者肯定是程序员的职业病。本文对“骂电梯”不给予任何指导性建议,但说起电梯调度算法,我觉得还是可以给大家科普一下,好为大家在等电梯之余,打发时间而做出一点贡献。(电梯调度算法可以参考各种硬盘换道算法) https://www.jsbsdt.com/html/diantijishu/570.Html
12.C语言算法流程图.pptC语言算法流程图.ppt 10页内容提供方:mv2323 大小:48.5 KB 字数:约2.95千字 发布时间:2016-12-13发布于河南 浏览人气:83 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)C语言算法流程图.ppt 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 第2章 https://max.book118.com/html/2016/1208/69681889.shtm
13.程序流程图程序流程图是用规定的符号描述一个专用程序中所需要的各项操作或判断的图示。这种流程图着重说明程序的逻辑性与处理顺序,具体描述了微机解题的逻辑及步骤。当程序中有较多循环语句和转移语句时,程序的结构将比较复杂,给程序设计与阅读造成困难。程序流程图用图的形式画出程序流向,是算法的一种图形化表示方法,具有直观、https://www.meipian.cn/38kq7re4
14.望繁信速递:CTO分享浅谈流程挖掘PT是通过Process Discovery的产物,比如Alpha算法和Inductive mining的产物就是PT,由于PT是通过树形结构存储流程节点关联关系的,因此对于学者和程序员来说是非常好理解的结构,但是不适合业务人员。 三、BPMN 2.0 BPMN 2.0是商业界广泛地用于制作企业业务规范的流程图标准,BPMN 2.0可以和PT做无缝地转换,并且也可以转换成Pehttps://maimai.cn/article/detail?fid=1734306355&efid=37Z08PUb7ebMIHGAelgxgg
15.程序流程图到代码的自动生成算法.docx程序流程图到代码的自动生成算法程序流程图是一种可视化编程工具,它可以帮助程序员理解和设计算法。然而,手动编写代码从程序流程图中可能是一项繁琐且容易出错的任务。因此,人们开发了自动生成代码的算法,从程序流程图中生成代码,大大减少了程序员的工作量,提高了编程效率。 自动生成代码的算法通常基于程序流程图中的https://m.renrendoc.com/paper/293713428.html
16.一个简单的流程图遍历算法实现将流程图看作由节点和连接组成,节点抽象为Node,节点的下游节点用集合 SubNodes表示。为了记录流程节点的执行顺序,创建一个新的结构NodeWithIdx,这个结构包括节点Node,和该节点在当前用例中的执行顺序idx。一组NodeWithIdx构成一个用例。 算法: 创建保存NodeWithIdx的堆栈,从根节点开始, https://www.jianshu.com/p/56361b654b61
17.流程图怎么画?教你在线制作高质量流程图!流程图作为一种过程诊断工具,被广泛应用于工作和生活中,如软件程序算法流程图、请假审批流程图、产品工艺流程图、医院看病流程等都是流程图。它可以直观地描述某个工作过程的具体步骤,辅助决策管理者查找问题,确定解决方案。本篇文章将使用BoardMix博思白板给大家分享在https://boardmix.cn/article/liuchengtuzmh/
18.ns流程图是什么?究竟要怎么做?这种流程图与我们平常所见的有所不同,它摒弃了传统的流程线,转而采用矩形框来描述算法的每一步。只需按照执行顺序将这些矩形框连接起来,便可形成对算法的完整描述。这种以两位学者名字首字母命名的流程图,也被大家熟知为盒图。n-s流程图在程序算法领域有着广泛应用,其直观的展现方式不仅易于理解,更能有效提升算法https://www.yoojia.com/ask/17-14150131424574609140.html
19.主程序流程图流程图模板程序设计的流程图 算法 算法流程图 计算机 作者其他创作 大纲/内容 语句预格式化 进行日常聊天 NO 输入数据 判断是否是条件推导 结束 开始 YES 逻辑层流程图 Web页面显示 RNN神经网络 句子转对应编号 进行逻辑推导 收藏 立即使用 主程序流程图 wmn777 职业:本科 去主页      评论 0https://www.processon.com/view/5aa5f5e2e4b0f283809c776d
20.操作系统:银行家算法(C语言代码)详解腾讯云开发者社区银行家算法流程图: 银行家算法自然语言描述:设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查: (1)如果Requesti[j]≤ Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。 https://cloud.tencent.com/developer/article/2037654
21.软件工程——程序流程图详解流程图 程序流程图的基本控制结构 程序流程图实例 程序流程图的标准符号(国家标准) 循环的标准符号 注解符的使用 多选择判断 N-S图 N-S图的基本控制结构 N-S图的实例 N-S图的特点 N-S图的扩展表示 PAD图 PAD的扩充控制结构 PAD的优点 程序流程图 程序流程图也称为程序框图,是软件开发者最熟悉的算法表达https://www.pianshen.com/article/77362375677/
22.ISPpipeline流程图及功能模块简述ISP pipeline 流程图如下: 光线经过lens镜头,投射到sensor上,经过光电转换成模拟电信号,再由A/D转换成数字信号,交给ISP芯片进行一系列的处理,在LENS部分也需要进行镜头校正、颜色矫正等一些操作。然后,得到的bayer pattern的image,再经过BLC(black level compensation,黑电平补偿)、lens shading( lens shading correctionhttps://m.elecfans.com/article/2262940.html
23.TMS320F2812DSP的FFT运算和DCT实现AET本文说明了数据采集ADC的功能和FFT算法的原理以及程序设计流程图,在CCS调试平台下,采用C语言编程实现了FFT算法,并且实时性好。阐述了离散余弦变换DCT基本原理,基于TMS320F2812 DSP实现了离散余弦变换。程序运行结果表明,DSP能够快速高效地完成一系列数字信号处理算法[4]。 http://www.chinaaet.com/article/191616
24.算法程序框图基本算法语句顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的。它是由若干个依次执行的步骤组成的,它是任何一个算法都离不开的一种基本算法结构。 见示意图和实例: 顺序结构在程序框图中的体现就是用流程线将程序框自上而下地连接起来,按顺序执行算法步骤。如在示意图中,A框和B框是依次执https://www.360doc.cn/article/925413_215308067.html