matlab直方图线性拉伸,直方图均衡化与直方图规定化的MATLAB实现

目录

@

1.直方图均衡化

对图像进行非线性拉伸,重新分配图像像元值,使一定灰度范围内像元值的数量大致相等就是直方图的均衡化。原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小,会产生粗略的分类的视觉效果。

在MATLAB中,histeq函数用于直方图的均衡化。

实现代码如下

clear

close all

clc

I=imread('peppers.png');

subplot(221)

I=rgb2gray(I);

imshow(I)

title('原始图像')

subplot(222)

imhist(I)

title('原始图像直方图')

I1=histeq(I);

subplot(223)

imshow(I1)

title('图像均衡化')

subplot(224)

imhist(I)

title('直方图均衡化')

matlab直方图线性拉伸,直方图均衡化与直方图规定化的MATLAB实现_第1张图片

从MATLAB2007a开始,提供了一个新的函数adapthisteq,该函数限定对比度适应性直方图均衡化,它先对图像的局部块进行直方图均衡化,然后利用双线性插值方法把各个小块拼接起来,以消除局部造成的边界。代码如下:

clear

close all

clc

A=imread('cell.tif');

subplot(131)

imshow(A)

title('原始图像')

B=histeq(A);

subplot(132)

imshow(B)

title('histeq函数作用效果')

C=adapthisteq(A);

subplot(133)

imshow(C);

title('adapthisteq函数作用效果');

matlab直方图线性拉伸,直方图均衡化与直方图规定化的MATLAB实现_第2张图片

2.直方图规定化

所谓直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。所以直方图修正的关键就是灰度映像函数。直方图规定化是用于产生处理后有特殊直方图图像的方法。令Pr(V)和Pz(Z)分别为原始图像和期望图像的灰度概率密度函数。对原始图像和期望图像均做直方图均衡化处理,应有

matlab直方图线性拉伸,直方图均衡化与直方图规定化的MATLAB实现_第3张图片

由于都是作直方图均衡化处理,所以处理后的原图像的灰度概率密度函数Ps(S)及理想图像的灰度概率密度函数Pv(V)是相等的。因此,可以用变换后的原始图像灰度级S代替上式中的V,即

9c26d3d350e7ffa9013bf3561080425d.png

利用此式可以从原始图像得到希望的图像灰度级。对离散图像有

matlab直方图线性拉伸,直方图均衡化与直方图规定化的MATLAB实现_第4张图片

综上所述,数字图像的直方图规定化算法如下:

(1)将图像进行直方图均衡化处理,求出原图像中每一个灰度级ri所对应的变换函数Si;

(2)对给定直方图做类似计算,得到理想图像中每一个灰度级Zi所对应的函数Vi;

(3)找出Vi≈Si的点对,并映射到Zi;

(4)求出Pi(Zi);

代码如下:

clear

close all

clc

I=imread('tire.tif');

subplot(221)

imshow(I);

title('原始图像')

hgram=50:2:250;%规定化函数

J=histeq(I,hgram);

subplot(222)

imshow(J)

title('图像规定化')

subplot(223)

imhist(I,64)

title('原始图像直方图')

subplot(224)

imhist(J,64)

title('规定化后直方图')

matlab直方图线性拉伸,直方图均衡化与直方图规定化的MATLAB实现_第5张图片

标签:subplot,title,均衡化,直方图,灰度,MATLAB,图像

来源: https://www.cnblogs.com/xiegaosen/p/12005959.html

你可能感兴趣的:(matlab直方图线性拉伸)