利用 MATLAB 彩色显示高光谱图像(伪彩色,真彩色)

article/2025/5/15 23:23:14

利用 MATLAB 彩色显示高光谱图像(伪彩色,真彩色)

    • 前言
    • 一、使用imshow函数彩色显示高光谱图像
    • 注意事项:

欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/

前言

我们平时所看到的自然图像包含RGB三个通道,区别于传统图像,由高光谱传感器获取的数据包含了很多波段,在ENVI中可以通过赋予RGB通道不同波长的波段来实现高光谱的真彩色和假彩色显示。很多从事高光谱图像处理的朋友们,基本上都是采用MATLAB进行编程,在利用MATLAB进行图像处理中,有时候会经常需要查看高光谱的真彩色和假彩色图像,因此如何利用MATLAB实现该功能也成为很多朋友们面对的一个问题,下面笔者分享自己的一些代码,希望对您的科研和工作有所帮助。

一、使用imshow函数彩色显示高光谱图像

function [rgb] = func_hyperImshow( hsi, RGBbands )
%% Hyperspectral Image color display
% Author: Zephyr Hou
% Time: 2019-12-02
% Function Usage
% Input:
%    hsi—the 3D hyperspectral dataset with the size of rows x cols x bands
%    RGBbands— the RGB bands to be displayed, with the format [R G B]
% Output:
%    rgb- the finual result with the RGB bands with the size of (rows x cols x 3)  
%% Main Functionhsi=double(hsi);
[rows, cols, bands] = size(hsi);minVal =min(hsi(:));
maxVal=max(hsi(:));
normalizedData=hsi-minVal;if(maxVal==minVal)normalizedData=zeros(size(hsi));
elsenormalizedData=normalizedData./(maxVal-minVal);
endhsi=normalizedData;[rows, cols, bands] = size(hsi);if (nargin == 1)RGBbands = [bands round(bands/2) 1];
endif (bands ==1)red = hsi(:,:);green = hsi(:,:);blue = hsi(:,:);
elsered = hsi(:,:,RGBbands(1));green = hsi(:,:,RGBbands(2));blue = hsi(:,:,RGBbands(3));
endrgb = zeros(size(hsi, 1), size(hsi, 2), 3);
rgb(:,:,1) = adapthisteq(red);      % Adaptive histogram equalization
rgb(:,:,2) = adapthisteq(green);
rgb(:,:,3) = adapthisteq(blue);
imshow(rgb); axis image;   % 保持图像的显示比例,其中axis为坐标轴的控制函数。
end

使用方法如下:

load('Viareggio.mat') % 导入需要显示的影像
[rgb] = func_hyperImshow(hsi,[219,144,66]); % func_hyperImshow(3D高光谱图像,[R,G,B])

如下图所示,左边为在envi中以真彩色格式显示的图像,右侧为使用该函数显示的具体效果图像。
在这里插入图片描述
可以看到通过matlab显示的彩色图像与ENVI中彩色显示图像基本上色彩相同,不同之处在于ENVI的的图像相对亮点,这是由于在ENVI进行图像显示时,软件对图像进行了自动2% 的线性拉伸,因此ENVI显示图像会稍微显得亮点。

这样通过不同的波段选择即可实现不同高光谱图像的真彩色和假彩色显示。

注意事项:

  1. 该代码基于matlab 2018a编写,如果不能显示,请排查输入数据格式函数是否正确使用matlab版本(如果版本太低,可能有些函数不支持,需要修改);
  2. 该函数已经在很多组高光谱数据上进行了测试,没有问题,indian_pines等绝大多数据没有问题;

http://chatgpt.dhexx.cn/article/FZp6Yj7C.shtml

相关文章

opencv之伪彩色处理

伪彩色处理 伪彩色(pseudo-color)合成是按特定的数学关系把单波段灰度图像的灰度级变成彩色,然后进行彩色显示的方法,其目的是通过数据的彩色表达来增强区分目标的能力。 在图像分割之后,需要对目标进行上色,多数情况…

OpenCV--006:伪彩色:LUT作用与用法

文章目录 一、伪彩色二、LUT1. LUT概念2. 作用3. LUT函数4. LUT应用4.1 颜色空间缩减4.2 图像反转 三、OpenCV:applyColorMap函数 一、伪彩色 伪彩色(Pseudo-color)图像的每个像素的颜色不是由每个基本色分量的数值直接决定,实际…

【OpenCV 例程300篇】203. 伪彩色图像处理

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换(cv.LUT) 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录 【youcans 的 OpenCV 例程300篇】203. 伪彩色图像处理什么是伪彩色图像&#xff1f…

itoa函数和atoi函数

itoa是广泛应用的非标准 C语言扩展函数。由于它不是标准C语言函数&#xff0c;所以不能在所有的 编译器中使用。但是&#xff0c;大多数的编译器&#xff08;如Windows上的&#xff09;通常在<stdlib.h>头文件中包含这个函数。 1说明编辑 功能&#xff1a;将任意类型的数…

C++之spriintf函数(itoa函数)

sprintf函数 头文件&#xff1a;stdio.h 原型 int sprintf( char *buffer, const char *format, [ argument] … ); 参数列表 buffer&#xff1a;char型指针&#xff0c;指向将要写入的字符串的缓冲区。 format&#xff1a;格式化字符串。 [argument]…&#xff1a;可选参数&a…

Vue 艺术字体下载、设置

