首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >平稳小波变换(SWT)在图像融合中的应用

平稳小波变换(SWT)在图像融合中的应用
EN

Stack Overflow用户
提问于 2015-03-19 13:34:09
回答 1查看 1.3K关注 0票数 1

我试着用SWT融合两幅图像。但我发现了一个错误:

分解水平1

与图像(1,5)的大小

不兼容.

建议尺寸:(2,6)

如何更改图像的大小以使其与转换兼容?

我使用的代码是:

代码语言:javascript
复制
        clc
        i=1;
        fol=1;
        n=0;          


      for fol=1:5
      f='folder';
      folder = strcat(f, num2str(fol)); 
      cd(folder)
      d= numel(D);
      i=(n+1);
      Fname1 = strcat(int2str(i),'.bmp');
      Fname2 = strcat(int2str(i+1),'.bmp');

      im1 = imread(Fname1);
      im2 = imread(Fname2);

      im1=double(im1);
      im2=double(im2);
      % image decomposition using discrete stationary wavelet transform
     [A1L1,H1L1,V1L1,D1L1] = swt2(im1,1,'sym2');
     [A2L1,H2L1,V2L1,D2L1] = swt2(im2,1,'sym2');

     %  fusion start
     AfL1 = 0.5*(A1L1+A2L1);
     D = (abs(H1L1)-abs(H2L1))>=0;
     HfL1 = D.*H1L1 + (~D).*H2L1;
      D = (abs(V1L1)-abs(V2L1))>=0;
     VfL1 = D.*V1L1 + (~D).*V2L1;
     D = (abs(D1L1)-abs(D2L1))>=0;
      DfL1 = D.*D1L1 + (~D).*D2L1;

      % fused image
     imf = iswt2(AfL1,HfL1,VfL1,DfL1,'sym2');
     figure; 
     imshow(imf,[]); 
     Iname= strcat(int2str(fol),'.bmp');  
     imwrite(imf,Iname);
     end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-19 16:16:03

为了解决你的第一个问题,这个图像真的很小。我假设这是一个大小为1x5的图像,我建议改变你的图像,这样它就更大了,或者在图像上做一个imresize。然而,正如Ander在他对你的评论中所说的..。我不会把一个1x5矩阵叫做图像。

为了解决你的第二个问题,一旦你最终载入一个图像,小波变换很可能会给你浮点数字超出任何敏感浮点精确图像的动态范围。因此,您最好先规范化图像,然后将其保存到文件中。

因此,在保存图像之前,请正确地执行以下操作:

代码语言:javascript
复制
%// ...
%// Your code...
imshow(imf,[]); 

%// Normalize the image - Change
imf = (imf - min(imf(:))) / (max(imf(:)) - min(imf(:)));

%// Your code again
%// Now save
Iname= strcat(int2str(fol),'.bmp');  
imwrite(imf,Iname);

上面的转换使图像规范化,使最小值为0,最大值为1。一旦这样做,它就应该被正确地可视化。FWIW,执行imshow(imf,[]);为您进行这种规范化,并显示结果,但它不修改图像。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29146015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档