初步认识图像的直方图

参考:
https://www.zhihu.com/question/20511799

直方图

直方图就是用来统计一幅图像各个亮度的像素的个数,并在一个2维图像上显示。横向(x轴方向)是灰度值,最左边像素值为0(黑),最右边像素值为255(白),纵向(y轴方向)是各像素值在图像中出现的个数。一张照片的明暗可以通过直方图看出来,也就是说我们可以通过直方图知道图像的欠曝和过曝。对于欠曝,形象的可以理解图像太暗了,过曝可理解为图像太亮了。
需要了解的是,相机在记录信息的时候会同时产生噪点。在较亮区域,因为记录下的光线多,所以噪点并不明显。而在较暗区域,相机记录的光线信号很少,噪点就会一下子突显出来。至于为什么在较暗的区域噪点会更明显的原因主要是,因为信噪比(芯片收到的光线信号与芯片本身噪点数量的比值)太低。所以在这种情况下,如果后期再对暗部提亮,噪点就会更加明显。
直方图如下:
这里写图片描述
那具体如何从直方图中得到这些信息?就需要简单地聊一聊。
直方图的x轴方向还可以被进一步地划分为5个区域,分别是黑色,阴影,中间调,高光和白色。这只是一种感性的认识,至于说多大值称为阴影,完全在主观。
这里写图片描述
一张理想的图像应该是直方图堆积在中部,最左侧和最右侧都没有被切断。切断或者溢出,是指在直方图左右两个边缘,有很高的柱子堆积,也就是存在很多像素点在左(过暗)右(过亮)两边。
一幅正常的图像的直方图:
这里写图片描述
一幅欠曝图像的直方图:在视觉上看整体偏暗。而在直方图中看,会看到最左边的像素很多。
这里写图片描述
一幅过曝图像的直方图:在视觉上看整体很亮。而在直方图中看,最右边的像素(255附近)很多,使得那一块的柱形很高。
这里写图片描述

%显示图像的直方图,imhist只能输入灰度图进行直方图显示。
I = imread('images/lena.jpg');
channels = size(I,3);
if channels ==3
    I = rgb2gray(I);
end
figure;imhist(I);title('I的直方图');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值