求基于小波变换的图像融合的程序算法(Matlab)

2023-01-08

本文主要是 求基于小波变换的图像融合的程序算法(Matlab) 相关的知识问答,如果你也了解,请帮忙补充。

clc;
clear all;
close all; % 清理工作空间
clear
[imA,map1] = imread('A.tif');
M1 = double(imA) / 256;
[imB,map2] = imread('B.tif');
M2 = double(imB) / 256;

zt= 4;
wtype = 'haar';
% M1 - input image A
% M2 - input image B
% wtype使用的小波类型
% Y - fused image
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% 小波变换图像融合
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 小波变换的绝对值大的小波系数,对应着显著的亮度变化,也就是图像中的显著特征。所以,选择绝对值大
%% 的小波系数作为我们需要的小波系数。【注意,前面取的是绝对值大小,而不是实际数值大小】
%%
%% 低频部分系数采用二者求平均的方法
%%
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

[c0,s0] = wavedec2(M1, zt, wtype);%多尺度二维小波分解

[c1,s1] = wavedec2(M2, zt, wtype);%多尺度二维小波分解

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 后面就可以进行取大进行处理。然后进行重构,得到一个图像
%% 的小波系数,然后重构出总的图像效果。
%% 取绝对值大的小波系数,作为融合后的小波系数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
KK = size(c1);
Coef_Fusion = zeros(1,KK(2));
Temp = zeros(1,2);
Coef_Fusion(1:s1(1,1)) = (c0(1:s1(1,1))+c1(1:s1(1,1)))/2; %低频系数的处理
%这儿,连高频系数一起处理了,但是后面处理高频系数的时候,会将结果覆盖,所以没有关系

%处理高频系数
MM1 = c0(s1(1,1)+1:KK(2));
MM2 = c1(s1(1,1)+1:KK(2));
mm = (abs(MM1)) > (abs(MM2));
Y = (mm.*MM1) + ((~mm).*MM2);
Coef_Fusion(s1(1,1)+1:KK(2)) = Y;
%处理高频系数end

%重构
Y = waverec2(Coef_Fusion,s0,wtype);

%显示图像
subplot(2,2,1);imshow(M1);
colormap(gray);
title('input2');
axis square

subplot(2,2,2);imshow(M2);
colormap(gray);
title('input2');
axis square

subplot(223);imshow(Y,[]);
colormap(gray);
title('融合图像');
axis square;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
参考知识1

这个代码应该可以满足你的要求

追问

为啥每个程序运行都出错了呢

追答

你运行那个kfusion文件,就可以的,我在我机子上测试过的

追问

是不是图片读入出错了啊?我是直接把你的源程序运行,没做任何更改,结果出错了。求大神加QQ925043757 ,远程教我,感激不尽

本回答被提问者采纳
相似知识
mamatlab基于拉普拉斯金字塔分解的图像融合源程序 参考知识1基于拉普拉斯金字塔变换的图像融合functionY=fuse_lap(M1,M2,zt,ap,mp)%功能:基于拉普拉斯金字塔对输入的两幅灰度图像进行融合%输入:M1–输入的灰度图像AM2–
图像融合的三大方法 参考知识1按照层次融合的方法可以划分为三类,像素级融合,特征级融合,决策级融合
matlab如何将读取图像后的RGB矩阵变换为二维自定义矩阵 这个问题的核心在于怎样把图中的各像素点与指定的四种(五种)颜色对应起来,但图中的颜色远不止5种(用HyperSnap可以统计出,题主所贴出的图像包含了11234种颜色)。 猜测这样的交通流图
想用Matlab画出下面图片中函数的三维图像,求大神帮忙编写程序!!! 参考知识1题主的问题可以这样来考虑:首先,用solve函数解出p2,p3(或p0,p1)中任意两个变量其二,将p2,p3(或p0,p1)的解,代入P表达式中,得到含有两个变量的表达式,即P(p0,p1
加权平均法图像融合算法原理是啥? 加权平均法图像融合算法的原理就是:对原图像的像素值直接取相同的权值,然后进行加权平均得到融合图像的像素值,举例说比如要融合两幅图像A,B,那它们的融合后图像的像素值就是A*50%+B*50%,可以参照
加权平均法图像融合算法原理是啥? 加权平均法图像融合算法的原理就是:对原图像的像素值直接取相同的权值,然后进行加权平均得到融合图像的像素值,举例说比如要融合两幅图像A,B,那它们的融合后图像的像素值就是A*50%+B*50%,就这么简
MATLAB RGB图像处理 既然是对每一个的操作都是一样的,就可以直接对图像的像素矩阵进行操作,效果和你用循环对每一个点操作是一样的。例如:I=imread('XXXX');imshow(I);%第3步I2=25
图像融合的目的是啥? 参考知识1图像配准的目的      图像配准是图像处理研究领域中的一个典型问题和技术难点,其目的在于比较或融合针对同一对象在不同条件下获取的