直方圖均衡化是一種常用的圖像增強技術,它通過重新分布圖像的像素強度值來增強圖像的對比度。以下是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','宋體');
程序結果: