matlab图像融合
matlab图像融合
[r,c]=size(y1); %根据低频融合算法进行图像融合
for i=1:r %首先取两幅源图像相应的小波分解系数绝对值最大者的值作为融合图像的分解系数
for j=1:c
if( abs(y1(i,j)) >= abs(y2(i,j)) )
y3(i,j)=y1(i,j);
elseif( abs(y1(i,j)) < abs(y2(i,j)) )
y3(i,j)=y2(i,j);
end
% y3(i,j)=max(abs(y1(i,j)) , abs(y2(i,j)) ); % 这行代码是错误的,取了绝对值而非实际值
end
end
(2)低频融合的对象
低频融合的对象是N级分解后图像的LL-N子图像,相应的程序代码为:
LLa=y1(1:r/(2^dim),1:c/(2^dim)); %调用lowfrefus函数对低频部分的小波分解系数进行融合
LLb=y2(1:r/(2^dim),1:c/(2^dim));
y3(1:r/(2^dim),1:c/(2^dim))=lowfrefus(LLa,LLb);
(3)低频融合策略的程序代码
这一部分程序代码的实现难度不大,根据算法原理中列出的公式可以很快写出相应的代码。不过有些细节问题还是要花心思处理,比如区域大小的确定、区域边界与图像边界的关系、区域中心与区域中各点的权值确定、区域中心在原始图像中的具体位置等等。
function y = lowfrefus(A,B);
% 函数 Y=LOWFREFUS(A,B) 对输入的两个小波分解系数矩阵,根据低频融合算法,得出融合图像的低频小波分解系数
[row,col]=size(A); %求出分解系数矩阵的行列数
alpha=0.5; %alpha是方差匹配度比较的阈值
for i=1:row %根据低频融合算法,先求出矩阵A,B中以点P为中心的区域方差和方差匹配度
forj=1:col % 再根据方差匹配度与阈值的比较确定融合图像的小波分解系数
[m2p(i,j),Ga(i,j),Gb(i,j)]= area_var_match(A,B,[i,j]);
Wmin=0.5-0.5*((1-m2p(i,j))/(1-alpha));
Wmax=1-Wmin;
ifm2p(i,j)<alpha % m2p表示方差匹配度
ifGa(i,j)>=Gb(i,j) % 若匹配度小于阈值,则取区域方差大的相应点的分解系数作为融合图像的分解系数
y(i,j)=A(i,j);
else
y(i,j)=B(i,j);
end
else %若匹配度大于阈值,则采取加权平均方法得出相应的分解系数
ifGa(i,j)>=Gb(i,j)
y(i,j)=Wmax*A(i,j)+Wmin*B(i,j);
else
y(i,j)=Wmin*A(i,j)+Wmax*B(i,j);
end
end
end
end
function w = weivec(x,p);
% 函数 W=WEIVEC(X,P) 对输入的r*c矩阵,计算出以点p为中心时矩阵各点的对应权值
% 距离点p越近,权值就越大。权值是通过行和列的高斯分布加权相加得到的。
[r,c]=size(x);
p1=p(1); p2=p(2);
sig=1;
for i=1:r
for j=1:c
w(i,j)=0.5*(gaussmf(i,[sigp1])+gaussmf(j,[sig p2]));
end
end
function [m2p,Ga,Gb] =area_var_match(A,B,p);
% 函数 area_var_match 计算两个输入矩阵以点p为中心的区域方差以及区域方差匹配度
level=1; % 设置区域的大小
[subA,mpa,npa]=submat(A,p,level); %submat 函数取输入矩阵中以点P为中心、阶数为(2*level+1)的方阵作为子矩阵
[subB,mpb,npb]=submat(B,p,level);
[r,c]=size(subA);
w=weivec(subA,[mpa npa]); %获取子矩阵的权值分布
averA=sum(sum(subA))/(r*c); % 计算子矩阵的平均值
averB=sum(sum(subB))/(r*c);
Ga=sum(sum(w.*(subA-averA).^2)); %计算子矩阵的区域方差
Gb=sum(sum(w.*(subB-averB).^2));
if(Ga==0)&(Gb==0) % 计算两个子矩阵的区域方差匹配度
m2p=0;
else
m2p=2*sum(sum(w.*abs(subA-averA).*abs(subB-averB)))/(Ga+Gb);
end
function [smat,mp,np] = submat(x,p,level);
% 函数 submat 取输入矩阵中以点P为中心、阶数为(2*level+1)的方阵作为输出的子矩阵
[row,col]=size(x);
m=p(1); n=p(2);
if (m>row)||(n>col)
error('Point p isout of matrix X !');
return;
end
if((2*level+1)>row)||((2*level+1)>col)
error('Too largesample area level !');
return;
end
% 设置子矩阵的边界值
up=m-level; down=m+level;
left=n-level; right=n+level;
% 若子矩阵的某一边界值超出输入矩阵的相应边界,就进行边界处理,
% 即超出边界后往相反方向平移,使其恰好与边界重合
if left<1
right=right+1-left;
left=1;
end
if right>col
left=left+col-right;
right=col;
end
if up<1
down=down+1-up;
up=1;
end
if down>row
up=up+row-down;
down=row;
end
% 获取作为输出的子矩阵,并计算点p在输出的子矩阵中的位置
smat = x(up:down,left:right);
mp=m-up+1;np=n-left+1;
下面我们给出相应的图片示例,图1 是一幅远景清晰近景模糊的图片,图2 是一幅远景模糊近景清晰的图片,图3是融合效果图。
图像融合是将两幅或多幅图像融合在一起,以获取对同一场景的更为精确、更为全面、更为可靠的图像描述。融合算法应该充分利用各原图像的互补信息,使融合后的图像更适合人的视觉感受,适合进一步分析的需要;并且应该统一编码,压缩数据量,以便于传输。
图像融合可分为三个层次:
1. 像素级融合
2. 特征级融合
3. 决策级融合
其中像素级融合是最低层次的融合,也是后两级的基础。它是将各原图像中对应的像素进行融合处理,保留了尽可能多的图像信息,精度比较高, 因而倍受人们的重视。像素级的图像融合方法大致可分为三大类:
1. 简单的图像融合方法
2. 基于塔形分解(如Laplace塔形分解、比率塔等)的图像融合方法
3. 基于小波变换的图像融合方法
小波变换是图像的多尺度、多分辨率分解,它可以聚焦到图像的任意细节,被称为数学上的显微镜。近年来,随着小波理论及其应用的发展,已将小波多分辨率分解用于像素级图像融合。小波变换的固有特性使其在图像处理中有如下优点:
1. 完善的重构能力,保证信号在分解过程中没有信息损失和冗余信息;
2. 把图像分解成平均图像和细节图像的组合,分别代表了图像的不同结构,因此容易提取原始图像的结构信息和细节信息;
3. 具有快速算法,它在小波变换中的作用相当于FFT算法在傅立叶变换中的作用,为小波变换应用提供了必要的手段;
4. 二维小波分析提供了与人类视觉系统方向相吻合的选择性图像。
——像素级图像融合的主要步骤
以两幅图像的融合为例。设A,B为两幅原始图像,F为融合后的图像。若对二维图像进行N层的小波分解,最终将有(3N+1)个不同频带,其中包含3N 个高频子图像和1个低频子图像。其融合处理的基本步骤如下:
(1)对每一原图像分别进行小波变换,建立图像的小波塔型分解;
(2)对各分解层分别进行融合处理。各分解层上的不同频率分量可采用不同的融合算子进行融合处理,最终得到融合后的小波金字塔;
(3)对融合后所得小波金字塔进行小波重构,所得到的重构图像即为融合图像。
图 1
在图像融合过程中,小波基的种类和小波分解的层数对融合效果有很大的影响,对特定的图像来说,哪一种小波基的融合效果最好,分解到哪一层最合适,都是需要考虑的问题。为此可以通过引入融合效果的评价来构成一个闭环系统。如图2所示。
matlab图像融合相关推荐
- matlab图像融合评价,MATLAB 图像融合评估算法
MATLAB 图像融合评价算法 function laplacian(ori_A,ori_B) path(path,'FusionEvaluation/') %Ori_A = imread('cloc ...
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- MATLAB图像融合拼接
MATLAB图像融合拼接 本文说明的内容是图像拼接,采用基于特征点的匹配方法将两张定点拍摄的照片进行拼接,合成一张图,将全景图生成简化成两张图片的拼接,具体可以分为以下几点: 掌握图像灰度化.图像投影 ...
- MATLAB实战系列(四十)-小波变换MATLAB图像融合
前言 图像融合是综合两幅或者多幅图像的信息,以获取同一场景下更加准确.更加全面.更可靠的图像描述.图像融合可以克服单一图像在几何.光谱.和空间分辨率等方面存在的局限性. 以下是我为大家准备的几个精品专 ...
- nsct matlab,图像融合 NSCT算法 matlab
[实例简介] 经典图像融合算法, NSCT算法,为matlab 和 C++ 混合编译,修改图像地址即可方便使用 [实例截图] [核心代码] NSCT └── NSCT_toolbox ├── atro ...
- 【MATLAB图像融合】[2]像素加权融合及图像融合的主观性
一.像素加权融合 原理 在上一篇文章中提过,在MATLAB中,图像会以矩阵的形式读入.存入程序,对像素级的操作就是对矩阵中每个元素的操作.因此,如果想实现带权的操作,那么对像素点赋予权值 ...
- 非负矩阵图像融合MATLAB,图像融合的非负矩阵分解算法
第 17 卷 第 9 期 2005 年 9 月 计算机辅助设计与图形学学报 JOURNAL OF COMPUTER2AIDED DESIGN & COMPUTER GRAPHICS Vol17 ...
- 【MATLAB图像融合】[13]PCNN脉冲耦合神经网络基本原理
→这是一篇学习笔记. →但考虑要发出来,还是排版了,请放心食用. PCNN在图像融合中应用广泛 1.脉冲耦合的神经元之间有有耦合和无耦合两种形式.,有耦合的神经元之间存在能量传播,产生同步脉冲发放,从 ...
- MATLAB图像融合分割系统
摘 要 图像分割是一种重要的图像分析技术.对图像分割的研究一直是图像技术研究中的热点和焦点.图像分割是一个很关键的图像分析技术,是由图像处理进到图像分析的关键步骤.它的目的就是把图像中感兴趣的那部分分 ...
最新文章
- video标签支持获取rtsp流么_Flask教程(二十二)在浏览器中播放rtsp实时流
- .Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能
- ie检查服务器证书吊销,浏览器弹出“该站点安全证书吊销信息不可用是否继续”解决方法...
- git——IntelliJ中配置使用git,码云管理项目
- python条件表达式有哪几个_Python中条件表达式的评估顺序是什么?
- 基于Python的情感分析案例——知网情感词典
- 15.3 实时时钟芯片DS1302介绍
- Excel 使用技巧集锦—163种技巧
- depends-on
- 基于台达PLC的步进电机控制<续一>
- Vue移动端 手机六位数密码框
- chrome安装油猴插件
- Solidworks建模画一个盒子
- java对接支付宝支付
- Mysterious Bacteria(唯一分解定理)
- 什么是物联网AIoT?
- 云数据库CynosDB有哪些常见问题?
- 建网站需要哪些费用?(软件方面)
- 红帽8搭建httpd
- 西施陪他游湖,金庸为他写书,2000多年前的他有何过人之处?
热门文章
- 0x80070422是什么错误(hresult 0x80070422错误原因)
- 让编程不再迷茫--java编程入门
- Linux 让普通用户拥有root的权限
- 面向开发者的 LLM 入门课程
- Java小游戏-中国象棋
- mob sdk vue 短信验证_vueCli集成环信SDK
- gcc的-g,-o,-c,-D,-w,-W,-Wall,-O3等参数的意义
- 光明or黯淡?未来投身于软件开发行业是否可靠?
- js基础 ——HBuilderX配置浏览器及在浏览器上的显示问题
- 编程入门到逆向学习顺序