我试图理解图像直方图是什么,但我陷入其中。我很欣赏它的简单解释和强度值的含义,因为我不知道它是什么。
答案 0 :(得分:1)
我想Matlab帮助功能对一些例子有一个很好的解释,所以这应该永远是你的第一站。但这是我的尝试:
图像由像素组成。为了让我们考虑一个灰度图像。每个像素对眼睛具有一定的亮度,其以该像素的强度值表示。为简单起见,我们假设强度值可以是0到7之间的任何(整数)值,0表示黑色,7表示白色,其间的值是不同的灰色阴影。
图像直方图可以显示图像中每个强度值(或一系列强度值)的像素数。横轴表示可能的强度值,纵轴表示每个强度值的像素数。
所以,假设你有一个完全黑色的2x2图像(只有4个像素),在matlab中看起来像[0 0; 0 0],因此所有强度值均为0.此图像的直方图将在强度值0(水平轴)处显示一个高度为4(垂直轴)的条。同样地,如果所有像素都是白色的,[7 7; 7 7],你会得到一个强度值为7的高度为4的条。如果一半像素是白色,另一半是黑色,例如[0 0; 7 7]或[0 7; 7 0]或类似的,你会在直方图中得到两个高度为2的条,位于强度值0和7。如果图像中有四个不同的强度值,例如[2,5; 0,6],您将在相应的强度值下获得4个高度为1的条。
只需要使用这样的小图像,您可以轻松地手动计算像素数。例如:
image=[2,5,3; 1,0,6; 3,2,1];
subplot(1,2,1)
imshow(image, [0 7]); % see: help imshow
subplot(1,2,2)
histogram(image, (0:8)-0.5) % see: help histogram
答案 1 :(得分:0)
直方图显示频率分布。
假设你有一群20名女性。现在你想了解他们的头发颜色。所以你定义了" bins"金发,黑色,红色,棕色
所以你为每个有相应头发颜色的女性增加每个垃圾箱的数量。
你最终会得到这样的东西:
x
x x
x x x
x x x
x x x
x x x x
x x x x
blonde black brown red
这就是你女性中头发颜色的直方图。您可以获得易于理解的漂亮图形表示。一目了然,你知道很少有女性阅读头发,黑色和棕色是最常见的。 当然,你可以通过观察20名女性来做到这一点。但想象一下,你想为1000名女性或地球上的所有女性做这件事吗?
现在说你想知道图像中强度值的分布。 我们在字节图像中有256个灰度值。因此,如果我们想要具有最大分辨率,我们定义256个区间。然后为该特定值的每个像素将每个bin增加1。
你的钱可以减少。让我们说灰度值[0-9] [10-19] ......
通过查看图像的直方图,您可以了解它的对比度,亮度,......
答案 2 :(得分:0)
直方图是概率分布,可以用于很多事情。有了图像,它有两个主要用途:
灰度图像直方图
这告诉你大部分图像都填充了什么颜色/强度。强度是指灰度色调"颜色"。在8位灰度图像上,0表示黑色,128表示灰色,255表示白色。因此,直方图图形在x
轴上是颜色或强度,而y
是该颜色的概率或像素数。
这可以用于很多事情。例如,你在白纸照片上有黑色文字,但是由于某些模糊而导致灰色阴影,你想将其二值化为 BW 以获得 OCR 。这些图像通常有双峰直方图,这意味着有2"大"直方图中的颠簸。一个用于黑色字符,一个用于白色背景。因此,如果你发现那些颠簸,那么它们之间的中间可以用作"安全"天真二值化的门槛。
如果只有不同的颜色(没有曲线或噪音,只有很少的不同颜色),那意味着图像会像卡通或文字一样呈现,或者是非现实的。
如果您对较暗颜色的计数较高,则意味着您的图像较暗......如果您对明亮颜色的计数较高,则表示图像较亮。如果有"制服"分发然后你的形象与"好"黑暗与明亮之间的中间成分(参见直方图均衡或自动曝光时间计算)。
彩色图像直方图
您还可以使用颜色直方图,例如 RGB 或 HSV 。为了直观地代表那些你需要以某种方式对颜色进行排序的人。有关此内容的详细信息,请参阅:
颜色直方图您可以像灰度一样使用。最重要的是,这些用于颜色量化过程,以减少颜色计数,而不会丢失太多这样的信息:
这是直方图的一个例子: