matlab将两幅图进行融合_matlab拟合三维曲面

matlab将两幅图进行融合_matlab拟合三维曲面matlab图像融合        [r,c]=size(y1);            %根据低频融合算法进行图像融合fori=1:r            %首先取两幅源图像相应的小波分解系数绝对值最大者的值作为融合图像的分解系数    forj=1:c        if(abs(y1(i,j))>=abs(y2(i,j)))            y3(

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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是融合效果图。

matlab将两幅图进行融合_matlab拟合三维曲面

matlab将两幅图进行融合_matlab拟合三维曲面

matlab将两幅图进行融合_matlab拟合三维曲面

图像融合是将两幅或多幅图像融合在一起,以获取对同一场景的更为精确、更为全面、更为可靠的图像描述。融合算法应该充分利用各原图像的互补信息,使融合后的图像更适合人的视觉感受,适合进一步分析的需要;并且应该统一编码,压缩数据量,以便于传输。

图像融合可分为三个层次:

       1.    像素级融合

       2.    特征级融合

       3.    决策级融合

       其中像素级融合是最低层次的融合,也是后两级的基础。它是将各原图像中对应的像素进行融合处理,保留了尽可能多的图像信息,精度比较高, 因而倍受人们的重视。像素级的图像融合方法大致可分为三大类:

       1.    简单的图像融合方法

       2.    基于塔形分解(如Laplace塔形分解、比率塔等)的图像融合方法

       3.    基于小波变换的图像融合方法

       小波变换是图像的多尺度、多分辨率分解,它可以聚焦到图像的任意细节,被称为数学上的显微镜。近年来,随着小波理论及其应用的发展,已将小波多分辨率分解用于像素级图像融合。小波变换的固有特性使其在图像处理中有如下优点:

       1.    完善的重构能力,保证信号在分解过程中没有信息损失和冗余信息;

       2.    把图像分解成平均图像和细节图像的组合,分别代表了图像的不同结构,因此容易提取原始图像的结构信息和细节信息;

       3.    具有快速算法,它在小波变换中的作用相当于FFT算法在傅立叶变换中的作用,为小波变换应用提供了必要的手段;

       4.    二维小波分析提供了与人类视觉系统方向相吻合的选择性图像。

 

——像素级图像融合的主要步骤

       以两幅图像的融合为例。设A,B为两幅原始图像,F为融合后的图像。若对二维图像进行N层的小波分解,最终将有(3N+1)个不同频带,其中包含3N 个高频子图像和1个低频子图像。其融合处理的基本步骤如下:

       (1)对每一原图像分别进行小波变换,建立图像的小波塔型分解;

       (2)对各分解层分别进行融合处理。各分解层上的不同频率分量可采用不同的融合算子进行融合处理,最终得到融合后的小波金字塔;

       (3)对融合后所得小波金字塔进行小波重构,所得到的重构图像即为融合图像。

matlab将两幅图进行融合_matlab拟合三维曲面

                                                                                   图 1 

      在图像融合过程中,小波基的种类和小波分解的层数对融合效果有很大的影响,对特定的图像来说,哪一种小波基的融合效果最好,分解到哪一层最合适,都是需要考虑的问题。为此可以通过引入融合效果的评价来构成一个闭环系统。如图2所示。

matlab将两幅图进行融合_matlab拟合三维曲面

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/230833.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 两人下象棋_双人五子棋同屏

    两人下象棋_双人五子棋同屏阅读本文前,请您先点击右上角的蓝色字体“优课屋”,再点击“关注”,这样您就可以继续订阅文章了!(国际象棋怎么玩)在我门的生活中,棋类游戏种类非常的多,其中我们最常玩的棋类游戏有中国象棋,中国跳棋,五子棋,围棋,军棋的。而最近这几年我们很多人都接触到了国际象棋这个游戏,国际象棋其实和中国象棋有很多相似的地方,很多玩家也都特别喜欢玩国际象棋这个游戏。我们现在可以非常方便的在我们身边的网络棋牌…

  • chown和chmod命令用法_chown和chmod的作用

    chown和chmod命令用法_chown和chmod的作用1、chown用法作用:用来更改某个目录或文件的用户名和用户组的格式:chown用户名:组名文件路径(可以是就对路径也可以是相对路径)例1:chownroot:root/tmp/tmp1就是把tmp下的tmp1的用户名和用户组改成root和root(只修改了tmp1的属组).例2:chown-Rroot:root/tmp/tmp1就是把tmp下的tmp1下的所有文件的属组都改成roo…

    2022年10月20日
  • pycharm2021 linux专业版永久激活码[在线序列号][通俗易懂]

    pycharm2021 linux专业版永久激活码[在线序列号],https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 清空mysql 表数据

    清空mysql 表数据deletetabletb_name;删除表数据,相当于一条条删除,需要注意的是,如果有字段是自增的(一般为id),这样删除后,id值还是存在的。举例来说,就是加入你在删除之前最大的id为100,你用这种方式清空表后,新插入一条数据其id为101,而不是1truncatetabletb_name;清空表,相当于重建表,保持了原表的结构。id也会清空…

  • getClassLoader能否为null

    getClassLoader能否为null前言我们Javaer都知道类想要被加载是需要一个个ClassLoader来执行的,并且类加载的方案叫双亲委派模式,说是双亲,其实就是单亲,可能我们最初的翻译人想让我们的加载器的家庭更完整吧,所以翻译成双亲。默认的类加载器包括BootstrapClassLoader、ExtClassLoader、AppClassLoader,他们都定义在在rt.jar中的sun….

  • 交叉熵损失函数和对数损失函数_多分类交叉熵损失函数公式

    交叉熵损失函数和对数损失函数_多分类交叉熵损失函数公式如果使用均方差作为损失函数所以,如果当前模型的输出接近0或者1时,σ′(z)就会非常小,接近0,使得求得的梯度很小,损失函数收敛的很慢。如果使用交叉熵作为损失函数原文链接:为什么LR模型损失函数使用交叉熵不用均方差?…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号