IHS图像融合方法+Python代码

1、方法原理

HIS为:亮度(I )、色调(H)、饱和度(S);

强度表示光谱的整体亮度大小,对应于图像的空间分辨率;

传统的IHS图像融合方法基本思想是将IHS空间中的低分辨率亮度用高分辨率的图像的亮度成分所代替;

首先是正变换:

   

                                                     

                                                     

2、方法代码

def IHS(data_low,data_high):"""基于IHS变换融合算法输入:np.ndArray格式的三维数组返回:可绘出图像的utf-8格式的三维数组"""A = [[1./3.,1./3.,1./3.],[-np.sqrt(2)/6.,-np.sqrt(2)/6.,2*np.sqrt(2)/6],[1./np.sqrt(2),-1./np.sqrt(2),0.]] #RGB->IHS正变换矩阵B = [[1.,-1./np.sqrt(2),1./np.sqrt(2)],[1.,-1./np.sqrt(2),-1./np.sqrt(2)],[1.,np.sqrt(2),0.]] #IHS->RGB逆变换矩阵A = np.matrix(A)B = np.matrix(B)band , w , h = data_high.shapepixels = w * hdata_low = data_low.reshape(3,pixels)data_high = data_high.reshape(3,pixels)a1 = np.dot(A , np.matrix(data_high))#高分影像正变换a2 = np.dot(A , np.matrix(data_low))#低分影像正变换a2[0,:] = a1[0,:]#用高分影像第一波段替换低分影像第一波段RGB = np.array(np.dot(B , a2))#融合影像逆变换RGB = RGB.reshape((3,w,h))min_val = np.min(RGB.ravel())max_val = np.max(RGB.ravel())RGB = np.uint8((RGB.astype(np.float) - min_val) / (max_val - min_val) * 255)RGB = Image.fromarray(cv2.merge([RGB[0],RGB[1],RGB[2]]))
return RGBdef imresize(data_low,data_high):"""图像缩放函数输入:np.ndArray格式的三维数组返回:np.ndArray格式的三维数组"""band , col , row = data_high.shapedata = np.zeros(((band,col,row)))for i in range(0,band):data[i] = smi.imresize(data_low[i],(col,row))
return datadef gdal_open(path):"""读取图像函数输入:图像路径返回:np.ndArray格式的三维数组"""data = gdal.Open(path)col = data.RasterXSize#读取图像长度row = data.RasterYSize#读取图像宽度data_array_r = data.GetRasterBand(1).ReadAsArray(0,0,col,row).astype(np.float)#读取图像第一波段并转换为数组data_array_g = data.GetRasterBand(2).ReadAsArray(0,0,col,row).astype(np.float)#读取图像第二波段并转换为数组data_array_b = data.GetRasterBand(3).ReadAsArray(0,0,col,row).astype(np.float)#读取图像第三波段并转换为数组data_array = np.array((data_array_r,data_array_g,data_array_b))
return data_array

执行代码:

def main(path_low,path_high):data_low = gdal_open(path_low)data_high = gdal_open(path_high)data_low = imresize(data_low,data_high)RGB = IHS(data_low,data_high)RGB.save("IHS.png",'png')
if __name__ == "__main__":path_low = 'RGB.tif'path_high = 'Band8.tif'main(path_low,path_high)

3、执行结果

高分全色波段:

RGB影像:

IHS融合结果:

