目前人工智能Artificial Intelligence主要分为两大分支:

  • 计算机视常见:Computer Vision,简称CV

  CV主要是研究如何让机器看懂世界的一种技术,通过各种光学传感器来代替人眼对目标对象进行识别,跟踪和检测,使机器能够处理输入的各种图像和视频。

  • 自然语言处理:Natural Language Processing,简称NLP

  NLP主要是研究如何机器读懂世界的一种技术,最终执行如语言翻译、智能客服等。

    因为目前所从事的项目都是基于CV的,所以我来总结一下CV的相关知识。从上述简介可以看CV是要让机器看懂世界,那么最直观的就是传递图像或视频给机器。那么我们就需要了解图像和视频的基本知识,如下所示:

图像基础知识

    说到图像,最直观的就是一张静态图片。而图像又可以分为位图图像矢量图像

位图图像

    位图图像又称点阵图像栅格图像,是指由很多个点按照指定的颜色和一定的顺序组成的矩形网络。当一张位图持续放大到一定比例后,便可以很清楚看到每个矩形网格。如下所示:

常见的图像格式扩展名为:JPG、BMP、PNG、JPEG等

矢量图像

    矢量图也称为面向对象的图像或绘图图像,通常由点、直线或多边形等基于数学对象的几何图表示图像。其最大的特点是放大图像后不会失真且和分辨率无关。如下所示:

常见的矢量图格式扩展名为:ai,cdr等。

图像处理的基本概念

  • 像素:

组成图像的最基本单元

    像素(pixel,简写为px)这个概念,也可以看成是Picture和Element两个单词的头组成,如下所示:

pixpicture + elelement = pixel

  • 像素尺寸

位图图像长度和高度两个方向上的像素数目

    我们常说的图片大小其实就是说这张图像的长和高两个方向各有多少个像素点,如图片大小为1920*1080,则意味着长度方向上有1920个像素点,高度方向上有1080个像素点,则总的像素点为:1920*1080=2073600,也就是我们常说的这个图像是200万像素级别。

  • 图像分辨率

图像分辨率PPI(Pixel Per Inch)指的是每英寸像素数。尺寸相同的情况下,分辨率越高,像素点就越小,图像越清晰。

    例1*1英寸的图像,50PPI,则像素总数为:50*50=2500

  • 文件大小

文件所占用存储空间的大小

常见图像文件格式

  • PSD

PhotoShop特有的图像文件格式,可记录图层、通道、颜色模式,参考线及文件信息属性,占用空间较大

  • JPEG

一种有损压缩文件格式,设置了12个压缩级别。它是将人眼很难察觉的冗余图像和彩色数据去除。因此图像占用存储空间较小且图像品质受到很少影响。该格式支持RGB、灰度等颜色模式。但不支持Alpha通道和图层。

  • GIF

一种有损压缩文件格式,丢失的不是图像的像素,而是图像的色彩。常用于保存为网页数据传输的图像文件,缺点是不能存储超过256色的图像,不支持图层和Alpha通道

  • PNG

该图像格式吸取了GIF和JPEG的优点,既有丰富的色彩和较高的压缩比,又支持透明图像的制作,可边下载边显示,但不支持动画。

  • BMP

Windows中的标准图像格式,支持RGB、索引颜色、灰度和颜色模式,但不支持Alpha通道

色彩属性

  • 色相(Hue)

指色彩的种类和名称,如红、橙、黄.... 取值范围 0°~360°,每个角度可以代表一种颜色。常以红色为0度(360度);黄色为60度;绿色为120度;青色为180度;蓝色为240度;品红色为300度。而我们描述某一物体的颜色时,即是以色相进行描述的。

  • 饱各度(Saturation)

常用于表达颜色的强度或纯度,即用 0%(纯灰色) 至 100%(完全饱和) 的值描述了相同色相下色彩纯度的变化。数值越大,颜色中的灰色越少,颜色越鲜艳,呈现一种从灰度到纯色的变化。一句话总结就是颜色中的灰色量含量的高低.

  • 亮度(Luminance)

