matlab 直方图均衡化
时间: 2023-07-13 22:31:21 浏览: 73
Matlab中可以使用函数`histeq`实现直方图均衡化。具体步骤如下:
1. 读取图像,将其转换为灰度图像。
```matlab
img = imread('image.jpg');
gray_img = rgb2gray(img);
```
2. 计算灰度图像的直方图,并进行归一化处理。
```matlab
[counts, ~] = imhist(gray_img);
counts_norm = counts / numel(gray_img);
```
3. 计算累积分布函数,并进行归一化处理。
```matlab
cdf = cumsum(counts_norm);
```
4. 将累积分布函数映射到[0,1]区间上,并将灰度级映射到[0,255]区间上。
```matlab
mapping = uint8(255 * cdf);
```
5. 对原始灰度图像进行映射,得到均衡化后的图像。
```matlab
eq_img = mapping(gray_img + 1);
```
完整代码如下:
```matlab
img = imread('image.jpg');
gray_img = rgb2gray(img);
[counts, ~] = imhist(gray_img);
counts_norm = counts / numel(gray_img);
cdf = cumsum(counts_norm);
mapping = uint8(255 * cdf);
eq_img = mapping(gray_img + 1);
imshow(eq_img);
```
其中`image.jpg`为待处理的图像路径。
阅读全文