直方图均衡化(MATLAB)

1.概念

直方图均衡方法的基本思想是使目标图像的直方图具有平直的直方图。
直观概念是对在图像中像素个数多的灰度级进行展宽拉伸,而对像素个数少的灰度级进行缩减。从而达到清晰图像的目的。
基本方法
通过灰度r的概率密度函数p(r),求出灰度变换T(r),建立等值像素出现的次数与结果图像像素值之间的关系。形成一种自动调节图像对比度质量的算法。

2.均衡化计算过程

在这里插入图片描述
在这里插入图片描述
下面是一个例子,其实原理就是通过变换函数得到一个映射关系

			  				累计分布函数
输入图像灰度直方图 ---------------------------->输出调整后的直方图

下面的题目,我们先算出每个灰度值的像素个数,例如灰度值0的像素个数的790,则nk就是790,概率p就等于790/64*64=0.19,即t0=p(s0)=0.19以此类推,t1=p(s0)+ p(s1)=0.19+0.25=0.44。然后代入近似取整公式求出tk,求出的tk就是映射的灰度值,把得到的相同映射值的概率p相加,最后得到的灰度值有1,3,5,6,7。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果
在这里插入图片描述

3.直方图均衡化MATLAB程序

在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。

I=imread('cameraman.tif\");   %读取图像
subplot(2,2,1),imshow(I);    %输出图像
title('原始图像');           %原始图像中加标题
subplot(2,2,3),imhist(I)   %输出原图直方图
title('原始图像直方图');   %原图直方图上加标题
a=histeq(I,256);          %直方图均衡化,灰度级为256
subplot(2,2,2),imshow(a)  %输出均衡化后图像
title('均衡化后图像');    %均衡化后图像中加标题
subplot(2,2,4),imhist(a);  %出均衡化后直方图
title('均衡化后图像直方图');  %均衡化后直方图上加标题

分别对图像‘pout.tif’和‘tire.tif’进行直方图均衡化处理,比较处理前后图像及直方图分布的变化。

I=imread('pout.tif');
imshow(I);
figure,imhist(I);
J=histeq(I);
figure,imhist(J);
figure,imshow(J);
I=imread('tire.tif');
imshow(I);
figure,imhist(I);
J=histeq(I);
figure,imshow(J);
figure,imhist(J);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章