MATLAB直方图均衡化代码
时间: 2023-07-23 07:42:59 浏览: 58
下面是一个简单的 MATLAB 直方图均衡化的代码示例:
```matlab
% 读取图像并转换为灰度图像
img = imread('example.jpg');
gray = rgb2gray(img);
% 计算灰度直方图
histogram = imhist(gray);
% 计算累积分布函数
cdf = cumsum(histogram) / numel(gray);
% 进行直方图均衡化
equalized = uint8(255 * cdf(double(gray) + 1));
% 显示原始图像和均衡化后的图像
figure;
subplot(1,2,1), imshow(gray), title('原始图像');
subplot(1,2,2), imshow(equalized), title('均衡化后的图像');
```
这段代码首先读取一张彩色图像,将其转换为灰度图像。然后,计算灰度直方图并计算其累积分布函数。最后,将原始图像中的每个像素值映射到新的像素值,以产生均衡化的图像。最后,使用 `imshow` 函数显示原始图像和均衡化后的图像。
相关问题
matlab直方图均衡化的代码实现
Matlab中实现直方图均衡化的代码如下:
```matlab
% 读入图像
img = imread('example.jpg');
% 将图像转为灰度图
gray_img = rgb2gray(img);
% 计算原图像的直方图
hist_ori = imhist(gray_img);
% 计算原图像的累积分布函数
cdf_ori = cumsum(hist_ori) / numel(gray_img);
% 计算直方图均衡化后的像素值
pixel_value_eq = round(cdf_ori * 255);
% 对原图像进行直方图均衡化
eq_img = pixel_value_eq(gray_img + 1);
% 显示原图像和直方图均衡化后的图像
figure;
subplot(2, 2, 1);
imshow(img);
title('原图像');
subplot(2, 2, 2);
imshow(gray_img);
title('灰度图');
subplot(2, 2, 3);
plot(hist_ori);
title('原图像直方图');
subplot(2, 2, 4);
plot(pixel_value_eq);
title('均衡化后的像素值');
figure;
imshow(eq_img);
title('直方图均衡化后的图像');
```
其中,`imread`函数用于读入图像,`rgb2gray`函数用于将图像转为灰度图。`imhist`函数用于计算图像的直方图,`cumsum`函数用于计算累积分布函数。`round`函数用于将像素值四舍五入为整数,最终实现直方图均衡化后的像素值。`gray_img + 1`实现将像素值从0-255映射到1-256,以便进行数组索引。`subplot`函数用于将多个图像放在同一窗口中显示。
直方图均衡化代码实现matlab
以下是在MATLAB中实现直方图均衡化的代码示例:
```matlab
% 读取图像
image = imread('image.jpg');
% 将图像转换为灰度图像
gray_image = rgb2gray(image);
% 计算图像的直方图
histogram = imhist(gray_image);
% 计算累积分布函数
cdf = cumsum(histogram) / numel(gray_image);
% 对图像进行直方图均衡化
equalized_image = cdf(double(gray_image) + 1);
% 显示原始图像和均衡化后的图像
subplot(1, 2, 1);
imshow(gray_image);
title('原始图像');
subplot(1, 2, 2);
imshow(equalized_image);
title('均衡化后的图像');
```
这段代码首先读取图像,然后将其转换为灰度图像。接下来,计算图像的直方图,并计算累积分布函数。最后,使用累积分布函数对图像进行直方图均衡化。最终,通过subplot函数将原始图像和均衡化后的图像显示在同一窗口中。