首页 > 编程知识 正文

拉普拉斯方程图像,图像金字塔怎么实现的

时间:2023-05-03 23:28:52 阅读:138652 作者:3989

zgdjz在mmdjm金字塔运算过程中,图像经过卷积和下采样操作后会丢失部分高频细节信息。 为了描述这些高频信息,定义了zgdjz(Laplacianpyramid,LP )。 从mmmdjm金字塔的各个图层图像中,对之前的图层图像进行上采样,减去mmdjm卷积后的预测图像,一系列的差分图像就是LP分解图像。

用Gl插值方法得到放大图像*Gl,使*Gl的尺寸与*Gl-1的尺寸相同,即放大算子Expand。

该式实现在偶数行和列中插入0,使用下采样中的mmdjm内核进行滤波处理,得到与l-1层相同大小的图像的两个步骤。

n是zgdjz的顶层图层编号,LPl是zgdjz分解后的图层l的图像。 由LP0、LP1、LP2…LPN构成的金字塔为zgdjz。 每个层L0的图像是mmdjm金字塔的底层G0图像和通过内插放大的图像*G1之间的差,该过程对应于带通滤波,因此zgdjz也称为带通金字塔分解。

插值方法:有在opencv中实现的函数pyrup。 *得到G1。 然后用两个函数拉开差距,减法得到zgdjz。

图解gauss,laplace金字塔的构成:

求出每个图像的zgdjz后,需要融合相应级别的图像。 具体的融合规则有大、小等。

重构

将融合后的zgdjz,从其最上层开始按顺序从上到下用下式递归进行,可以复原对应的mmdjm金字塔,最终可以得到原图像G0。 就是从最高层开始使用插值的方法。

融合APP融合

图像zgdjz分解的目的是将原始图像分解为各自不同的空间频段,融合过程在各空间频率层分别进行。 从而针对不同分解层不同频带上的特征和细节,采用不同的融合算子达到增强特定频带上特征和细节的目的。 也就是说,能够将来自不同图像的特征和细节融合在一起。

)1)顶层处理

将LAl和LBl分别作为用zgdjz分解了原始图像a、b的第l层图像,将融合的结果作为LFl。 l=N时,LAN和LBN分别是将原始图像a、b用zgdjz分解后的最上位图像。 关于顶级图像的融合,首先计算以其各像素为中心的区域大小为m*n(m,n为奇数且M=3,N=3)的区域平均梯度。

这里,Ix和Iy分别是像素f(x,y )的x和y方向的一次差分,定义如下。

因此,对于顶级图像各像素LAN(i,j )和LBN(i,j ),可以获得与其对应的区域平均梯度GA(i,j )和GB(i,j )。 平均梯度既反映了图像中微小细节的对比度和纹理变化特征,又反映了图像的清晰度。 一般来说,如果平均梯度较大且图像色调丰富,图像就会变得清晰。 因此,顶级图像的融合结果如下:

)2)各层次处理

在0 l N的情况下,对于zgdjz分解后的第l层图像,首先计算其区域能量:

其他层次的图像融合结果如下。

在获得金字塔各级融合图像LF1、LF2和LFN之后。 通过前一种重构,可以获得最终的融合图像。

第二种融合规则:

 

采用最上层系数取平均、其余各层系数绝对值较大的融合策略进行融合。 表示融合后的图像系数(灰度值)越接近更清晰的图像灰度值,融合效果越好。

代码示例zgdjz

函数g=lap (x (x,n ) %函数g=lap ) x, n )为输入原始图像x创建n层Laplace金字塔(%输入参数(% x----输入原始图像(% N----要创建的Laplace金字塔的层数%输出参数) %g ) ) % ln调用表示Laplace金字塔顶层的gaosi函数,首先创建原图像x的mmdjm金字塔n=length(w )的mmdjm金字塔的层数g={}; 除了forI=1:n-1%mmdjm金字塔的顶层之外,其他各层的图像由以下操作temp1=w{1,I}-expand(w{1,i 1} ) : 对%前的图层图像调用扩展函数,结果g=[g,temp1]; endg=[g,w{1,N}]; 结束函数y=扩展(x (x ) %函数y=扩展) x )功能:首先对输入源插值隔行间隔,然后将插值结果与w

