基于matlab的直方图均衡化处理
时间: 2023-12-12 14:35:49 浏览: 27
基于Matlab的直方图均衡化是一种图像增强技术,可以通过增加图像的对比度来改善图像的质量。下面是基于Matlab的直方图均衡化的处理步骤:
1. 读取彩色图像并将其转换为灰度图像。
```matlab
rgb = imread('image.jpg');
gray = rgb2gray(rgb);
```
2. 计算灰度图像的直方图。
```matlab
[counts,binLocations] = imhist(gray);
```
3. 计算直方图的累积分布函数(CDF)。
```matlab
cdf = cumsum(counts) / numel(gray);
```
4. 将CDF映射到新的像素值。
```matlab
newGray = interp1(binLocations, cdf, double(gray));
```
5. 将新的像素值重新缩放到0到255之间。
```matlab
newGray = uint8(newGray * 255);
```
6. 显示原始图像和增强后的图像。
```matlab
subplot(1,2,1), imshow(gray), title('Original Image');
subplot(1,2,2), imshow(newGray), title('Enhanced Image');
```
相关问题
基于直方图均衡化的matlab代码
下面是基于直方图均衡化的 MATLAB 代码示例:
``` matlab
% 读取图像
img = imread('lena.jpg');
% 转换为灰度图像
grayImg = rgb2gray(img);
% 直方图均衡化
eqImg = histeq(grayImg);
% 显示原始图像和均衡化后的图像
subplot(1,2,1);
imshow(grayImg);
title('原始图像');
subplot(1,2,2);
imshow(eqImg);
title('均衡化后的图像');
```
以上代码实现了对名为"lena.jpg"的图像进行直方图均衡化,并将原始图像和均衡化后的图像显示在了同一窗口中。可以通过修改代码中的文件名和路径,对不同的图像进行直方图均衡化。
Matlab直方图均衡化算法思想
Matlab直方图均衡化是一种用于增强图像对比度的算法。它基于对图像像素值的统计分析,通过重新分配像素值的灰度级,使得图像的直方图分布更加均匀,从而使得图像对比度更加明显。
具体实现过程如下:
1. 统计图像的灰度直方图,获取每个灰度级的像素数量。
2. 计算每个灰度级的像素占据整个图像像素的比例。
3. 计算每个灰度级的累计分布函数(CDF),即前面所有灰度级像素占比的累加和。
4. 将CDF映射到0-255范围内,得到新的灰度级。
5. 将原图像的每个像素值替换为新的灰度级值。
通过这样的处理,直方图均衡化能够让图像的像素值分布更加均匀,从而使得图像对比度更加明显,细节更加清晰。