由于小波变换图像融合算法涉及到多个步骤,代码较为复杂。以下是一个基于小波变换的图像融合清晰代码的示例:

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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录