常用于表示颜色的相对明暗程度,其作用是控制色彩的明暗变化。同样使用了 0%(黑色) 至 100%(白色) 的取值范围。数值越小,色彩越暗,越接近于黑色;数值越大,色彩越亮,越接近于白色。一句话总结就是颜色中混合了多少白色或黑色

  • 对比度

指不同颜色之间的差异。对比度越大,两种颜色之间的反差也就越大,反之颜色越相近。如提高一张灰度图像的对比度,则会使图像变得黑白鲜明,而降低对比度时,图像中不同部分的颜色则趋于相同,最终会使整张图像变为灰色。

色彩模式

  • RGB色彩模式

    色彩模式是指用数据表示颜色的一种表示方法。在计算机领域内Red、Grenn、Blue称之为基色分量

    通过这三种基色分量依据不同的比例可以调和出不同的颜色。在计算机领域中,RGB的取值为0~255,共256(28)个值。如下所示在Windows自定义颜色

通过RGB混合的方式,我们可计算出所表示的总颜色为2563=16777216,这即是大家常见的1600万色,而每一种可以用8bit来表示,所以表示三种颜色需要占用3*8=24bit,而这个颜色已经超出人眼能够识别的范围,故又称之为真彩色。

  • CMYK色彩模式

    CMYK是模拟印刷油墨的基本四色表示,以纯青色、洋红色、黄色、黑色去调配颜色,这种方式是以打印纸上的油墨的光吸收特性为基础的印刷模式。因此彩色印刷叫作四色印刷。

C:Cyan 青色

M:Magenta 品红色

Y:Yellow 黄色

K:blacK 黑色

  • 灰度模式

    指用单一色调表示图像,一个像素的颜色可以用8bit来表示,因此灰度模式的范围为0~255共256个灰度级别,最高为纯黑、最低为纯白,即是黑->灰->白的过渡。

灰度模式是不可逆的,一旦转换就会丢失颜色信息。

在RGB模式中,三个值相等的时候显示的就是灰度色彩模式

  • Lab模式

    是光度分量和两个色度分量组成。

L:代表亮度,范围0~100%,记录图像的细节,但不记录颜色

A:从绿到红的光谱变化,范围在-120~120

B:从蓝到黄的光谱变化,范围-120~120

  • 位图模式

    彩色图像去掉彩色信息就变为灰度模式,那灰度模式去掉灰度信息,就只剩下黑与白,这种情况下,我们称之为位图模式。

  • 索引模式

    根据图像中的像素来查找颜色,将查找的颜色定义为一个颜色表,用以存放并索引图像 中的颜色。索引图像最多只可包含256种颜色,因此容易出现失真的情况。

示例代码

    以上总结了这么多,下面我们来使用OpenCV动手实践一下,示例代码如下所示:

import cv2
import numpy as np # 原始图片
imgPath=r"F:\编程资料\编程工程\OpenCV学习笔记\04其他\01测试图片\TestImage.jpg"
# 保存为灰度图片
saveImgAsGrayPath=r"F:\编程资料\编程工程\OpenCV学习笔记\04其他\01测试图片\SaveAsGrayImg.png"
# 保存为LAB模式图片
saveImgAsLabPath=r"F:\编程资料\编程工程\OpenCV学习笔记\04其他\01测试图片\SaveAsLABImg.png"
# 保存为位图图片
SaveImgAsBitPath=r"F:\编程资料\编程工程\OpenCV学习笔记\04其他\01测试图片\SaveAsGrayBit.png"
# 以彩色模式读入
img=cv2.imdecode(np.fromfile(imgPath,dtype=np.uint8),cv2.IMREAD_COLOR)
# 保存灰度图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imencode(".jpg",gray)[1].tofile(saveImgAsGrayPath)
# 保存为LAB模式
lab=cv2.cvtColor(img,cv2.COLOR_BGR2LAB)
cv2.imencode(".jpg",lab)[1].tofile(saveImgAsLabPath)
# 转换为位图模式
binaryImg=cv2.imdecode(np.fromfile(saveImgAsGrayPath,dtype=np.uint8),cv2.IMREAD_GRAYSCALE)
_,binary=cv2.threshold(binaryImg,100,255,cv2.THRESH_BINARY)
cv2.imencode(".jpg",binary)[1].tofile(SaveImgAsBitPath)

