特征提取与图像处(三) 直方图 点算子

作者: 热血沸腾 | 来源:发表于2017-06-02 18:03 被阅读80次

    数字图像

    因为一帧图像可以由像素矩阵组成,像素亮点是x,y轴相交的亮度点。这些概念在该系列一中已经描述的很清楚。

    直方图

    亮度直方图 : 表示每个亮度级在图像中的占有率
    图像对比度: 是通过亮度级范围来度量的
    回想一下,在系列一中我们看到了8位(bit)的图片,亮度级别是0~255, 数值越小颜色越暗。

    图片.png

    上图记住x轴y轴分别代表的含义 因此我们可以判断这张图白色太多,也就是太亮了。比较好的做法是使得整个分布较为平均,下面有很多图片例子
    直方图应用较多的一个场景是摄影师看曝光度,对比度。
    我们来看记下来一些列图片,感受一下

    数码相机内的展示(该图对比度很均匀所以图片看起来亮暗合适,但亮色很多,因为白色桌子)

    1.jpg

    此图说明x轴代表亮度0(黑)~255

    2.jpg

    看一下彩色图片,不同颜色(红、绿、蓝、黄、白)这些颜色分别直方图

    3.jpg

    这幅图曝光太高并且浅色太多

    4.jpg

    这幅图与上方图片刚好相反(看起来像是经过ps处理过对比度的图)

    6.jpg

    应用

    说了这么多,直方图到底有什么用呢? 可以让图像变清晰。不信就看下面2张图

    原图

    7.jpg

    经过处理后的图片

    8.jpg

    该图片未处理时,会使得灰度过多,像素集中在照片中间。这个时候如果能把整个像素拉伸,使得白色和黑色部分靠谱多一些,照片就会变得清晰起来。

    直方图计算

    直方图的原理我们知道了“x轴是0~255亮度级,y轴代表该亮度的像素个数” 编程中,通过histogram算子即可得到。非常的简单,返回的是个二维数组。

    点算子

    图像处理中最基本的运算就是点运算。顾名思义就是针对每个像素点进行计算。比如我想让图片变亮及拉伸对比度,则让每个像素与一个标量,例如标量为2相乘,使得亮度级扩大一倍。相反的,我们就可以相除。例如我们把第一张眼睛图片变量

    图片.png

    点算子 可以进行加法和乘法操作来增强亮度 如下图

    图片.png

    锯齿算子

    锯齿(sawtooth)算子 是另一种形式的线性算子。锯齿算子是用来增强图片的局部亮度和对比度(因为我们有时候是对照片的局部某个部分亮度对比度不满意)
    看眼睛图,用锯齿算子处理后的结果

    图片.png

    算子有很多种 下面可以看图

    图片.png

    直方图正规化 (专业领域最常用)

    就像本文最开始说的,直方图具有的意义是适当处理可以让图像变得更加清晰。我们还记得当时的直方图样子吗,我再发一次


    图片.png

    我们使用正规化进行拓展和位移,使得直方图的亮度级可以覆盖256个亮级。另外直方图正规化是线性变化,因此处理后的图片可以恢复到原图。

    图片.png

    眼睛清晰了!

    但是要记住1,直方图均衡化非线性处理,图片无法还原
    但是要记住2,直方图均衡化非线性处理,图片无法还原
    但是要记住3,直方图均衡化非线性处理,图片无法还原
    25

    阈值处理

    阈值(thresholding)处理 简单说,亮度范围是0~255,在这里面我取任意一个数,比如127 当图像中的像素值>=127时设置成255,相反当像素值<=127时设置为0 。 在当前矩阵中只存在 0255的值。也就是图片只存在黑白。就像熊猫看到的世界一样。这样做的好处是,适当的取值,可以把我们感兴趣点分离出来。如下面图

    图片.png
    通常很多时候我们使用Otsu 最受欢迎最优阈值处理方法。它可以选取最恰当阈值。 opencv上有提供现成算法thresholding 图片.png 图片.png

    到目前为止,我们关注的都是全局方法。即对整帧图片继续处理。还有一些局部自适应方法,常常在字符识别前的文件图像二值化。

    相关文章

      网友评论

        本文标题:特征提取与图像处(三) 直方图 点算子

        本文链接:https://www.haomeiwen.com/subject/mteufxtx.html