matlab图像直方图显示和均衡代码是啥
时间: 2024-05-13 16:14:44 浏览: 82
以下是Matlab中图像直方图显示和均衡的示例代码:
图像直方图显示:
```matlab
img = imread('image.jpg'); % 读取图像
figure; % 新建一个窗口
imhist(img); % 显示图像直方图
```
图像直方图均衡:
```matlab
img = imread('image.jpg'); % 读取图像
img_eq = histeq(img); % 直方图均衡化
figure; % 新建一个窗口
subplot(1,2,1);imshow(img);title('原始图像'); % 显示原始图像
subplot(1,2,2);imshow(img_eq);title('均衡后的图像'); % 显示均衡后的图像
```
其中,`imread`函数用于读取图像,`imhist`函数用于显示图像直方图,`histeq`函数用于进行直方图均衡化,`imshow`函数用于显示图像,`title`函数用于添加图像标题。在直方图均衡的示例代码中,`subplot`函数用于将两幅图像显示在同一个窗口中。
相关问题
图像直方图均衡化matlab代码
图像直方图均衡化是一种用来改善图像对比度的处理方法,它通过对图像的像素值进行变换,使得像素值的分布更加均匀,从而增强图像的细节和色彩。下面是一份基于Matlab的图像直方图均衡化代码示例:
1. 读取图像
```matlab
img = imread('image.jpg'); % 读取图像
```
2. 将图像转换为灰度图
```matlab
gray_img = rgb2gray(img); % 转换为灰度图
```
3. 计算图像的直方图
```matlab
histogram = imhist(gray_img); % 计算直方图
```
4. 计算直方图累积分布
```matlab
cumulative_histogram = cumsum(histogram); % 计算累积直方图
normalized_histogram = cumulative_histogram / numel(gray_img); % 归一化
```
5. 对图像的像素值进行映射
```matlab
new_img = normalized_histogram(gray_img + 1); % 映射像素值
```
6. 显示原始图像和均衡化后的图像
```matlab
subplot(1, 2, 1); % 创建子图
imshow(gray_img); % 显示原始图像
title('原始图像');
subplot(1, 2, 2); % 创建子图
imshow(new_img); % 显示均衡化后的图像
title('均衡化后的图像');
```
通过以上代码,我们可以实现对图像的直方图均衡化处理。代码中通过imread函数读取图像,然后转换为灰度图,计算图像的直方图并计算累积直方图,最后对图像的像素值进行映射。最终通过subplot和imshow函数将原始图像和均衡化后的图像显示出来。这样,我们就可以直观地观察到均衡化处理对图像的效果改善。
matlab图像直方图均衡化
Matlab中实现图像直方图均衡化的步骤如下:
1. 读取图像并转换为灰度图像。
2. 计算图像的直方图。
3. 计算直方图的累积分布函数(CDF)。
4. 根据CDF对图像进行变换,使得直方图均衡化。
5. 显示处理后的图像。
下面是Matlab代码实现:
```matlab
% 读取图像并转换为灰度图像
img = imread('lena.jpg');
gray_img = rgb2gray(img);
% 计算直方图
hist = imhist(gray_img);
% 计算CDF
cdf = cumsum(hist) / numel(gray_img);
% 根据CDF对图像进行变换
eq_img = uint8(255 * cdf(double(gray_img)+1));
% 显示处理后的图像
subplot(1,2,1), imshow(gray_img), title('原始图像');
subplot(1,2,2), imshow(eq_img), title('直方图均衡化后的图像');
```
在上面的代码中,我们使用了Matlab中的`imread`函数读取图像,`rgb2gray`函数将彩色图像转换为灰度图像,`imhist`函数计算图像的直方图,`cumsum`函数计算直方图的累积分布函数(CDF),`uint8`函数将数据类型转换为无符号8位整数,`subplot`函数将多个图像显示在同一窗口中。
阅读全文