MATLAB图像处理之【直方图均衡】
如果图像的对比度较差(灰度级数相差不大),常用的图像增强方法就是灰度直方图均衡化。matlab中有自带的函数histeq().直接上代码.
1、采用matlab中自带的直方图均衡函数histeq()来实现滤波:
建立文件:IM_HistEQ.m文件
clear all;
close all;
clc;
%读取图片
IMG1=imread('../test1.tif');%存放图片的路径,根据自己的目录修改
h=size(IMG1,1);%读取图片的高度
w=size(IMG1,2);%读取图片的宽度
%IMG2=rgb2gray(IMG1);%转换为灰度图像
subplot(221),imshow(IMG1);title('Origina Image');%subplot(221)表示将图片窗口分为2行2列,当前位置为1
subplot(223),imhist(IMG1);title('Origina Hist');%imhist()函数直接统计该图的直方图,要求输入的图片为灰度图。灰度图为256个等级
IMG2=zeros(h,w);
IMG2=histeq(IMG1);% histeq()是Matlab自带直方图均衡
subplot(222),imshow(IMG2);title('HistEQ Image');
subplot(224),imhist(IMG2);title('HistEQ Hist');
运行得到下面的四幅图,subplot(221)表示2行2列中的第1幅图。
2、手动实现直方图均衡
第一步:计算灰度级(0~255)出现的频率P(k),其中N为图像的像素总数量,公式为:P(k)=n(k)/N
P ( k ) = N ( k ) / N \begin{equation} \mathrm{P}\left(k\right)={ N\left(k\right)}{/N} \\ \end{equation} P(k)=N(k)/N