资源简介

自己写的泊松图像融合算法的实现,很多地方可以改进

资源截图

代码片段和文件信息

function [S A B]=poisson
I=imread(‘BearInWater.bmp‘);
O=imread(‘NewBackGround.bmp‘); 

C=zeros(1162513);
C(1:1161:2511:3)=I(30:14550:3001:3);

num=114*249;  %选定区域内部像素的数目
A=speye(numnum);%系数矩阵 
A=4*A;
X=zeros(num3);%要求的未知向量
B=zeros(num3);%常向量 


%系数矩阵A
for i=2:113
    for j=2:248
        A((i-1)*249+j(i-1)*249+j-1)=-1;
        A((i-1)*249+j(i-1)*249+j+1)=-1;
        A((i-1)*249+j(i-2)*249+j)=-1;
        A((i-1)*249+ji*249+j)=-1;     
    end
end


%上下边界上
for j=1:249
    if j==1
        A(jj+1)=-1;
        A(jj+249)=-1;
        A(num-249+jnum-249+j+1)=-1;
         A(num-249+jnum-249+j-249)=-1;
    end
         
    
    if j==249
        A(jj-1)=-1;
        A(jj+249)=-1;
         A(num-249+jnum-249+j-1)=-1;
         A(num-249+jnum-249+j-249)=-1;
    end
    
    if j~=1&&j~=249
        A(jj-1)=-1;
        A(jj+1)=-1;
        A(jj+249)=-1;
        A(num-249+jnum-249+j+1)=-1;
        A(num-249+jnum-249+j-249)=-1; 
        A(num-249+jnum-249+j-1)=-1;      
    end 
end

%左右边界上.
for i=2:113
    A((i-1)*249+1(i-1)*249+1+1)=-1;
    A((i-1)*249+1(i-1)*249+1+249)=-1;
    A((i-1)*249+1(i-1)*249+1-249)=-1;
    A(i*249i*249-1)=-1;
    A(i*249i*249-249)=-1;
    A(i*249i*249+249)=-1;
end

%常数向量赋值
for i=2:115
    for j=2:250
        B((i-2)*249+j-1:)=4*C(ij:)-C(ij+1:)-C(ij-1:)-C(i+1j:)-C(i-1j:);     
    end
end

%上下边界上
for j=1:249
    B(j1)=B(j1)+O(200j+1001);
    B(num-249+j1)=B(num-249+j1)+O(215j+1001);
    B(j2)=B(j2)+O(200j+1002);
    B(num-249+j2)=B(num-249+j2)+O(215j+1002);
    B(j3)=B(j3)+O(200j+1003);
    B(num-249+j3)=B(num-249+j3)+O(215j+1003);
end




%左右边界上.
for i=1:114
    B((i-1)*249+11)=B((i-1)*249+11)+O(i+2001001);
    B(i*2491)=B(i*2491)+O(i+2003501);
    B((i-1)*249+12)=B((i-1)*249+12)+O(i+2001002);
    B(i*2492)=B(i*2492)+O(i+2003502);
    B((i-1)*249+13)=B((i-1)*249+13)+O(i+2001003);
    B(i*2493)=B(i*2493)+O(i+2003503);
end






%左右边界上.


H=zeros(1142493);
for i=1:114
    for j=1:249
       H(ij:)=B((i-1)*249+j:);
    end
end

H=uint8(H);
%imshow(H);   

%解稀疏线性方程组
X(:1)=gmres(AB(:1)60);
X(:2)=gmres(AB(:2)60);
X(:3)=gmres(AB(:3)60);

%将解以三维数组的形式表示
S=zeros(1142493);
for i=1:114
    for j=1:249
        S(ij:)=X((i-1)*249+j:);
    end
end

O(201:314101:349:)=S(1:1141:249:);
    

%输出解
imshow(O);       
end

        

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2591  2012-02-23 21:42  poisson.m

----------- ---------  ---------- -----  ----

                 2591                    1


评论

共有 条评论