# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import cv2
from math import log
from PIL import Image
import datetime
import pywt
# 以下强行用Python宏定义变量
halfWindowSize=9
src1_path = 'F:\\Python\\try\\BasicImageOperation\\disk1.jpg'
src2_path = 'F:\\Python\\try\\BasicImageOperation\\disk2.jpg'
'''
来自敬忠良,肖刚,李振华《图像融合——理论与分析》P85:基于像素清晰度的融合规则
1,用Laplace金字塔或者是小波变换,将图像分解成高频部分和低频部分两个图像矩阵
2,以某个像素点为中心开窗,该像素点的清晰度定义为窗口所有点((高频/低频)**2).sum()
3,目前感觉主要的问题在于低频
4,高频取清晰度图像中较大的那个图的高频图像像素点
5,算法优化后速度由原来的2min.44s.变成9s.305ms.
补充:书上建议开窗大小10*10,DWT取3层,Laplace金字塔取2层
'''
def imgOpen(img_src1,img_src2):
apple=Image.open(img_src1).convert('L')
orange=Image.open(img_src2).convert('L')
appleArray=np.array(apple)
orangeArray=np.array(orange)
return appleArray,orangeArray
# 严格的变换尺寸
def _sameSize(img_std,img_cvt):
x,y=img_std.shape
pic_cvt=Image.fromarray(img_cvt)
pic_cvt.resize((x,y))
return np.array(pic_cvt)
# 小波变换的层数不能太高,Image模块的resize不能变换太小的矩阵,不相同大小的矩阵在计算对比度时会数组越界
def getWaveImg(apple,orange):
appleWave=pywt.wavedec2(apple,'haar',level=4)
基于像素清晰度的图像融合算法(Python实现)
最新推荐文章于 2025-03-18 16:49:12 发布