%  小波模极大值用于图像融合

clc;clear
X1=imread('lena64.bmp'); 
 X1=imresize(X1,[184 184]);
I1=(X1);   %把彩色图像转换为灰度图像
figure(1);
subplot(131);imshow(I1); %显示图像1
title('MRI');
X2=imread('21.jpg');
X2=imresize(X2,[184 184]);
I2=rgb2gray(X2/2);   %把彩色图像转换为灰度图像
subplot(132);imshow(I2); %显示图像2
title('CT');

I11=im2double(I1);
I22=im2double(I2);

n=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%小波系数分解得到各个频率分量系数
[c1,s1]=wavedec2(I11,n,'db4');
[c2,s2]=wavedec2(I22,n,'db4');
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对第一幅图像(MRI)的处理:
% [h11,v11,d11]=detcoef2('all',c1,s1,1);%提取第一层二维小波分解的细节分量(高频系数)
% [h12,v12,d12]=detcoef2('all',c1,s1,2);%提取第二层二维小波分解的细节分量(高频系数)
% [h13,v13,d13]=detcoef2('all',c1,s1,1);%提取第三层二维小波分解的细节分量(高频系数)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%第二幅图像(CT)的处理:
% [h21,v21,d21]=detcoef2('all',c2,s2,1);%提取第一层二维小波分解的细节分量(高频系数)
% [h22,v22,d22]=detcoef2('all',c2,s2,2);
[h23,v23,d23]=detcoef2('all',c2,s2,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%提取最高层(第三层)的低频系数
a31=appcoef2(c1,s1,'db4',1);%提取多层二维小波分解的近似分量(低频系数)
a32=appcoef2(c2,s2,'db4',1);%

A3=(a31+a32);

X=I22;
[SIZEX,SIZEY]=size(X);  %  图像尺寸
    
%  多尺度
m=1.0;
delta=2^m;
%  构造高斯函数的偏导
N=20;  %  滤波器长度(需要调整,必须是偶数)
A=-1/sqrt(2*pi);  %  幅度
for index_x=1:N;
    for index_y=1:N;
        x=index_x-(N+1)/2;
        y=index_y-(N+1)/2;
        phi_x(index_x,index_y)=A*(x/delta^2).*exp(-(x.*x+y.*y)/(2*delta^2));
        phi_y(index_x,index_y)=A*(y/delta^2).*exp(-(x.*x+y.*y)/(2*delta^2));
    end
end;
phi_x=phi_x/norm(phi_x);  %  能量归一化
phi_y=phi_y/norm(phi_y);  %  能量归一化
%  对图象做行列卷积
Gx=conv2(X,phi_x,'same');
Gy=conv2(X,phi_y,'same');
%  求梯度
Grads=sqrt((Gx*Gx)+(Gy*Gy));
%  求幅角(梯度方向)
angle_array=zeros(SIZEX,SIZEY);  %  角度
%  遍历
for i=1:SIZEX;
    for j=1:SIZEY
        if (abs(Gx(i,j))>eps*100)  %  x的绝对值足够大
            p=atan(Gy(i,j)/Gx(i,j))*180/pi;  %  反正切求角度值(1,4象限)
            if (p<0)        %  负的幅角(4象限)
                p=p+360;
            end;
            if (Gx(i,j)<0 & p>180)     %  2象限的特殊处理
                p=p-180;
            elseif (Gx(i,j)<0 & p<180) %  3象限的特殊处理
                p=p+180;
            end
        else  %  90或270度
            p=90;
        end
        angle_array(i,j)=p;  %  幅角赋值
    end
end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对CT边缘图像 梯度幅值 进行小波分解
n=1
[c4,s4]=wavedec2(Grads,n,'db4');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%只需提取高频系数
% [h41,v41,d41]=detcoef2('all',c4,s4,1);%提取第一层二维小波分解的细节分量(高频系数)
% [h42,v42,d42]=detcoef2('all',c4,s4,2);%提取第二层二维小波分解的细节分量(高频系数)
[h43,v43,d43]=detcoef2('all',c4,s4,1);%提取第三层二维小波分解的细节分量(高频系数)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对CT边缘图像 角度 进行小波分解
n=1
[c5,s5]=wavedec2(angle_array,n,'db4');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%只需提取高频系数
% [h51,v51,d51]=detcoef2('all',c5,s5,1);%提取第一层二维小波分解的细节分量(高频系数)
% [h52,v52,d52]=detcoef2('all',c5,s5,2);%提取第二层二维小波分解的细节分量(高频系数)
[h53,v53,d53]=detcoef2('all',c5,s5,1);%提取第三层二维小波分解的细节分量(高频系数)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%角度检测  
%%%%%%%%第三层 水平系数 的检测  其中H3(i,j)为融合后第一层小波系数的水平分量
%%%通过角度值 确定幅度值的方向,再与相邻两点值比较,取最大那个值对应的CT原图小波系数作为融合后该点的小波系数
%%%h53是角度的水平分量,h43是幅度的水平分量
[SIZEX,SIZEY]=size(h53);
H3=h23;
for i=2:SIZEX-1
    for j=2:SIZEY-1
        if ((h53(i,j)>=(-22.5) & h53(i,j)<=22.5) | ...
            (h53(i,j)>=(180-22.5) & h53(i,j)<=(180+22.5)))     %  0/180
            if (h43(i,j)>h43(i+1,j) & h43(i,j)>h43(i-1,j))
               H3(i,j)=h23(i,j);
            elseif h43(i+1,j)>h43(i-1,j)
               H3(i,j)=h23(i+1,j); 
            else
                H3(i,j)=h23(i-1,j);
            end

elseif ((h53(i,j)>=(90-22.5) & h53(i,j)<=(90+22.5)) | ...
                (h53(i,j)>=(270-22.5) & h53(i,j)<=(270+22.5))) %  90/270
            if (h43(i,j)>h43(i,j+1) & h43(i,j)>h43(i,j-1))
                H3(i,j)=h23(i,j);
            elseif h43(i,j+1)>h43(i,j-1)
                H3(i,j)=h23(i,j+1);
            else
                H3(i,j)=h23(i,j-1);
            end

elseif ((h53(i,j)>=(45-22.5) & h53(i,j)<=(45+22.5)) | ...
                (h53(i,j)>=(225-22.5) & h53(i,j)<=(225+22.5))) %  45/225
            if (h43(i,j)>h43(i+1,j+1) & h43(i,j)>h43(i-1,j-1))
                H3(i,j)=h23(i,j);
            elseif h43(i+1,j+1)>h43(i-1,j-1)
                H3(i,j)=h23(i+1,j+1);
            else
                 H3(i,j)=h23(i-1,j-1);
            end

else  %  135/215
            if (h43(i,j)>h43(i+1,j-1) & h43(i,j)>h43(i-1,j+1))
                H3(i,j)=h23(i,j);
            elseif h43(i+1,j-1)>h43(i-1,j+1)
                 H3(i,j)=h23(i+1,j-1);
            else
                H3(i,j)=h23(i-1,j+1);
            end

end
    end
end

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

D-20

小波模极大值用于图像融合相关推荐

  1. 第 11 章 基于小波技术进行图像融合--MATLAB人工智能深度学习模块

    matlab实现基于小波技术进行图像融合–人工智能深度学习模块 该案例相对简单.实现程序 % MAINFORM MATLAB code for MainForm.fig % MAINFORM, by ...

  2. 小波模极大值 matlab,Matlab程序关于小波模极大值

    哪位好心人能提供求模极大值的matlab程序呀?谢谢 下面这个是我从网上找到的,但运行后总说未定义函数wave_peak points=406; level=3; sr=360; num_inter= ...

  3. 【数字信号去噪】基于matlab改进的小波模极大值数字信号去躁【含Matlab源码 1710期】

    ⛄一.小波阈值法去噪概述 电能质量扰动信号的噪声大多以高斯白噪声的形式存在,利用小波变换对信号进行多分辨率分解,由于小波变换具有去除数据相关性的特点,故可以将有用信号与噪声的能量分离开来.信号中有效的 ...

  4. 小波在图像融合中的应用

    小波应用于图像融合 图像融合是综合两幅或者多幅图像的信息,以获得对同一场景更为准确.更为全面.更为可靠的图像描述. 1.在融合前对图像进行预处理,去除噪声. 2.对ImageA和ImageB进行DWT ...

  5. 图像融合(Image Fusion)

    图像融合(Image Fusion) 是用特定的算法将两幅或多幅图像综合成一幅新的图像.融合结果由于能利用两幅(或多幅) 图像在时空上的相关性及信息上的互补性,并使得融合后得到的图像对场景有更全面.清 ...

  6. 图像融合论文及代码网址整理总结(1)——多聚焦图像融合

    写在前面的话: 本篇博文主要整理汇总一下现有的多聚焦图像融合算法(文章和代码).适当地,也会整理出相关作者的学术主页.整理这些的初衷,是为了方便自己,顺便也给同领域的研究者在找代码等方面提供些许便利. ...

  7. 【图像融合学习笔记001】图像融合论文及代码网址整理总结(1)——多聚焦图像融合

    写在前面的话: 本篇博文主要整理汇总一下现有的多聚焦图像融合算法(文章和代码).适当地,也会整理出相关作者的学术主页.整理这些的初衷,是为了方便自己,顺便也给同领域的研究者在找代码等方面提供些许便利. ...

  8. 代码 马佳义_【图像融合学习笔记002】图像融合论文及代码网址整理总结(2)——红外与可见光图像融合...

    写在前面的话: 本篇博文主要整理汇总一下现有的红外与可见光图像融合算法(文章和代码).适当地,也会整理出作者的学术主页.整理这些的初衷,是为了方便自己,顺便也给同领域的研究者在找代码等方面提供些许便利 ...

  9. 红外和可见光图像融合论文及代码整理

    红外和可见光图像融合论文及代码整理 News [2022-07-29] 我们的综述论文<基于深度学习的图像融合方法综述>被<中国图象图形学报>正式接收![论文下载] 本篇博文在 ...

最新文章

  1. leetcode算法题--有序数组中的单一元素
  2. 2019年Java程序设计讲课笔记目录
  3. js html5是什么意思,javascript是什么意思
  4. 如何让自己时刻冷静的方法_睡前如何自己丰胸 健康有效方法 成就窈窕淑女
  5. Getting Contexts 获得上下文
  6. oracle显示更新条数的函数,ORACLE学习笔记-添加更新数据函数篇
  7. Python入门--列表生成式
  8. 软件测试技术的方向,软件测试技术课堂教学计划(.NET方向
  9. PHP开发工资条短信通知
  10. 史上最全软件测试Web测试要点,吐血整理。
  11. SED替换字符串用法
  12. Android常用布局-01
  13. XFP模块和SFP光模块
  14. yarn : 无法加载文件 C:\Users\wangxin67\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.mic
  15. The Preliminary Contest for ICPC Asia Nanjing 2019
  16. 文件转换-----(类型,格式)
  17. opencv教程(基于python)----关于滑条
  18. 【数学之美】分形图形动画演示欣赏
  19. 使用Tand自动化您的机器学习工作流程
  20. Shellmo:用于娱乐和教育的Aquatic 3D打印机器人

热门文章

  1. 【OpenCV】3.4.0图像拼接Stitching模块介绍
  2. 西瓜卡顿 ANR 优化治理及监控体系建设
  3. CoreData基础
  4. 抢票(python)
  5. html严格模式和标准模式,怎么触发这两种模式
  6. 计算机教育杂志有核心期刊吗,计算机教育杂志是核心期刊吗?
  7. 深度学习之COLA-Net
  8. 链表,队列,堆栈的区别
  9. Android后台Kill(二):ActivityManagerService与App现场恢复机制
  10. 将项目上传至GitHub