最终生成的结果如下所示:

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:

AI-图像基础知识-01的更多相关文章

  1. MongoDB基础知识 01

    MongoDB基础知识  1. 文档  文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行. 文档是键值对的一个有序集.通常包含一个或者多个键值对. 例如: {”greeting& ...

  2. CSS基础知识01

    一.CSS基础知识介绍 1.css是cascading style sheet层叠式样式表的简写 2.css小用法 加粗:font-weight:bold;             正常用:norma ...

  3. python基础知识 01

    一.计算机基础知识 计算机有硬件+操作系统+软件应用组成 cpu:人的大脑 内存:人的临时记忆 硬盘:人的永久记忆 操作系统 控制计算机硬件工作的流程 应用程序 安装在操作系统上的软件 二.Pytho ...

  4. AI工程师基础知识100题

    100道AI基础面试题 1.协方差和相关性有什么区别? 解析: 相关性是协方差的标准化格式.协方差本身很难做比较.例如:如果我们计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以我们 ...

  5. 图像基础知识之YUV

     一.YUV常用格式 YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠.“Y”表示明亮度(L ...

  6. 极化SAR图像基础知识(1)

    从今天开始学习极化SAR图像,记录于此. 极化散射矩阵S是用来表示单个像素散射特性的一种简便办法,它包含了目标的全部极化信息.

  7. matlab图像基础知识

    1.MATLAB支持的几种图像文件格式: ⑴JPEG(Joint Photogyaphic Expeyts Group):一种称为联合图像专家组的图像压缩格式. ⑵BMP(Windows Bitmap ...

  8. Jquery基础知识01

    1:$(document).ready()function{}和window.onload()的区别.   1:$(document).ready()function{} 该方法等到Dom结构绘制完毕 ...

  9. Java基础知识01

    1. String,StringBuffer和StringBuilder的区别? String:final修饰,String对象创建后不可修改:StringBuffer和StringBuilder对象 ...

随机推荐

  1. Spring异步功能

    使用 Spring 的异步功能时,实质是使用的 Servlet3 及以上版本的异步功能. Spring 的异步处理机制需要在 web.xml 中全部的 servlet 和 filter 处配置 < ...

  2. Genymotion报Unable to load virtualbox engine错误

  3. 怎样用ZBrush对模型进行渲染(二)

    继上节课Fisker老师对ZBrush中对渲染和灯光起到重要作用的Light和LightCap进行了具体讲解之后,本节课继续研究Render(渲染)和Light及LightCap相结合会产生什么样的效 ...

  4. 02第一个OC程序

    一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...

  5. D2.Reactjs 操作事件、状态改变、路由

    下面内容代码使用ES6语法 一.组件的操作事件: 1.先要在组件类定义内定义操作事件的方法,如同event handler.若我需要监听在组件内的Button的点击事件onClick,首先定义监听方法 ...

  6. Akka入门实例

    Akka入门实例 Akka 是一个用 Scala 编写的库,用于简化编写容错的.高可伸缩性的 Java 和 Scala 的 Actor 模型应用. Actor模型并非什么新鲜事物,它由Carl Hew ...

  7. 【2017-05-02】winform弹出警告框是否进行增删改操作、记事本制作、对话框控件和输出输入流

    一.winform弹出警告框是否进行增删改操作 第一个参数是弹出窗体显示的内容,第二个参数是标题,第三个参数是该弹窗包含确定和取消按钮. 返回的是一个枚举类接收一下. 再进行判断,如果点的是确定按钮, ...

  8. [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10 梯度消失和梯度爆炸 当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡 ...

  9. rails项目如何改变已建立的model结构

    有时候第一次用rails g model或者scaffold建立数据模型的时候难免会出错,比如字段类型错误或者字段名称错误,甚至少添加或多添加了几个字段哦.这种情况下手动去修改数据结构是比较头疼的,官 ...

  10. ASP.NET Identity 一 (转载)

    来源:http://www.cnblogs.com/r01cn/p/5194257.html 注:本文是[ASP.NET Identity系列教程]的第一篇.本系列教程详细.完整.深入地介绍了微软的A ...