草庐IT

深度学习和高光谱图像分类

Andrew_Xzw 2024-03-28 原文

高光谱图像分类

本人研究生在读期间,研究方向是深度学习(图像分类、目标检测)。导师给了针对于高光谱图像进行分类的相关项目,由于涉及了太多与研究方向不一致的光谱学相关的陌生知识,写下这篇博文的主要目的是回顾下前阵子积累的一些知识,同时和大家一起分享和交流高光谱图像以及后续相关深度学习算法的知识和技巧。

目录

1.高光谱图像的定义

与传统光学RGB三通道彩色图片不同,高光谱由于其具有很高的光谱分辨率,在光谱维度上具有很多个通道,每一个通道捕捉特定的波长。高光谱图像最显著的特征:“图谱合一”,包含了丰富的空间、光谱信息,提供了空间域信息和光谱域信息。其中,在图像的空间维上,高光谱数据与传统光学彩色图像类似;在光谱维上揭示了图像上每一个像元的光谱曲线特征,在高光谱图像种的任意一个像元中都可以获得一个“连续的”光谱曲线。图片从Google网页获取

2.基于光谱分类的原理

物质区别于其它物质的本质特征是由组成物质的分子、原子的种类和排列顺序决定的。当电磁波入射到物质表面的时候,内部的分子和原子的震动使其在特定的波长下形成吸收和反射特征。大多地物都具有典型的光谱吸收特征。根据不同地物由不同的化学成分组成,对光谱具有不同的吸收和反射情况,就可以反映出物质的差异。同物质在不同波段光谱信号下有着不同的表现。根据曲线的差异,可以对高光谱图像中不同的物质进行分类。

3.基于深度学习分类高光谱图像的一些问题

3.1波段冗余

高光谱图像因其“图谱合一”的强大之处,随着光谱维度的波段数量变多,数据量也呈现出指数级增大。因此,信息冗余度高,相邻波段之间,会出现信息重叠,从而增加模型的计算量,给图像分类以及识别带来了很大的困难,对网络模型进行准确分类带来了很大的性能影响。

3.2Hughes现象

首先解释一下这个现象的概念:在高光谱图像分析中,随着参与运算的光谱波段数目的增多,算法的分类精度出现“先增后降”的现象。因为高光谱图像的维度大量增加,网络模型需要提取的特征维数也就随之增加,而高光谱图像的数据集样本数相较于传统光学图片又很少,因而不能提供足够的训练样本产生Hughes现象。

3.3类内变化和类间相似性

由于HSI拥有很高的空间分辨率,图像中的丰富信息增加了类内变化,如:在高光谱图像中,有阴影的屋顶;也增加了类间的相似性和混淆性,如:道路和屋顶在光谱域中相似。

3.4“同物异谱” / “同谱异物”

从地物目标到图像响应的机理和作用过程极其复杂,即使同一种材料,其光谱也会表现出差异。

4.预处理方式

4.1波段选择

从若干波段中挑选出感兴趣的或者有明显对象的特征的波段,也就是从所有波段中选择起主要作用的波段子集。这样既可以减少模型的推理时间和计算量,又可以剔除一些对研究毫无作用的波段。下面的图是我摘自一篇北大核心期刊,有兴趣的小伙伴可以点进去看一看。图中,文中采用PCA算法对蓝莓的高光谱图像进行降维,得到前7个主成分图像。PC1图像显示的虫害特性不明显,PC4以后的主成分图像相对于前几个主成分图像具有明显噪声。PC2和PC3比较明细,因此选取PC2和PC3数据集进行后续实验。

4.2通过数学变换

通过数学变换来对所有波段进行数据压缩,但是这样的方法可能会改变原始数据的物理意义而不利于算法学习。

4.3图像校正和恢复(针对高光谱图像)

用于校正传感器等导致的数据中的几何和辐射异常,环境照明、大气、环境以及传感器噪声等可能需要辐射校正。一般都会对高光谱图像进行黑白校正进行噪声去除,进而可以提升后续的算法分类精度。公式:

4.4分割获得对象的高光谱图像

对于黑白校正后的图像,可以使用大津法对图像进行二值化,利用形态学算法去除噪声点,并对孔洞进行填充,获得掩膜图像。接着,将掩膜图像与校正后的光谱图像进行“与”运算,获取去除背景后的对象的高光谱图像。分割后可以利用多元散射(MSC)对图形进行处理,消除散射影响。

5深度特征提取网络的主要方式

5.1基于预处理的网络

在将光谱和空间特征送进网络模型之前,将其进行特征融合。大致步骤为:低维的光谱和空间特征进行特征融合,基于深度神经网络的高维特征提取,最后使用分类器进行分类

5.2基于集成方式的网络

并不是分别单独获取光谱特征和空间特征,然后将其一起处理。而是直接使用二维的卷积神经网络直接从原始数据中直接进行直接提取联合光谱空间特征。由于高光谱数据是一个三维立方体,也可以使用三维卷积。

5.3基于后处理的网络

分别通过两个深度神经网络提取光谱特征和空间特征,在全连接层融合这两种特征生成联合光谱空间特征,最后使用分类器进行分类。

6.高光谱解混

针对于每类地物理论上应该只有一条光谱曲线,而每类地物有多个类内光谱的原因:
主要就是因为混合像元中一个像元对应的区域内含有两种及以上的特征地物,那最终该像元表现出的光谱曲线其实是由多种地物的特征光谱信息叠加而成。这种叠加又分为线性混合和非线性混合两种混合方式。高光谱解混的过程就是一个将一个混合像元分解为端元和相对应丰度的问题。也就是把这幅影像中每个这样的混合像元分解成端元m及其对应的比例丰度a的过程。

在这个图片的像元中,主要有土地、道路、水三种地物类型。混合像元分解就是根据影像提供的信息判断出每个混合像元由哪些纯像元(端元)、以怎样的方式混合(相对应丰度)。

有关深度学习和高光谱图像分类的更多相关文章

  1. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  4. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  5. ruby-on-rails - 在 Ruby (on Rails) 中使用 imgur API 获取图像 - 2

    我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path

  6. python ffmpeg 使用 pyav 转换 一组图像 到 视频 - 2

    2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p

  7. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  8. ruby - 是否有将图像文件转换为 ASCII 艺术的命令行程序或库? - 2

    有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/

  9. ruby-on-rails - 使用 Dragonfly 从 URL 分配图像 - 2

    我正在使用Dragonfly在Rails3.1应用程序上处理图像。我正在努力通过url将图像分配给模型。我有一个很好的表格:{:multipart=>true}do|f|%>RemovePicture?Dragonfly的文档指出:Dragonfly提供了一个直接从url分配的访问器:@album.cover_image_url='http://some.url/file.jpg'但是当我在控制台中尝试时:=>#ruby-1.9.2-p290>picture.image_url="http://i.imgur.com/QQiMz.jpg"=>"http://i.imgur.com/QQ

  10. Ruby-vips 图像处理库。有什么好的使用示例吗? - 2

    我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby​​代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby​​-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby​​-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby​​-vips的github页面上的链接,我们将不胜感激!如果有ruby​​-

随机推荐