卷积得到输出结果y%输入参数:% x-----输入图像%输出参数:% y----先将输入图像x插值然后与w卷积得到的结果%----------------------------------------------------------%[row,col]=size(x);w=1/256*[1,4,6,4,1;4,16,24,16,4;6,24,36,24,6;4,16,24,16,4;1,4,6,4,1];for i=1:row for j=1:col temp(2*i-1,2*j-1)=x(i,j); %对输入源进行隔行隔列的插值 temp(2*i,2*j)=0; endendy=4*conv2(temp,w,'same'); %将插值结果与w进行卷积end

重构函数

function G= recon( g )%函数G=recon(g)的功能是由图像的laplace金字塔恢复原图像%输入参数:% g----图像的laplace金字塔%输出参数:% G----通过对输入的Laplace金字塔g重建得到的源图像%------------------------------------%N=length(g); %求出Laplace金字塔的层数r={g{1,1}};G=g{1,1}; %将Laplace金字塔的最底层赋给Gfor i=N:-1:2 %除Laplace金字塔的最底层,对应其他第i层调用i-1次expand函数 %(例如第2层调用1次,第3层调用2次...),每一层最后得到的尺寸都和最底层相同 temp1=g{1,i}; for j=1:i-1 temp1=expand(temp1); end r=[r,temp1]; %将每层得到的结果存入r中endfor i=2:N G=G+r{1,i}; %输出G就是将Laplace每一层执行上面的操作得到的结果相加endendfunction y= expand(x)%函数y=expand(x)功能:首先对输入源隔行隔列插值,然后将插值结果与w卷积得到输出结果y%输入参数:% x-----输入图像%输出参数:% y----先将输入图像x插值然后与w卷积得到的结果%----------------------------------------------------------%[row,col]=size(x);w=1/256*[1,4,6,4,1;4,16,24,16,4;6,24,36,24,6;4,16,24,16,4;1,4,6,4,1];for i=1:row for j=1:col temp(2*i-1,2*j-1)=x(i,j); %对输入源进行隔行隔列的插值 temp(2*i,2*j)=0; endendy=4*conv2(temp,w,'same'); %将插值结果与w进行卷积end

图像融合

function y = lapfusion( x1,x2,N )%函数y = lapfusion( x1,x2,N )的功能是基于图像的laplace塔形分解实现两幅图像的融合%输入参数:% x1----原图像1% x2----原图像2% N----laplace塔形的层数%输出参数:% y----两幅原图像融合后的结果%-----------------------------------------------%x1=double(x1);x2=double(x2);L1=lap(x1,N); %分别建立两幅原图像的Laplace金字塔L2=lap(x2,N);temp1=[]; %temp1每次存储x1图像得到的Laplace金字塔L1的一层temp2=[]; %temp2每次存储x2图像得到的Laplace金字塔L2的一层L={}; %L用来存储两幅图像融合后的Laplace金字塔for i=1:N %分别对Laplace金字塔的每一层进行融合 temp1=L1{1,i}; temp2=L2{1,i}; temp=[]; [m,n]=size(temp1); for j=1:m for k=1:n if temp1(j,k)>=temp2(j,k) %基于选像素较大者的融合规则对两幅图像进行融合 temp(j,k)=temp1(j,k); else temp(j,k)=temp2(j,k); end; end end L=[L,temp]; %L保存融合后的每一层图像endy=recon(L); %调用recon函数由融合后的Laplace金字塔恢复原图像end

函数调用

x1 = imread('lena1.jpg');x2 = imread('lena2.jpg');y = lapfusion(x1,x2,4);subplot(1,3,1);imshow(x1);title('源图像1');subplot(1,3,2);imshow(x2);title('源图像2');subplot(1,3,3);imshow(uint8(y));title('Laplace金字塔融合图像');

运行结果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。