使用Matlab实现一个基于直方图均衡灰度图像的函数。输入是给定的灰度图像;输出的是强度分布均匀的导出图像。
时间: 2024-03-03 19:50:41 浏览: 16
好的,以下是一个基于直方图均衡的Matlab函数:
```matlab
function output_img = histeq(input_img)
% input_img: 输入的灰度图像
% output_img: 直方图均衡后的输出图像
% 计算输入图像的灰度直方图
histogram = imhist(input_img);
% 计算累积分布函数
cdf = cumsum(histogram) / numel(input_img);
% 映射像素值
output_img = uint8(255 * cdf(input_img + 1));
end
```
你可以将以上代码保存为一个 `.m` 文件,然后在Matlab中调用该函数来进行直方图均衡处理。使用方法如下:
```matlab
% 读取灰度图像
input_img = imread('your_input_image.png');
% 进行直方图均衡
output_img = histeq(input_img);
% 显示原图和处理后的图像
figure;
subplot(1,2,1);
imshow(input_img);
title('原图');
subplot(1,2,2);
imshow(output_img);
title('直方图均衡后的图像');
```
希望这个函数对你有所帮助!
相关问题
matlab灰度图像直方图均衡化
灰度图像直方图均衡化是一种非线性图像处理技术,通过对图像的像素值进行重新分配,使得图像的灰度级在整个灰度范围内均匀分布,从而增强图像的对比度和视觉效果。
在Matlab中,可以使用histeq函数来实现灰度图像的直方图均衡化。该函数接受一个灰度图像作为输入,并返回经过直方图均衡化处理后的图像。下面是一个示例代码:
H = imread('a1.jpg'); % 读取原始图像
if length(size(H)) > 2 % 判断是否为彩色图像,若是则灰度化
H = rgb2gray(H);
end
H1 = histeq(H); % 对图像进行直方图均衡化处理
imshow(H); % 显示原图
figure; % 创建新的图像窗口
imshow(H1); % 显示直方图均衡化后的图像
在上述代码中,我们首先通过imread函数读取原始图像,然后使用rgb2gray函数将彩色图像转换为灰度图像(如果原始图像是彩色图像)。接下来,通过histeq函数对灰度图像进行直方图均衡化处理,得到处理后的图像H1。最后,使用imshow函数分别显示原图像和直方图均衡化后的图像。
matlab单一灰度图像直方图均衡化
以下是进行MATLAB单一灰度图像直方图均衡化的代码示例:
```matlab
% 读取图像
image = imread('image.jpg');
% 将图像转换为灰度图像
grayImage = rgb2gray(image);
% 计算灰度图像的直方图
histogram = imhist(grayImage);
% 计算灰度图像的累积分布函数
cdf = cumsum(histogram) / numel(grayImage);
% 对每个像素进行直方图均衡化
equalizedImage = cdf(grayImage + 1);
% 将图像转换为8位无符号整数类型
equalizedImage = uint8(equalizedImage * 255);
% 显示直方图均衡化后的图像
figure;
imshow(equalizedImage);
title('直方图均衡化后的图像');
% 显示直方图均衡化前后的直方图
figure;
subplot(2, 1, 1);
bar(histogram);
title('直方图均衡化前');
subplot(2, 1, 2);
bar(imhist(equalizedImage));
title('直方图均衡化后');
```