当前位置:首页 > 代码 > 正文

直方图匹配算法代码(直方图算法详解)

admin 发布:2022-12-19 22:42 140


本篇文章给大家谈谈直方图匹配算法代码,以及直方图算法详解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

OpenCV 直方图处理:直方图均衡和规定化(匹配)

灰度直方图是图像中像素灰度集的一种统计反应。它能够描述图像中灰度的分布情况,直观地展现出图像中灰度所占多少。直方图横轴表示像素的灰度范围(比如说 0~255),纵轴表示的是像素的数量或者密度。亮暗、对比度、图像中的内容不同,直方图的表现也会不同。本文主要参考《冈萨雷斯》一书。

有的图像的灰度分布不均匀,出现过亮过暗,或者对比度过低的情况,这样的图像细节不明显,在肉眼观察时会丢失一些信息。这时可以使用直方图均衡技术对图像进行变换,变成肉眼易于分辨的细节分明的图像。

图像是离散的,所以实际中使用的是离散形式

那么使用上面的公式,就可以将直方图变换成这个样子,这样的图像一般具有比较好的细节表现。

一般来说,直方图均衡能够自动地确定变换函数,且输出结果比较好,当时需要自动增强时是一种好方法。但有的情况下,使用直方图均衡并不是最好的办法。有时候我们可以指定特定的直方图,而不是均匀分布的直方图,并让原图像的直方图变换成我们指定的形式。这个过程称为直方图匹配或者直方图规定化。

在推导过程中,直方图规定化的过程如下:

1.对原图像进行直方图均衡。和上面一样。

2.对事先规定的直方图也进行均衡。z为最终输出图像像素的灰度值。

我这里做个图解释一下

同样的,写成离散形式。

感觉OpenCV在直方图处理这方面并不怎么走心。这里使用的是另一篇 博客 的类封装和算法实现。

直方图规定化中要注意两点:

References:

《数字图像处理》 —— 冈萨雷斯

图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)

怎么用matlab实现直方图匹配算法函数

直方图的交集图像检索 本人感觉要比其颜色矩和分块直方图...[matlab编的特征匹配(控制点).rar] - matlab编的特征匹配,用控制点可以进行匹配。 文件

直方图匹配

之前我们介绍过直方图均衡化。直方图匹配的核心思想就是在应用直方图的均衡化。

和之前直方图均衡化一样,直方图的匹配本质也是一种灰度变换。因此,也是一个找出像素值映射的方法。废话不多说直接来说下算法的原理和流程。

既然是直方图的匹配,那么我们就有一个标准的直方图(即我们需要以这个直方图来作为标准,目标是使得在灰度变换应用后,我们图像的直方图分布能够尽可能的和这个给定的标准直方图一样)。而这个标准的直方图一般是我们自己根据需求设计得到的(或者某些时候,我们希望处理后的图片和某张给定图片的直方图分布比较像。在这种情况下可以统计该给定图的直方图来获得咱们的标准直方图)。根据直方图均衡化的原理,我们可以同时对我们要处理的图片的直方图和给定直方图进行均衡化。根据数学理论可知,均衡后的直方图是理论上应该是一致的(但是因为图像的像素值是离散的而非连续的,所以输出的直方图并不是完全均匀的,也就是并非完全一致的。还有需要注意的是,我们图像的像素范围应该是一样的)。现在已知我们要处理的原图的均衡灰度变换函数时F(x),而给定直方图的均衡灰度变化函数为G(x)。则给定一个像素值,我们最终的灰度变换函数就是G -1 (F(x))。这也就是直方图匹配的基本思想。下面附一张描述该过程的图:

而对于计算机图像领域,我们并不需要求得G函数的逆变换函数,可以直接应用近似匹配即可。

求matleb高手,请为我解释下面2段代码,每句都要有注视,一段时直方图均衡化图像增强,另一个是直方图匹配

%直方图均衡化- -图像增强

I=imread('bean.jpg');

imhist(I);

[m,n]=size(I);

hf = zeros(1,256);

pa = zeros(1,256);%pa下面没用到

I=double(I);%为了计算精确转化为double型

for i = 1:m

for j = 1:n

hf(I(i,j)+1)=hf(I(i,j)+1)+1;%统计各灰度像素个数,取hf(I(i,j)+1)是为了避免出现hf(0)

end

end

bmap=zeros(1,256);

for i=1:256

temp=0;

for j=1:i

temp=temp+hf(j); %计算累积函数,即灰度值在0.0-1,0-2,0-3……0-255上的分布

end

bmap(i)=round(temp*255/(m*n));%根据映射公式,确定映射关系,此步完成的即是直方图的均衡化

end

y=zeros(m,n);

for i=1:m

for j=1:n

y(i,j)=bmap(I(i,j)+1);%根据均衡化后的灰度分布还原出具体每点的灰度值

end

end

y=uint8(y);%转化为unit8数据类型

figure;

imshow(y); %显示均衡化后的图片

figure;

imhist(y);%显示均衡化后的直方图

第二个说的已经很详细了,看一下histeq函数就好

J = histeq(I,n) 将原始图像I的直方图变成用户指定的向量n。n中的各元素的值域为[0,1]。

关于直方图匹配算法代码和直方图算法详解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/28219.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载