使用matlab进行直方图均衡化
时间: 2024-03-01 18:46:26 浏览: 86
以下是使用Matlab进行直方图均衡化的示例代码和效果:
```matlab
clear all; % 清除Matlab缓存数据
close all;
clc;
f = imread('F:\暗通道图像去雾matlab\图像去雾程序MATLAB\迷雾1.png'); % 读取图像
f = rgb2gray(f); % 转换为灰度图像
subplot(221),imshow(f),title('原灰度图'); % 显示原灰度图像
subplot(222),imhist(f),title('原灰度图像直方图'); % 显示原灰度图像的直方图
g = histeq(f); % 进行直方图均衡化
subplot(223),imshow(g),title('直方图均衡化后图'); % 显示均衡化后的图像
subplot(224),imhist(g),title('均衡化后直方图'); % 显示均衡化后的直方图
```
效果:
左上角是原灰度图像,右上角是原灰度图像的直方图。
左下角是直方图均衡化后的图像,右下角是均衡化后的直方图。
相关问题
matlab进行直方图均衡化
在MATLAB中,直方图均衡化是一种常见的图像增强技术,用于改善图像对比度,使得灰度级分布更均匀。它通过调整像素值,使得原图像中较暗部分变得更亮,较亮部分变得更暗,从而扩展了整个图像的动态范围。
下面是使用MATLAB内置函数`imadjust`进行直方图均衡化的简单步骤:
```matlab
% 加载图像
img = imread('your_image.jpg'); % 替换为你的图像文件名
% 计算原始图像的直方图
histogram = imhist(img);
% 定义新的灰度范围 (0, 256) 或者自定义范围
newMin = 0;
newMax = 255;
% 进行直方图均衡化
equi_img = imadjust(img, [histogram(1), histogram(end)], [newMin, newMax]);
% 显示原始图像和处理后的图像
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(equi_img);
title('Histogram Equalized Image');
```
在这个例子中,`imadjust`函数接受三个输入参数:原始图像、旧灰度范围(这里是原直方图的上下限)和新灰度范围(用户自定义)。执行后,图像会按照新的灰度级别分布显示,增强了对比度。
matlab进行直方图均衡化处理的代码
以下是使用MATLAB进行直方图均衡化处理的代码:
```matlab
% 读取图像
img = imread('input.jpg');
% 对灰度图像进行直方图均衡化处理
if size(img, 3) == 1 % 灰度图像
img_eq = histeq(img);
else % 彩色图像
img_eq = zeros(size(img));
for i = 1:size(img, 3) % 对每个通道分别进行处理
img_eq(:,:,i) = histeq(img(:,:,i));
end
end
% 显示原始图像和处理后的图像
figure;
subplot(1, 2, 1); imshow(img); title('原始图像');
subplot(1, 2, 2); imshow(img_eq); title('直方图均衡化处理后的图像');
```
以上代码先读取输入图像,然后判断图像是否为灰度图像,如果是灰度图像则直接使用`histeq`函数进行直方图均衡化处理,否则对每个通道分别进行处理。最后显示原始图像和处理后的图像。
阅读全文