在正式讲解之前,小编先说明一下:本系列(专栏)主要讲述的是数字图像处理与计算机视觉两方面的知识,其中数字图像处理偏向于基础,计算机视觉是在数字图像处理的基础上搭建的学科,稍微难一点点。也就是说,小编可能会更新几篇数字图像处理的文章,然后突然涉及到计算机视觉的知识时,又会发表篇计算机视觉的文章。同时,后续小编将在机器学习-python专栏里更新OpenCV库的相关函数的用法,帮助大家完成数字图像处理与计算机视觉的实践。那么就让我们带着好奇心,一起走进计算机图像的王国吧!
目录
1、人类视觉基础
a、人眼的结构
b、RGB模型
2、数字图像化
a、引入
b、数字图像表示
二值图像
灰度图像
彩色图像
3、图像增强简介
a、引例
b、空域图像增强
想要弄清楚计算机视觉,我们先得学习我们人类的视觉形成。
那么学到这里,你会发现,奇奇怪怪的知识又增加了!
现在,让我们思考一个问题:在森林中,草是绿色的,那么为什么没有绿色皮毛的哺乳动物?如果是绿色的皮毛岂不是不容易被天敌看到,更容易活下去呢?
读者们可能百思不得其解?啥啥啥?小编的这个问题和计算机视觉有啥关系?不会是想逗我玩吧?
欸?此言差矣!小编是这么无聊的人吗?(卖萌中)
言归正传,小编引入这个问题是想介绍人的视锥细胞这个概念。人具有三种视锥:长波(L)视锥细胞 —— 红色光谱区域、中波(M)视锥细胞—— 绿色光谱区域以及短波(S)视锥细胞—— 蓝色光谱区域。如下图:
但是,绝大多数哺乳动物其实都只有两种视锥细胞的,即中波视锥细胞与长波视觉细胞重合到一块儿去了,也就是二色视,所以说在它们的视觉里,分不清绿色和红色。也就是会出现下面的情况:
这里顺便科普一下,如果一个人也是二色视,那么他就会被定义为红绿色盲。
那么,基于人的视觉特性,我们理所当然的建立了一种色彩模型-----RGB模型。R代表red红色,G代表green绿色,B代表blue蓝色。相信我们很多读者在小的时候玩过混色游戏:把一块红色的橡皮泥和一块蓝色的橡皮泥揉到一起,会形成一块紫色的橡皮泥。但是!这条规则并不适用于计算机!在计算机里不是这样子混合的!在计算机的世界里,红绿蓝的比重越大,得到的颜色会更亮,也就是说,红色加蓝色会得到粉色,红色加蓝色加绿色会得到白色。
怎么样,是不是三观都要裂开了?这叫人怎么记嘛,完全颠覆了认知,呜呜呜呜……
其实吧,这倒也不需要我们去记住,只是稍微科普一下,了解一下就够了。
也就是说,在RGB模型中,任何一个颜色,都能用下边的一个坐标表示出来,比如说黑色是(0,0,0),白色是(1,1,1)……
请凭第一直觉,判断出下面的乐高拼图拼的是哪一副世界名画?
小编的内心:应该不会有人连《蒙娜丽莎》都不知道吧?
计算机把每张图片内的每一个“积木”称之为像素,它是我们研究数字图像的基本单位。每一幅图像在计算机内部都是一个矩阵。矩阵的坐标分的越细,分辨率则越高。而矩阵每个坐标的值,则代表着它在这一点上对应的颜色。
计算机处理图像,是一个“变魔术 ”的过程,“魔”指的是模拟图像:又称连续图像,像素数量和取值均是无限的,“术”指的是数字图像:又称离散图像,像素数量和取值均是有限的。计算机会将模拟图像变成数字图像。
如下图:
我们可以得出结论:采样点数越高,空间分辨率越高,图像细节越清晰 ;量化级数越高(也就是用的“积木”颜色种类越多),幅度分辨率越高,图像色彩越丰富。
图像中每个像素只能为黑或白,没有中间过渡,二值图像只有两个灰度级:0和1,0代表黑,1代表白。理论上只需要一位二进制位来表示。
灰度图像指图像中每个像素的信息由一个量化的灰度级来描述,用来表示该点的亮度水平,没有颜色信息。
通常用一个字节来存储灰度值,可以表达的灰度级为256 ,即像素灰度值的取值区间为[0,255]。 0表示纯黑色, 255表示纯白色。
还记得我们刚刚学习的RGB模型吗,彩色图像的表示与它有关。
彩色图像是指每个像素的信息由RGB三原色构成的图像,其中RGB由不同的灰度级来描述。每个像素用红、绿、蓝三元组来表示。
我们用python看看,彩色图像在计算机里面是什么样子
小编用的是这张照片:
用python看,结果如下图:
可以发现:果然,每一个像素都是三元组的形式!
思考一个问题,如何让一张图变亮?
相信不少读者会想到,既然(255,255,255)代表白色,那么我们能不能增加每一个点在RGB每个通道上的数值,让它越来越靠近(255,255,255),最终使这张图变亮?
如果有这个想法的同学,小编要恭喜你,你已经无师自通了数字图像的加法,不过美中不足的是,你少考虑了一点东西。如果加超了会怎么样?比如说230+30=260,但计算机可不会认为这一点超过了255,那他一定是一个比255更白的点,它会认为是260-256=4,也就是说,这一点会变成特别黑的点。
所以我们可以设计一个函数,当加法超过255时,这一点的数字就是255,这样才能让图像真正的变亮。如下图,是小编利用python使图像变亮的最后结果。
图像增强:图像增强是指按特定的需要突出一幅图像中的某些信息,同时,削弱或去除某些不需要的信息的处理方法。不存在图像增强的通用理论,具有主观性。
空域图像增强分为两类:
点运算:基于点操作,将每一个像素的灰度值按照一定的数学变换公式转换为一个新的灰度值。常用的点运算方法:灰度变换增强、直方图均衡化等方法。
空间滤波:基于邻域处理,应用某一模板对每个像素及其周围邻域的所有像素进行某种数学运算,得到该像素的新的灰度值。常用的空域滤波:图像平滑与锐化技术。
小编在这里先卖一个关子,下面是我在下一篇文章中要写的内容脉络,如果感兴趣的话,不如来关注一下小编,嘻嘻。
欲知数字图像处理的更多知识,请点赞并关注小编,小编在此感谢各位读者啦!