用matlab实现图像直方图均衡化增强和指数增强
时间: 2024-05-30 11:13:09 浏览: 101
直方图均衡化,直方图均衡化原理,matlab
5星 · 资源好评率100%
好的,我明白了。关于你的问题,使用MATLAB实现图像直方图均衡化增强可以通过以下步骤:
1. 读取图像并转换成灰度图像。
2. 计算灰度图像的直方图。
3. 计算直方图均衡化函数,即原始灰度值到新的灰度值的映射。
4. 对每个像素应用该映射。
5. 显示处理后的图像。
下面是MATLAB代码实现:
% 读取图像并转换成灰度图像
img = imread('image.jpg');
gray_img = rgb2gray(img);
% 计算灰度图像的直方图
hist_img = imhist(gray_img);
% 计算直方图均衡化函数
total_pix = numel(gray_img);
cdf = cumsum(hist_img)./total_pix;
new_intensity = uint8(cdf(gray_img+1)*255);
% 对每个像素应用该映射
eq_img = reshape(new_intensity, size(gray_img));
% 显示处理后的图像
figure;
subplot(1,2,1);imshow(gray_img);title('原图像');
subplot(1,2,2);imshow(eq_img);title('直方图均衡化增强后图像');
关于指数增强,可以通过如下代码实现:
% 读取图像并转换成灰度图像
img = imread('image.jpg');
gray_img = rgb2gray(img);
% 对每个像素进行指数变换
gamma = 0.5;
gray_img = double(gray_img)./255; % 将图像压缩到[0,1]之间
gamma_img = gray_img.^gamma;
% 将指数变换后的图像压缩到[0, 255]之间
gamma_img = uint8(round(gamma_img*255));
% 显示处理后的图像
figure;
subplot(1,2,1);imshow(gray_img);title('原图像');
subplot(1,2,2);imshow(gamma_img);title('指数增强后图像');
希望我能够帮到你!
阅读全文