图像处理基础学习笔记(一)——图像处理简介

图像

现代电脑中常见的各种图片比如.jpg .png本质上是各种像素的集合,图片的分辨率就指的是它横向与纵向分别是多少个像素。这一点在像素图片中很明显能看出来。

图像处理基础学习笔记(一)——图像处理简介

每个像素只有单一的颜色,整个图片就是由横向像素*纵向像素=分辨率个像素组成的。那么对图像进行处理的思路就很清晰了,对每个点上的像素值进行修改,就可以实现图像的变化。

像素

色彩

已知图像是由像素点组成的,那么像素点具体是什么。

首先我们需要明白人眼识别颜色的原理,当光线照射到物体表面,一部分波长的光被物体吸收,而剩下波长的光线会被反射进入人眼,人眼视网膜上的感光细胞会对特定范围波长的光线有感知效果。这个范围就是可见光的波长范围,而研究表明,人眼中负责感光的视锥细胞有三种,分别对红、绿、蓝三种光线敏感,也就是说,人眼感知色彩是通过对红绿蓝三种颜色的光线进行混合。

后来科学家通过研究,证明通过红绿蓝三种颜色不同值的混合,可以制出可见光中任何一种颜色。自然而然的,彩色显示器就选择了以红绿蓝三种原色为基础调配出彩色的方式。这种显色方式被称为RGB,由RGB三个数值组成的三维空间就是RGB的色彩空间,这个立方体中的任意一个点都是一个特定的颜色,这种以三个数值描述像素点色彩的图片称为三通道,R、G、B分别是其中一个颜色通道。如果每个通道的取值范围是0-100,那么整个色彩空间里就有一百万种颜色(各通道数值只取正整数)。取值范围越大,可显示的色彩数就越多。

图像处理基础学习笔记(一)——图像处理简介

计算机中的数据以二进制的方式储存,每个通道的数值都需要用二进制来记录。目前最常用的是以8位二进制也就是2位十六进制来表示单通道,范围是0-255。而三个通道加起来,就是24位二进制、6位十六进制,这就是24位真彩色,总共可以呈现一千六百多万种颜色,几乎达到人眼极限(32位真彩色是在24位的三通道基础上,加了一个灰度通道,可以理解为给之前单一的颜色加了一个可调透明度的设定,以此来更真实的模拟自然色彩)。

为了简洁,一个色彩就可以用6位十六进制的数进行描述。有很多在线调色的网页,可以试着玩一玩。

图像处理基础学习笔记(一)——图像处理简介

像素矩阵

经过上边的说明,应该已经清楚每种色彩可以用2位十六进制进行描述,那么整个图片就是n个像素的拼接。也就是说每个像素点包括三个数值,通过修改各个数值就可以实现对像素的操作,那么对每个像素点都通过某种算法进行修改,就可以实现各种各样的图像处理。比如PS中的锐化、模糊、提高对比度等等功能,本质上都是对图像像素点数值的修改。

比如现在有四个像素点,各通道数值如下表

R G B R G B
255 255 255 0 0 0
0 0 0 255 255 255

还可以表示为

1 2
#FFFFFF #000000
#000000 #FFFFFF

呈现效果就如下所示。

图像处理基础学习笔记(一)——图像处理简介

具体操作

上边已经对图像处理的基础原理进行了说明,而在用程序进行具体实现时,我们需要用到一些相关的库。我目前正在学习的是OpenCV,它支持很多种语言,C C++ Python 等都可以支持。我目前只对C和C++有一定的了解,所以后续也是基于C++对OpenCV进行学习。

这里需要指出,OpenCV是一个封装了很多API的库,但是学习图像处理真正要学习的是它的图像处理算法,了解它是通过什么样的操作、实现了什么样的效果,而不仅仅是学习如何调用API。