matlab 灰度均衡
时间: 2024-02-05 17:09:07 浏览: 20
在Matlab中实现灰度直方图均衡化的方法如下:
```matlab
% 读取图像
img = imread('image.jpg');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 计算灰度直方图
histogram = imhist(gray_img);
% 计算累积直方图
cumulative_histogram = cumsum(histogram);
% 计算灰度均衡化后的像素值
equalized_img = uint8((cumulative_histogram(gray_img+1) / numel(gray_img)) * 255);
% 显示原始图像和均衡化后的图像
subplot(1,2,1), imshow(gray_img), title('原始图像');
subplot(1,2,2), imshow(equalized_img), title('均衡化后的图像');
```
这段代码首先读取图像,并将其转换为灰度图像。然后,计算灰度直方图和累积直方图。接下来,根据累积直方图对每个像素进行灰度均衡化,得到均衡化后的图像。最后,使用subplot函数将原始图像和均衡化后的图像显示在同一窗口中。
相关问题
matlab灰度均衡函数
在Matlab中,灰度均衡可以使用`histeq`函数实现。该函数将输入图像的直方图进行均衡化,以增加图像的对比度和亮度。以下是使用`histeq`函数进行灰度均衡的示例代码:
```matlab
% 读取图像
img = imread('example.jpg');
% 灰度均衡
img_eq = histeq(img);
% 显示原始图像和灰度均衡后的图像
subplot(1,2,1);
imshow(img);
title('Original Image');
subplot(1,2,2);
imshow(img_eq);
title('Equalized Image');
```
在上面的示例中,`imread`函数用于读取图像,`histeq`函数用于进行灰度均衡,`imshow`函数用于显示图像,`subplot`函数用于将原始图像和灰度均衡后的图像显示在同一幅图像中。
matlab灰度图像均衡化
灰度图像均衡化是一种常见的图像增强方法,可以使图像的对比度增强,细节更加清晰。在Matlab中,可以使用自定义函数或者工具箱函数实现灰度图像均衡化。
下面是使用自定义函数实现灰度图像均衡化的示例代码:
```matlab
function [output] = hisro(input)
% 自定义直方图均衡化函数
% input: 输入图像
% output: 输出图像
% 计算输入图像的直方图
hist = imhist(input);
% 计算直方图的累积分布函数
cdf = cumsum(hist) / numel(input);
% 计算映射表
map = uint8(255 * cdf);
% 应用映射表
output = map(input + 1);
end
```
使用上述自定义函数,可以对灰度图像进行直方图均衡化。具体步骤如下:
1. 读取灰度图像
```matlab
A = imread('lena_gray_256.tif');
```
2. 对灰度图像进行灰度变换,将灰度值调整到[0, 0.5]之间
```matlab
B = imadjust(A, [0, 1], [0, 0.5]);
```
3. 对灰度图像进行直方图均衡化
```matlab
C = hisro(B);
```
4. 显示原始图像、灰度变换图像和直方图均衡化图像
```matlab
figure;
subplot(1, 3, 1); imshow(A); title('原始图像');
subplot(1, 3, 2); imshow(B); title('灰度变换图像');
subplot(1, 3, 3); imshow(C); title('直方图均衡化图像');
```