【AI白身境】深度学习必备图像基础
今天是新专栏《AI白身境》的第四篇,所谓白身,就是什么都不会,还没有进入角色。
我们已经说了linux基础和python基础,接下来就要开始真正干活了。所谓万丈高楼平地起,正式从事深度学习技术的三大方向,图像,语音,NLP之前,自然要先了解各自的基础。
笔者身处计算机视觉领域,所以这一期就跟大家说说必备的图像基础。
作者 | 言有三,微信Longlongtogo
编辑 | 言有三
01
图像的起源
1.1 图像的进化
图像是什么?这个问题大家都有自己的答案。我的答案是,图像是一门语言,是人类文明的象征。
人类起源时没有图像,最开始记事采用的方法是什么呢?据《易·系辞下》中记录,“上古结绳而治,后世圣人易之书契 ,百官以治,万民以查”,也就是说,最开始没有文字,大家采用结绳的方法来记录。
到了后来,中国进入了一个文明时代,商朝,并且有了自己的文字,甲骨文,这就是我们现在汉字的起源。
再后来,随着西方文明的发展,有了照片,从此我们进入了多媒体记录信息的时代。
如今,图片视频已经成为了人的一生中非常重要的记忆载体。
英文image来源于拉丁文imāgō,它的含义有很多,比如reflection,visible form等等,实际上表述的就是一种语言。
图像包括图和像,图,它是一直客观存在的光的分布。而像则是图在人大脑中的印象。
1.2 模拟图像与数字图像
图像起源于1826年前后法国科学家Joseph Nicéphore Niépce发明的第一张可永久保存的照片,属于模拟图像。
模拟图像又称连续图像,它通过某种物理量(如光、电等)的强弱变化来记录图像亮度信息,所以是连续变换的。模拟信号的特点是容易受干扰,如今已经基本全面被数字图像替代。
在第一次世界大战后,1921年美国科学家发明了Bartlane System,并从伦敦传到纽约传输了第一幅数字图像,其亮度用离散数值表示。
这是一种电缆图片传输系统,将图片编码成5个灰度级,1929年发展成15个灰度级,通过海底电缆进行传输。在发送端图片被编码并使用打孔带记录,通过系统传输后在接收方使用特殊的打印机恢复成图像。
二战时,世界各国报纸上的图像都是采用Bartlane System进行传输。
1950年左右,计算机被发明,数字图像处理学科正式诞生。
模拟图像和数字图像的对比,大家可以看看。
02
数字图像表示
2.1 位数
计算机采用0/1编码的系统,数字图像也是利用0/1来记录信息,我们平常接触的图像都是8位数图像,包含0~255灰度,其中0,代表最黑,1,表示最白。
其实人眼对亮度的对比的敏感度远远超过亮度的本身。
就像上面的两条线,是一样的灰度值,但是人眼很难分辨这是相同的灰度,尽管知识告诉我们它是。实际上,人眼能分辨的灰度级不到32级,大于16级。
2.2 分辨率
数字图像有两个分辨率,图像分辨率与输出分辨率。
图像分辨率指的是每英寸的像素数,简写为ppi,我们平常说一张图片大小的时候使用的就是图像分辨率。
输出分辨率指的是设备输出图像时每英寸可产生的点数,简写为dpi,这是在印刷行业,摄影行业常用的分辨率,摄影行业通常要求DPI不低于300。
相同的图像分辨率,更高的DPI表现为物理尺寸更小。因为这个时候每英寸点更多,像素变小。
如下面两张图,左图的DPI=72,物理尺寸大小为高46.85厘米,宽67.73厘米。右图的DPI=150,物理尺寸大小为高22.47厘米,宽32.49厘米。两者的像素数是相等的,都是1920*1328像素分辨率,但是右边的dpi更大。
物理尺寸相同,DPI较低表现为较低的分辨率,此时每英寸的点数变少,像素变大。如下面两张图,图像实际大小相等,但是右边的图像分辨率较低,像素数较少,清晰度有所下降。
2.3 彩色空间
图像有灰度图有彩色图,灰度图即只包含亮度信息,而彩色图不仅包含亮度信息还包含颜色信息。
我们平常接触的是RGB彩色图,即由红(Red)绿(Green)蓝(Blue)3个通道组成,一张图像的每一个像素由矢量(R,G,B)表示。
这是在消费市场最广泛使用的,最常用的用途就是显示器系统,计算机、电视机等都是采用RGB颜色空间来进行图像显示。RGB颜色空间背后的生物学原理是人眼有对这3种颜色最敏感的细胞,在自然界中肉眼所能看到的任何色彩都可以由这三种色彩叠加而成,因此也被称为加色原理。比如黄色,可以通过红色和绿色相加,全红色为(255,0,0),全绿色为(0,255,0),全黄色为(255,255,0)。
有艺术背景的读者会提出绿色和红色混合在一起产生的是褐色,与这里的计算机色彩模型加色原理不同,这是因为绘画遵循的是减色模型。
除了RGB颜色空间,常用的颜色空间还有HSV,CIELab等,我们以后会集中讲述。
03
数字图像处理基础
数字图像处理有一些基本的表述和概念我们必须清楚。
3.1 直方图
图像之所以能处理,是因为像素与像素是有空间联系的,对像素灰度值进行统计,就得到了直方图。
下面分别是上面灰度和彩色图的直方图。
统计代码如下:
import cv2
import matplotlib.pyplot as plt
import numpy as np
import sys
import os
filename=sys.argv[1]
img=cv2.imread(filename)
colors=['blue','green','red']
for i in range(3):
hist,x=np.histogram(img[:,:,i].ravel(),bins=256,range=(0,256))
plt.plot(0.5*(x[:-1]+x[1:]),hist,label=colors[i],color=colors[i])
plt.show()
imggray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imwrite('sample_gray.jpg',imggray)
histgray,xgray=np.histogram(imggray.ravel(),bins=256,range=(0,256))
print xgray
plt.figure()
plt.plot(0.5*(xgray[:-1]+xgray[1:]),histgray)
plt.show()
我们可以看到,在灰度直方图包含两个很明显的分布,在彩色直方图的红色通道也包含两个很明显的分布,分别对应的就是“前景”和“背景”。
如上图,感兴趣的是图中的“柿子”,这就是前景,它的灰度比较高,对应的就是直方图中的较高峰。
3.2 边缘
视觉机制和马赫达效应都表明人眼对不连续的东西是最敏感的,而图像中不连续的东西,表现出来就是图像边缘。
边缘包含上升阶跃型、下降阶跃型、屋脊型、脉冲型等类型,
边缘检测在计算机视觉与图像处理中基础且应用广泛。通过提取目标的轮廓,用于识别不同的物体,或作为图像的特征表示。边缘检测的基本方法有很多,它们的绝大部分可以划分为两类:基于一阶导数和二阶导数的方法。
关于边缘检测方法,公众号有视频公开课,大家可以去看。
3.3 对比度与清晰度
图像有高亮度也有低亮度,对应的就是白与黑,目前多数显示系统利用8字节,即灰度值0代表最黑,灰度值255代表最亮,不过大部分图像上的亮度范围通常都小于最大最小值之差。
对比度,指的就是画面的明暗反差程度。
对比度有全局对比度和局部对比度。增加对比度,画面中亮的地方会更亮,暗的地方会更暗,明暗反差会增强。下面分别是降低对比度和增加对比度,感受一下。
清晰度,指的是边缘附近的敏感对比。
如果增加清晰度,边缘较暗的一侧会变得更暗,边缘较亮的一侧会变得更亮,轮廓更加清晰,不过调节过度,会出现晕影。
增加清晰度,可以通过锐化操作来进行。降低清晰度,可以通过降低图像分辨率,增加模糊等方法。
04
图像处理与计算机视觉
有一些基本概念容易混淆,图像处理,图形学,计算机视觉等,用几个图就很好理解了。
4.1 图像处理领域
图像处理一般指数字图像处理,输入是图像,输出也是图像,通常是为了改善,增强图像的内容以方便后续的分析。
图像模糊
对比度增强
图像降噪
更多的图像算法,等我更新即可。
4.2 计算机视觉
所谓计算机视觉,即compute vision,就是通过用计算机来模拟人的视觉工作原理,来完成模式分析,比如图像分类,分割,检测等。
4.3 图形学
所谓计算机图形学(Computer Graphics,简称CG),是指使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。
简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算,比如我们熟知的CG制作。
图形学中三维重建占了很大一部分比例,感兴趣可以了解更多。
以上几个领域都是相互交叉,实际上没必要分的那么开,了解即可。
总结
基础的图像知识就这么多吧,虽然简单,但是一定要记牢了,免得以后还会回顾基础概念。
下期预告:下一期我们会讲Opencv基础,如果你有建议,欢迎留言,我们会及时采纳的。
转载文章请后台联系
侵权必究