matlab提取图像低频,获取图像频域并分解为高低频(MATLAB)
时间: 2024-01-09 14:04:32 浏览: 27
要提取一个图像的低频分量,可以使用离散余弦变换(DCT)或离散小波变换(DWT)。这里介绍使用DCT的方法:
1. 读取图像并将其转换为灰度图像:
```matlab
img = imread('image.jpg'); % 读取图像
img_gray = rgb2gray(img); % 转换为灰度图像
```
2. 对灰度图像进行DCT变换:
```matlab
dct_img = dct2(img_gray); % 进行二维DCT变换
```
3. 从DCT系数中提取低频分量:
```matlab
dct_low = dct_img(1:8, 1:8); % 提取左上角8x8的DCT系数
```
4. 将低频分量反变换回空间域:
```matlab
idct_low = idct2(dct_low); % 进行二维IDCT变换
```
至此,我们已经提取了图像的低频分量并将其反变换回空间域。接下来,我们介绍如何将图像分解为高低频成分。
1. 对图像进行DWT变换:
```matlab
[cA, cH, cV, cD] = dwt2(img_gray, 'haar'); % 进行二维DWT变换,采用Haar小波
```
其中,cA表示图像的低频分量,cH、cV、cD分别表示水平、垂直和对角方向的高频分量。
2. 将低频分量反变换回空间域:
```matlab
img_low = idwt2(cA, [], [], [], 'haar'); % 将低频分量反变换回空间域
```
3. 将高频分量按比例缩小后反变换回空间域:
```matlab
img_high = idwt2([], cH/2, cV/2, cD/2, 'haar'); % 将高频分量按比例缩小后反变换回空间域
```
至此,我们已经将图像分解为低频和高频成分,并将它们反变换回空间域。