您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 图形图像 > 小波变换-图像融合matlab代码
X1=imread('IR.bmp','bmp');X2=imread('VIS.bmp','bmp');%figure(1);%imshow(X1);%g1=1/255.*X2;%figure(2);%imshow(X2);PIC1=double(X1);PIC2=double(X2);%PIC2=X2;X1=PIC1;X2=PIC2;%定义滤波窗口;fw=1/16.*[14641];z=3;L=cell(1,z);L1=cell(1,z);fori=1:z%N1%计算,保存图像大小[rowcolumn]=size(PIC1);k1(i)=row;k2(i)=column;%检查是否需要扩展if(floor(row/2)~=row/2),w(1)=1;else,w(1)=0;end;if(floor(column/2)~=column/2),w(2)=1;else,w(2)=0;end;%完成图像的边界扩展;if(any(w))%NN1PIC1=add_rc(PIC1,w);PIC2=add_rc(PIC2,w);end;%NN1%将原图像进行沿边界对称扩展Y2=add_side(PIC1,2);Y3=add_side(PIC2,2);%对原图像进行低通滤波G2=conv2(conv2(Y2,fw,'valid'),fw','valid');G3=conv2(conv2(Y3,fw,'valid'),fw','valid');%将图像进行隔行隔列减半[ab]=size(G2);Y4=G2(1:2:a,1:2:b);Y5=G3(1:2:a,1:2:b);%图像隔行隔列插值扩展恢复到原尺寸图像[cd]=size(Y4);Y6=zeros(2*c,2*d);Y6(1:2:2*c,1:2:2*d)=Y4;Y7=zeros(2*c,2*d);Y7(1:2:2*c,1:2:2*d)=Y5;%将图像进行沿边界对称扩展Y8=add_side(Y6,2);Y9=add_side(Y7,2);%对图像进行放大算子运算PIC3=conv2(conv2(Y8,2*fw,'valid'),2*fw','valid');PIC4=conv2(conv2(Y9,2*fw,'valid'),2*fw','valid');PIC5=PIC1;PIC6=PIC2;PIC5=PIC5-PIC3;PIC6=PIC6-PIC4;L1{i}=PIC5;%拉普拉斯塔式结构(也就是图像融合规则)%L(i)={PIC5};L(i)={rule2(PIC5,PIC6)};%L(i)={rule3(PIC5,PIC6)};%L(i)={PIC5};%ifi==3%L{i}=(p).*PIC5+(1-p).*PIC6;%else%L{i}=(p).*PIC5+(1-p).*PIC6;%end;%高斯塔形图像PIC1=Y4;PIC2=Y5;end;PIC1=(PIC1+PIC2)/2;%PIC1=PIC1;%PIC1=(1/3).*PIC1+(2/3).*PIC2;fori=z:-1:1%图像隔行隔列插值扩展恢复到原尺寸图像[cd]=size(PIC1);Y10=zeros(2*c,2*d);Y10(1:2:2*c,1:2:2*d)=PIC1;%将图像进行沿边界对称扩展Y=zeros(2*c+4,2*d+4);Y(3:2+2*c,3:1:2+2*d)=Y10;Y(3:2+2*c,2:-1:1)=Y10(:,2:1:3);Y(3:2+2*c,3+2*d:1:2*d+4)=Y10(:,2*d-1:-1:2*d-2);Y(2:-1:1,3:2*d+2)=Y10(2:1:3,:);Y(2+2*c+1:1:2*c+4,3:2*d+2)=Y10(2*c-1:-1:2*c-2,:);%对图像进行放大算子的运算PIC3=conv2(conv2(Y,2*fw,'valid'),2*fw','valid');%第i1级图像重构;PIC1=PIC3+L{i};%选取图像范围PIC1=PIC1(1:k1(i),1:k2(i));end;Y=PIC1;%得到最后的图像结果并进行数据转换PIC=1/255.*Y;%显示图像figure(5);imshow(PIC);%K=0;%%a=20;%%b=460;%%c=620;%%d=440*600;%a=1;%b=512;%c=512;%d=512*512;%fori=a:b%forj=a:c%%if((i=432&j310)|(432i=128&j344)|(128i=123&580j=505)|(123i=120&j=580))%480*640disk1,disk2%if((i=154&j224)|j=224)%512*512clock1,clock2%%if((i=96)|(i96&i=140&11j16*i+1104)|(i140&i=352&j=304)|(i352&i=480&128*j108*i+896))%480*640lab1,lab2%if(X1(i,j)==0)%X1(i,j)=1;%%K=K;%end;%%else%K=K+(abs(X1(i,j)-Y(i,j)))/X1(i,j);%%end;%else%if(X2(i,j)==0)%X2(i,j)=1;%%K=K;%end;%%else%K=K+(abs(X2(i,j)-Y(i,j)))/X2(i,j);%%end;%end;%end;%end;%%%K=K/d%%求MI%%X=uint8(Y);%%X=double(X);%%%fork=1:256,%%p1(k)=0;%%p2(k)=0;%%end;%%%fori=1:256%%forj=1:256%%p3(i,j)=0;%%end;%%end;%%%%%fori=a:b,%%forj=a:c,%%if((i=432&j310)|(432i=128&j344)|(128i=123&580j=505)|(123i=120&j=580))%480*640disk1,disk2%%if((i=154&j224)|j=224)%%if((i=96)|(i96&i=140&11j16*i+1104)|(i140&i=352&j=304)|(i352&i=480&128*j108*i+896))%480*640lab1,lab2%%k1=X2(i,j);%%p1(k1+1)=p1(k1+1)+1;%%else%%k1=X1(i,j);%%p1(k1+1)=p1(k1+1)+1;%%end;%%k2=X(i,j);%%p2(k2+1)=p2(k2+1)+1;%%p3(k1+1,k2+1)=p3(k1+1,k2+1)+1;%%end;%%end;%%%%%fork=1:256,%%p1(k)=p1(k)/(d);%%p2(k)=p2(k)/(d);%%end;%%%fori=1:256%%forj=1:256%%p3(i,j)=p3(i,j)/(d);%%end;%%end;%%%MI=0;%%fori=1:256%%forj=1:256%%if(p1(i)*p2(j)~=0&p3(i,j)~=0)%%z=p3(i,j)/(p1(i)*p2(j));%%MI=MI+p3(i,j)*log2(z);%%end;%%end;%%end;%%%MI
本文标题:小波变换-图像融合matlab代码
链接地址:https://www.777doc.com/doc-5259435 .html