IHS图像融合方法+Python代码相关推荐

  1. 图像融合论文及代码整理最全大合集

    最全图像融合论文及代码整理 News [2022-07-29] 我们的综述论文<基于深度学习的图像融合方法综述>被<中国图象图形学报>正式接收![论文下载] Github项目地 ...

  2. 红外和可见光图像融合论文及代码整理

    红外和可见光图像融合论文及代码整理 News [2022-07-29] 我们的综述论文<基于深度学习的图像融合方法综述>被<中国图象图形学报>正式接收![论文下载] 本篇博文在 ...

  3. 几种常规的图像融合方法及其原理

    目前,根据图像融合的层次,将图像融合算法分为像素级图像融合,特征级图像融合和决策级图像融合.像素级图像融合处理主要是在图像像素层面上操作处理图像数据,属于基础层次的图像融合.优点是可以保持源图像更多的 ...

  4. 遥感图像融合c语言,一种多源遥感图像融合方法与流程

    本发明涉及图像处理技术领域,具体地说是一种多源遥感图像融合方法. 背景技术: 多源遥感图像融合是指将来源于不同传感器的同一场景的两幅或多幅遥感图像进行信息互补叠加,得到信息更加精确和完善的综合图像的图 ...

  5. 图像融合论文及代码网址整理总结(1)——多聚焦图像融合

    写在前面的话: 本篇博文主要整理汇总一下现有的多聚焦图像融合算法(文章和代码).适当地,也会整理出相关作者的学术主页.整理这些的初衷,是为了方便自己,顺便也给同领域的研究者在找代码等方面提供些许便利. ...

  6. 金字塔图像融合方法总结(一)

    一.高斯金字塔和下采样 为了获取层级为 G_i+1 的金字塔图像,我们采用如下方法: <1>对图像G_i进行高斯内核卷积 <2>将所有偶数行和列去除 得到的图像即为G_i+1的 ...

  7. 基于深度学习的红外和可见光图像融合论文及代码整理

    基于深度学习的红外和可见光图像融合论文及代码整理 首先附上近期整理基于深度学习的图像融合论文的思维导图 本篇博客主要整理基于深度学习的红外和可见光图像融合的论文和代码 图像融合系列博客还有: 图像融合 ...

  8. 帮推|基于深度学习的图像融合方法综述

    基于深度学习的图像融合方法综述 博主朋友关于图像融合的综述论文基于深度学习的图像融合方法综述已被<中国图象图形学报>正式接收! 极力推荐想要入门图像融合领域的小伙伴下载学习,此外希望在图像 ...

  9. 图像融合论文及代码网址整理总结(3)——题目中未加区分的图像融合算法

    写在前面的话: 之前写过两篇博文,针对性地整理汇总了多聚焦图像融合和红外与可见光图像融合的算法.之所以这样分类,是基于论文的标题和内容中明确指出了所处理的图像类型. 而本篇博文主要整理那些论文标题中未 ...

最新文章

  1. 高性能交易系统设计原理
  2. 修改 Docker 的镜像存储位置
  3. 让Oracle跑得更快 ——博文视点大讲堂34期活动圆满结束
  4. Django常用命令
  5. Centos 6让SVN提交文件自动更新到nginx的WEB目录
  6. Python实现微信自动发送消息
  7. VS2017好用的插件推荐
  8. json转换成图片工具类
  9. [区块链安全-Ethernaut]附加GoodSamaritan解题思路
  10. 微信文章如何增加阅读率
  11. JQuery插件:遮罩+数据加载中。。。(特点:遮你想遮,罩你想罩)
  12. html javascript div 加边框,html div 加边框样式
  13. 与第三方iot平台IFTTTSmartthingsGoogle对接开发iot物联网云服务
  14. 数组属于一种原生类吗_瘢痕有很多种类型,你的瘢痕到底属于哪一种你知道吗?...
  15. matlab lbm 代码,Matlab实现格子玻尔兹曼方法(Lattice Boltzmann Method,LBM)模拟
  16. Java 在线预览pdf
  17. Redis和Git的常见命令
  18. IEC104协议规约通过工业智能网关(协议转换器)转换modbus协议?
  19. 用户角色权限的简单理解
  20. 群论在物理学中的应用

热门文章

  1. MySQL数据库的下载和安装(详细)
  2. AliyunIoTSDK库使用问题和阿里云错误码解决
  3. Oracle用户名有引号,关于oracle sql 中as与双引号的一点有趣故事
  4. matlab中双引号,我如何在Matlab的细胞去掉双引号?
  5. U盘安装linux系统【RHEL 6.3 server】
  6. 220914笔试(华为)
  7. 【bzoj 4202】石子游戏(博弈论+LCT)
  8. DEVC++密室逃脱V1.03
  9. 全息图再现matlab程序,Matlab程序错误原因?菲涅耳积分和全息图的生成与再现
  10. 用 Python 基于 pyecharts 对微信好友进行分析