1&#xff0c;本人常用的下载地址&#xff1a;https://zh.fonts2u.com/ 2&#xff0c;找到你需要的字体点击下载 3&#xff0c;下载完之后有一个ttf文件 4&#xff0c;在vue里面&#xff0c;我个人在assets文件下创建一个文件夹&#xff0c;叫什么名字都行&#xff0c;找到你…

vue下载跨域图片

<a style"color: #409EFF;" click"downImg(url)">下载还款凭证</a>//方法一 &#xff08;只有这种方法解决我的需求&#xff09; downImg(imgsrc) {const src ${imgsrc}?t${new Date().getTime()}fetch(src).then(res > {res.blob().th…

vue点击url链接下载文件

在src下面新建一个downLoadUrl的目录 downLoadUrl / index.js文件 /** 后端返回文件的url,前端创建a标签来下载** 1. 解决了若文件为图片或浏览器支持的格式类型,点击下载会直接打开文件的问题,* 2. 下载文件时,浏览器会有闪动的问题** 页面内使用* 1. 引入指令 import do…

vue文件下载及重命名

本文所讲的下载地址格式为&#xff1a;地址文件名&#xff08;例如&#xff1a;http... test.docx&#xff09; 页面代码&#xff1a; <!--map为所下载的文件信息&#xff0c;包括文件名、路径等 --> <p v-down"map">这是文件名</p> js代码…

使用npm下载vue-router(vuex)路由报错,“export ‘XXXX‘ was not found in ‘vue‘

vue-router vuex 报错同理 vue-router vuex 报错同理 今天在写vue项目使用cnpm下载路由&#xff0c;然后就报错"export ref was not found in vue 原因&#xff1a;cnpm install vue-router --save 现在默认下载的是4.x的版本 &#xff0c;我是用的是…

vue实现文件下载

vue中文件下载 前言 Vue浏览器文件下载最简单的方法就是用a链接实现&#xff0c;然后加一个download属性。让后端返回[blob]文件格式&#xff0c;需要传递 responseType: ‘blob’ 一、使用步骤 展示文件&#xff0c;文件点击后查看方法为handlePreview <span style&qu…

vue学习之一:下载vue-cli项目

这几周一直辗转在vue官网和各大博客搜索关于vue项目实战的例子。学的实在是零零碎碎的。不过总算在对于vue项目搭建有个基本认知&#xff0c;于是直接拿起以前做过的项目进行改版了&#xff0c;接下来是从怎么搭建vue2.xvue-router项目实战写的一些列文章。我的开发环境都是基于…

下载vue脚手架@vue/cli(详解)

1.首先到官网下载node.js 2.在自己的电脑查看是否下载成功 使用window加r输入cmd使用node -v 查看node.js是否下载成功 3.使用npm下载yarn 注意&#xff1a;因为下载node.js中会自动帮你下载npm&#xff0c; npm install -g yarn 使用yarn -v 如果显示有版本号则下载成功…

vue.js中文官网下载vue.js失败了?

访问vue官网 https://v2.cn.vuejs.org/v2/guide/installation.html下载vue.js&#xff0c;页面直接报错404&#xff0c;只需要切换到英文版&#xff0c;重新下载即可成功。 或者直接访问以下地址: https://v2.vuejs.org/v2/guide/installation.html#Direct-lt-script-gt-Includ…

如何下载vue.js

vue官网&#xff1a;https://v2.vuejs.org/ 1、第一步 2、第二步 3、 第三步

idea 下载vue 插件

1.先查看自己的idea 的版本 2.然后去官网 https://plugins.jetbrains.com/plugin/9442-vue-js/versions 下载跟自己idea 版本对应的vue插件 一定要对应不然 报版本不对应问题 类似于&#xff1a; 下载完之后 把文件放在 相应位置 我是放在了idea的插件位置 一般是在 idea的…

Vue.js的下载和调用

Vue支持双向绑定&#xff0c;非常不错。将视图层和模型层分离开。是基于MVVM模型&#xff0c;模型-视图-视图模型 。支持ES6。 目录 一、在官网下载vue.js文件 二、声明Vue对象 三、Vue修饰符 1. v-once。 使{{}}内的值不能被修改 2.v-pre 。{{}}将不会被Vue替换&#xff0c…

操作系统课后答案第三章

**操作系统课后答案**第三章 处理及调度与死锁 1、高级调度与低级调度的主要任务是什么? 为什么要引入中级调度? 答&#xff1a;高级调度的主要任务&#xff1a;用于决定把外存上处于后背队列中的哪些作业调入内存&#xff0c;并为它们创建进程&#xff0c;分配必要的资源&am…

第1章 操作系统引论课后答案

第1章 操作系统引论 1.1 简答题参考答案 1&#xff0e;在计算机系统上配置 OS&#xff08;operating system&#xff0c;操作系统&#xff09;的目标是什么&#xff1f;作用主 要表现在哪几个方面&#xff1f; 【参考答案】在计算机系统上配置OS&#xff0c;主要目标是实现&a…

操作系统解答题

操作系统 **1.平均等待时间问题****2.同步互斥问题****3.分页系统地址转换****4.LRU&#xff08;最近最久未使用&#xff09;置换算法**5.银行家算法 1.平均等待时间问题 有5个进程P1&#xff0c;P2&#xff0c;P3&#xff0c;P4&#xff0c;P5&#xff0c;它们同时依次进入就…