红外 可见光 图像融合 Python 代码
时间: 2023-05-24 21:05:33 浏览: 797
红外和可见光图像融合,红外和可见光图像融合目的,Python实现源码(优质项目源码).zip
5星 · 资源好评率100%
这里提供一个基于Python的红外和可见光图像融合代码,主要使用了NumPy和OpenCV库。
首先安装所需库:
```
pip install numpy opencv-python
```
以下是代码:
```python
import cv2
import numpy as np
# 载入红外图像
infrared_img = cv2.imread("infrared.jpg", 0)
# 载入可见光图像
visible_img = cv2.imread("visible.jpg")
# 将可见光图像进行拉伸,将像素值范围从 0-255 转换到 0-65535
visible_img = cv2.normalize(visible_img, None, 0, 65535, cv2.NORM_MINMAX)
# 将可见光图像像素值类型转换为16位无符号整数
visible_img = np.uint16(visible_img)
# 进行伽马变换,增强图像对比度
gamma = 2.2
visible_img = np.power((visible_img / float(np.max(visible_img))), gamma)
visible_img = np.uint16(visible_img * 65535)
# 将红外图像转换为3通道,便于与可见光图像进行融合
infrared_img = cv2.cvtColor(infrared_img, cv2.COLOR_GRAY2BGR)
# 将可见光图像和红外图像进行加权融合
alpha = 0.4
beta = 1 - alpha
fusion_img = cv2.addWeighted(visible_img, alpha, infrared_img, beta, 0)
# 显示融合后的图像
cv2.imshow("fusion", fusion_img)
cv2.waitKey(0)
```
代码解释:
1. `cv2.imread` 载入两幅图像,分别为红外图像和可见光图像。
2. `cv2.normalize` 可见光图像拉伸像素值范围,将像素值范围从 0-255 转换到 0-65535。
3. `np.uint16` 将可见光图像的像素值类型转换为16位无符号整数。
4. `np.power` 进行伽马变换,增强图像对比度。
5. `cv2.cvtColor` 将红外图像转换为3通道,便于与可见光图像进行融合。
6. `cv2.addWeighted` 将可见光图像和红外图像进行加权融合。
7. `cv2.imshow` 显示融合后的图像。
注意事项:
1. 代码中可见光图像和红外图像的文件路径需要更改为实际路径;
2. 可见光图像的拉伸范围可根据实际情况进行调整;
3. 融合系数 `alpha` 可根据实际情况进行调整,通常为0.3到0.7之间。
阅读全文