对图像进行小波变换 得到高频和低频系数的matlab
时间: 2023-10-04 09:14:10 浏览: 152
代码如下:
```matlab
% 读取图像并进行小波变换
img = imread('lena.png');
[cA, cH, cV, cD] = dwt2(img, 'haar');
% 显示原始图像和小波变换后的图像
figure;
subplot(2,2,1); imshow(img); title('Original Image');
subplot(2,2,2); imshow(cA, []); title('Approximation Coefficients');
subplot(2,2,3); imshow(cH, []); title('Horizontal Detail Coefficients');
subplot(2,2,4); imshow(cV, []); title('Vertical Detail Coefficients');
% 获取低频和高频系数
low_freq = cA;
high_freq = cat(3, cH, cV, cD);
% 显示低频和高频系数
figure;
subplot(1,2,1); imshow(low_freq, []); title('Low Frequency Coefficients');
subplot(1,2,2); montage(high_freq, 'Size', [1 3]); title('High Frequency Coefficients');
```
解释:
1. 首先读取图像,并使用`dwt2`函数进行小波变换,其中使用`haar`小波作为基函数。`dwt2`函数返回的四个参数分别是近似系数`cA`、水平细节系数`cH`、垂直细节系数`cV`和对角细节系数`cD`。
2. 使用`subplot`函数将原始图像和小波变换后的图像显示在一个图像窗口中。
3. 使用`cat`函数将水平细节系数、垂直细节系数和对角细节系数组合成一个三维矩阵`high_freq`,以便后续显示。
4. 使用`subplot`函数将低频和高频系数分别显示在不同的图像窗口中。
阅读全文