Not getting a flat histogram as given by histeq()
我有这段Matlab代码。请帮助我诊断问题,为什么当我们使用histeq()函数时,我没有得到均等图像的平坦直方图。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| clc, clear
%Image Read
orig= imread('gun.jpg');
orig=rgb2gray (orig );
[r, c ]= size(orig );
%Image Equlization using histeq()
equal_he=histeq (orig );
imhist (equal_he );
%Manually equalizing the image using HE algorithm%%
hist_orig=imhist (orig ); %Finding histogram
pdf_hist=hist_orig/numel (orig ); %Probability density histogram
cdf_hist= cumsum(pdf_hist ); %cumulative density histogram
%Finding Equalized image
equal (find(orig (orig< 256)+ 1)) = 235*cdf_hist (orig (orig< 256)+ 1);
equal= uint8(reshape(equal,r,c ));
figure,imhist (equal ); |
此代码为我提供了以下结果
手动获取的图像的直方图
使用histeq获得的图像的直方图
输入图像
参考有关直方图均衡化的断言
- (1)直方图均衡化在实践中不会为您提供完全平坦的直方图。实际上,您发布的图像是它所能带给您的最好的图像。 (2)默认情况下,histeq仅使用64个bin。尝试将bin的数量增加到256,然后看看它如何运行:equal_he = histeq(orig, 256);。
-
@rayryeng感谢您的帮助。是的,我现在正在获得相同的直方图。但是,还有另一个疑问。据说,均衡图像的均值=(min max)/ 2在我的情况下并非如此(我分别检查了使用histeq和我自己的手动方法获得的两个图像)。请指导。我已经编辑了问题。
-
这是我第一次听说该断言(即mean = (min + max) / 2)。您所指的是什么使该断言呢?
-
这是Y.-T的参考文件。 Kim,"使用亮度保持双直方图均衡来增强对比度",1997年,IEEE。
-
它说:"假设X是一个连续的随机变量,即L = inf,则直方图均衡化的输出,Y也被视为随机变量。众所周知,直方图均衡化产生的图像的灰度级为作者称其为mean = (min + max) / 2的均匀密度,即p(z) = l/(max - min)。
-
@NavdeepSony L在这种情况下不是无限的。它是离散的256级吗?
-
@NavdeepSony这是理论上的限制,其中有无限数量的垃圾箱。即,它是连续的。此直方图是离散的,因此除非您将bin的数量增加到无穷大,否则无法接近该限制。直方图均衡化除了图像增强外还有其他用途。它可以用于连续过程,在这种情况下,本文所述的主张成立。因为这是应用于离散信号而不是连续信号,所以这就是为什么您永远无法获得真正的"平坦"直方图,而仅仅是一个近似值的原因。
-
@rayryeng请检查上面给出的参考。
-
@hiandbaii,请检查上面给出的参考。
-
@NavdeepSony不会改变我说的话。您可以凝视该参考链接,直到脸色发青。同样,它是期望值...关键字..根据概率(即E(Y))期望。这不能保证您将平均值视为(min + max) / 2。在我们继续讨论之前,我建议您重温概率论的概念。我认为这次讨论没有其他意义。
-
@rayryeng您的意思是说对于相等的图像,条件mean = (min + max) / 2)和p(z) = l/(max - min)不成立吗?
-
@NavdeepSony仅适用于连续随机变量。这就是为什么论文断言L = inf的原因。不是这种情况。假设所有强度都是等概率的,则图像是离散的随机变量。这是我的最后一条信息。玩得开心。
-
@rayryeng非常感谢您的帮助。如果我可以对您的回答进行投票,那本来会更好,但是别无选择。
-
@NavdeepSony,不客气。如果我正式写了一个答案,您愿意接受吗?
-
@rayryeng我愿意接受您的回答,因为我部分同意您的观点,但是我仍然不确定(min + max) / 2和p(z) = l/(max - min)是否仅对连续随机变量成立而对离散随机变量成立,因为作者将这些用于离散图像,甚至使用这些图像进一步证明了他对双直方图均衡的要求。此外,我得到了另一篇论文,其中另一位作者将这些条件用于离散变量。您可以在第二参考中找到。我的要求是再次考虑并写出正式答案。
-
我将其留给装备精良的其他人使用。祝你好运。
让我们假设连续随机变量X的值在区间0和255内,且大小为512x512,如本文中所述,在此示例中表示为:
1 2
| >> X = randi (256, 512, 512) - 1;
>> X = uint8(X ); |
如果我们将此随机变量显示为图像,则具有:
如果我们检查它的直方图,我们可以看到每个强度级别的值数量几乎相同,并且该范围内的所有值都填充有值。这样,我们可以假设图像的直方图已归一化:
对于这种特殊情况,我们可以说我们的随机变量X具有统一的密度。因此,p(x) = 1 / (X_max - X_min)表示对于每个强度值,发生的概率是相等的(但请注意,对于我们的示例而言,这是不正确的,考虑到每个强度水平的值之间的细微差别,无论如何,这是非常接近的)。
1 2 3 4 5
| >> X_max = 255;
>> X_min = 0;
>> p = 1/(X_max + X_min)
p =
0.0039 |
如果绘制每个值的累积概率总和,您会发现这非常接近:
现在我们知道示例案例与理想案例非常接近,让我们计算最终方程:
"很容易表明直方图均衡化的输出图像的平均亮度是中间灰度级。"
1 2 3 4 5 6 7
| >> (X_min + X_max ) / 2
ans =
127.5000
>> mean(X (: ))
ans =
127.5381 |
如您所见,即使图像非常接近理想情况(每个像素值在理论上具有相等的概率),其值也不尽相同,而是相当接近。因此,这就是为什么方程式显示连续随机变量而不是离散变量的推导的原因。
希望这可以帮助您更好地理解问题。请务必再次阅读@rayryeng关于您的问题的很棒的评论,它们非常有帮助,可以引导您找到答案。
- 出色的侦探工作。这就是我试图让OP理解的内容,但我们似乎无法沟通。 1。
-
谢谢@rayryeng!我花了一些时间仔细阅读您的评论,自己得出一些结论,并建立一个简单的示例:)了解连续域中的图像可能很棘手。
-
感谢@Eliezer提供的如此出色的示例和非常好的解释,也感谢rayryeng,因为我现在能够理解他的意思。可能存在沟通障碍,或者我无法正确解释它。顺便说一句,谁降级了我的问题。提出这样的问题是错误的吗?我认为在这里成为新手对我来说很难。谢谢。