x1=imread('1.bmp'); x1=rgb2gray(x1); x1=double(x1)/255; x2=imread('2.bmp'); x2=rgb2gray(x2); x2=double(x2)/255; subplot(221) imshow('1.bmp') subplot(222) imshow('2.bmp') [c1,s1] = wavedec2(x1,3,'db1'); [c2,s2] = wavedec2(x2,3,'db1'); [row,col]=size(c1); for i=1:row for j=1:col if abs(c1(i,j))>abs(c2(i,j)) c(i,j)=c1(i,j); else c(i,j)=c2(i,j); end end end x = waverec2(c,s1,'db1'); %x=uint(x)*255; //加上会报错??! imwrite(x,'nDimfus.bmp'); subplot(223) imshow(x)为这段代码加上注释
时间: 2024-02-05 16:02:34 浏览: 62
这段代码的作用是将两幅灰度图像进行小波变换处理,然后对其小波系数进行比较,选取较大的值进行重构,最后将重构后的图像保存并显示。
具体注释如下:
```matlab
% 读取图像并进行灰度化和归一化
x1=imread('1.bmp');
x1=rgb2gray(x1);
x1=double(x1)/255;
x2=imread('2.bmp');
x2=rgb2gray(x2);
x2=double(x2)/255;
% 在2x2的子图中分别显示原始图像
subplot(221)
imshow('1.bmp')
subplot(222)
imshow('2.bmp')
% 对两幅图像进行3层小波变换,使用db1小波基函数
[c1,s1] = wavedec2(x1,3,'db1');
[c2,s2] = wavedec2(x2,3,'db1');
% 获取小波系数矩阵的行列数
[row,col]=size(c1);
% 逐个比较两幅图像的小波系数,选取较大的值进行重构
for i=1:row
for j=1:col
if abs(c1(i,j))>abs(c2(i,j))
c(i,j)=c1(i,j);
else
c(i,j)=c2(i,j);
end
end
end
% 使用小波系数矩阵和原始图像的小波系数结构进行小波重构
x = waverec2(c,s1,'db1');
%x=uint(x)*255; //加上会报错??!
% 将重构后的图像保存为nDimfus.bmp
imwrite(x,'nDimfus.bmp');
% 在第3个子图中显示重构后的图像
subplot(223)
imshow(x)
```
阅读全文