MATLAB实现图像增强(直方图均衡化)
直方图均衡化是一种常用的图像增强技术,它通过重新分布图像的像素强度值来增强图像的对比度。以下是MATLAB中实现直方图均衡化的详细方法。
%% 直方图均衡变换
clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;%% 读取图片
filename='lenargb.jpg';
img0=imread(filename);
% img1=img0;
img1=imnoise(img0,'salt & pepper', 0.001);% 加椒盐噪声[rn,gn,bn]=size(img1);% 获得每一层每一个像素的RGB数值,并判断
img2=img1;
for t=1:3% 色层G=zeros(1,256);% 每处理完一层,参数初始化为0average=0;for k=1:256count201=0;for i=1:rnfor j=1:gnval201=img1(i,j,t);if val201==kcount201=count201+1;endendendcount201=count201/(rn*gn*1.0);average=average+count201;G(1,k)=average;endG=uint8(255.*G+0.5);for i=1:rnfor j=1:gnimg2(i,j,t)=G(img1(i,j,t)+0.5);endend
end% 绘图
figure;
subplot(1,3,1);
imshow(img0);
title('原始图','fontname','宋体');
subplot(1,3,2);
imshow(img1);
title('加噪后图','fontname','宋体');
subplot(1,3,3);
imshow(img2);
title('增强后图','fontname','宋体');
程序结果: