自适应直方图均衡化matlab
时间: 2023-05-29 10:06:03 浏览: 442
以下是使用MATLAB进行自适应直方图均衡化的示例代码:
读取图像并转换为灰度图像:
```matlab
I = imread('image.jpg');
Igray = rgb2gray(I);
```
定义均衡化窗口的大小和亮度调节参数:
```matlab
windowSize = 64;
k = 0.5;
```
使用`adapthisteq`函数进行自适应直方图均衡化:
```matlab
J = adapthisteq(Igray,'NumTiles',[windowSize windowSize],'ClipLimit',k);
```
显示原始图像和均衡化后的图像:
```matlab
subplot(1,2,1);
imshow(I);
title('Original Image');
subplot(1,2,2);
imshow(J);
title('Adaptive Histogram Equalization');
```
相关问题
自适应直方图均衡化 matlab
好的,关于自适应直方图均衡化的 MATLAB代码,我可以给您提供一个简单的实现:
```matlab
function [output_image] = adaptive_histogram_equalization(input_image, window_size)
% input_image: 输入图像
% window_size: 自适应均衡化的窗口大小
% 将输入图像转换为 double 类型
input_image = im2double(input_image);
% 获取图像的大小
[h, w] = size(input_image);
% 初始化输出图像
output_image = zeros(h, w);
% 计算每个像素的自适应均衡化后的值
for i = 1:h
for j = 1:w
% 获取当前像素的窗口
row_start = max(i - floor(window_size/2), 1);
row_end = min(i + floor(window_size/2), h);
col_start = max(j - floor(window_size/2), 1);
col_end = min(j + floor(window_size/2), w);
window = input_image(row_start:row_end, col_start:col_end);
% 计算窗口内的直方图
hist_window = imhist(window);
% 计算累积分布函数
cdf = cumsum(hist_window) / numel(window);
% 计算当前像素的自适应均衡化后的值
output_image(i, j) = cdf(input_image(i, j)+1);
end
end
% 将输出图像转换为 uint8 类型
output_image = uint8(output_image * 255);
```
这段代码先将输入图像转换为 double 类型,然后遍历每个像素,计算其所在窗口的直方图、累积分布函数,并将自身的像素值映射到累积分布函数上得到自适应均衡化后的像素值,最后将输出图像转换为 uint8 类型。
使用时可以将上述代码保存为名为 `adaptive_histogram_equalization.m` 的文件,然后在 MATLAB 命令窗口中调用该函数。例如:
```matlab
input_image = imread('lena.png');
output_image = adaptive_histogram_equalization(input_image, 31);
imshow(input_image);
imshow(output_image);
```
其中,`lena.png` 是输入图像的文件名,`31` 是自适应均衡化的窗口大小。
自适应直方图均衡化 MATLAB
好的,关于自适应直方图均衡化的 MATLAB代码,我可以给您提供一个简单的实现:
```matlab
function [output_image] = adaptive_histogram_equalization(input_image, window_size)
% input_image: 输入图像
% window_size: 自适应均衡化的窗口大小
% 将输入图像转换为 double 类型
input_image = im2double(input_image);
% 获取图像的大小
[h, w] = size(input_image);
% 初始化输出图像
output_image = zeros(h, w);
% 计算每个像素的自适应均衡化后的值
for i = 1:h
for j = 1:w
% 获取当前像素的窗口
row_start = max(i - floor(window_size/2), 1);
row_end = min(i + floor(window_size/2), h);
col_start = max(j - floor(window_size/2), 1);
col_end = min(j + floor(window_size/2), w);
window = input_image(row_start:row_end, col_start:col_end);
% 计算窗口内的直方图
hist_window = imhist(window);
% 计算累积分布函数
cdf = cumsum(hist_window) / numel(window);
% 计算当前像素的自适应均衡化后的值
output_image(i, j) = cdf(input_image(i, j)+1);
end
end
% 将输出图像转换为 uint8 类型
output_image = uint8(output_image * 255);
```
这段代码先将输入图像转换为 double 类型,然后遍历每个像素,计算其所在窗口的直方图、累积分布函数,并将自身的像素值映射到累积分布函数上得到自适应均衡化后的像素值,最后将输出图像转换为 uint8 类型。
使用时可以将上述代码保存为名为 `adaptive_histogram_equalization.m` 的文件,然后在 MATLAB 命令窗口中调用该函数。例如:
```matlab
input_image = imread('lena.png');
output_image = adaptive_histogram_equalization(input_image, 31);
imshow(input_image);
imshow(output_image);
```
其中,`lena.png` 是输入图像的文件名,`31` 是自适应均衡化的窗口大小。
阅读全文
相关推荐
















