基于小波变换的图像融合清晰代码
由于小波变换图像融合算法涉及到多个步骤,代码较为复杂。以下是一个基于小波变换的图像融合清晰代码的示例:
import cv2
import numpy as np
import pywt
def wavelet_fusion(img1, img2):
# 将两幅图像转换为灰度图像
img1_gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
img2_gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
# 对两幅图像进行小波变换
coeffs1 = pywt.wavedec2(img1_gray, 'haar', level=3)
coeffs2 = pywt.wavedec2(img2_gray, 'haar', level=3)
# 将低频部分进行融合
coeffs = []
for i in range(len(coeffs1)):
coeff = (coeffs1[i] + coeffs2[i]) / 2
coeffs.append(coeff)
# 将高频部分进行融合
for i in range(1, len(coeffs1)):
for j in range(len(coeffs1[i])):
coeff1 = coeffs1[i][j]
coeff2 = coeffs2[i][j]
coeff = np.zeros_like(coeff1)
for k in range(len(coeff1)):
for l in range(len(coeff1[0])):
coeff[k][l] = np.max([coeff1[k][l], coeff2[k][l]])
coeffs[i][j] = coeff
# 对融合后的系数进行小波逆变换
img_fused = pywt.waverec2(coeffs, 'haar')
# 将图像像素值缩放到0-255之间
img_fused = np.uint8(img_fused)
img_fused = cv2.normalize(img_fused, None, 0, 255, cv2.NORM_MINMAX)
return img_fused
在上述代码中,我们首先将两幅图像转换为灰度图像,然后对它们进行三级小波变换。接着,我们将两幅图像的低频部分进行平均融合,高频部分进行最大值融合。最后,我们对融合后的系数进行小波逆变换,得到融合后的图像。最后,我们将图像像素值缩放到0-255之间,以便于显示和保存。
原文地址: https://www.cveoy.top/t/topic/b0bJ 著作权归作者所有。请勿转载和采集!