【发布时间】:2015-03-20 00:21:34
【问题描述】:
我正在尝试使用 SWT 融合两个图像。但我收到了这个错误:
1级分解
以及图像的大小 (1,5)
不兼容。
建议尺寸:(2,6)
如何更改图片的大小以使其与变换兼容?
我使用的代码是:
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
【问题讨论】:
-
那张图片真的很小。我假设这是一个大小为 1 x 5 的图像。当您在命令提示符或该脚本中执行
size(im1)和size(im2)时会发生什么?您总是可以在图像上执行imresize以使其达到该大小......但该图像仍然非常小。肯定有些不对劲。 -
尺寸为 1x5 的东西甚至不应该被称为“图像”。
-
@AnderBiguri - dat 的 ri 兄弟。它应该被称为 matx。
-
现在我已经更改了图像及其工作方式。感谢您指出@rayryengspan>
-
@rayryeng 我使用 imshow(imf,[]) 来显示图像。空矩阵用于数据范围。图像完美显示。在接下来的步骤中,我将尝试存储该图像 imwrite(imf,Iname);这张图片是白色的。为什么图像会这样保存?如何正确保存图片??
标签: image matlab image-processing matrix wavelet