频域直方图均衡matlab实现
时间: 2023-10-16 19:29:34 浏览: 35
1. 读取图像
```matlab
I = imread('test.jpg');
```
2. 将图像转换为灰度图像
```matlab
Igray = rgb2gray(I);
```
3. 计算图像的傅里叶变换
```matlab
F = fft2(Igray);
```
4. 将频域图像移动到中心位置
```matlab
Fshift = fftshift(F);
```
5. 计算频谱图像的幅度谱
```matlab
Fabs = abs(Fshift);
```
6. 计算幅度谱的直方图
```matlab
[counts, bins] = imhist(Fabs);
```
7. 计算直方图的累积分布函数
```matlab
cdf = cumsum(counts) / sum(counts);
```
8. 计算直方图均衡化后的幅度谱
```matlab
Fequalized = interp1(bins, cdf, Fabs, 'linear', 0);
```
9. 将幅度谱转换回复数形式
```matlab
Feqshift = Fshift .* (Fequalized ./ Fabs);
```
10. 计算均衡化后的图像
```matlab
Iequalized = uint8(real(ifft2(ifftshift(Feqshift))));
```
11. 显示原始图像和均衡化后的图像
```matlab
subplot(1, 2, 1);
imshow(I);
title('Original Image');
subplot(1, 2, 2);
imshow(Iequalized);
title('Equalized Image');
```