目前人工智能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. options模块介绍

    一. options是什么? 是tornado中为我们提供好的一个模块. 二. options的作用? 用来定义, 存储, 转换全局参数. 即定义变量 三. options如何使用? import t ...

  2. selenium--cookie操作

    前戏 在做自动化的时候,遇到难处理的验证码,我们可以手动登录,然后获取登录到的cookie,添加到浏览器中,就可以实现登录 实战 from selenium import webdriver driv ...

  3. [LeetCode] 187. Repeated DNA Sequences 求重复的DNA序列

    All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...

  4. window环境下的oracle错误error: 0x7e的解决方法

    今天连接一个Win2008 Server服务端上的一个oracle出现了下面的这些错误 LoadLibraryFromPath: FQ Dll C:\Windows\system\oci.dll is ...

  5. java --后缀符号

    public class Sample { public static void main(String[] args) { , num2 = ; num1--; System.out.println ...

  6. .NET Core创建Worker Services

    .NET CORE 3.0新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,并且能轻松的部署成windows服务或linux守护程序.如果安装的vs2019是中文版本,W ...

  7. Qt Quick 常用元素:TabView(选项卡) 与 Slider(滑块)

    一.TabView TabView 可以实现类似 Windows 任务管理器的界面,有人叫 TabView 为标签控件,有人又称之为选项卡控件,我们知道它就是这么个东西就行了.现在来介绍 TabVie ...

  8. 破解Xmind时长

    第一步:必须先进入软件,新建一个思维导图,产生用户状态文件就行. 直接软解: 第二步:打开路径:C:\Users\你的电脑名称\AppData\Roaming\XMind ZEN\Electron v ...

  9. Distributed and Parallel Computing

    Omega Network Model

  10. python做一个简易图片下载工具

    代码有点乱,先这样 # -*- coding:utf-8 -*- #__author__ :kusy #__content__:文件说明 #__date__:2018/11/01 11:01 impo ...