Python 计算机视觉 —— 数字图像处理基础

Posted 一马归一码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 计算机视觉 —— 数字图像处理基础相关的知识,希望对你有一定的参考价值。

目录

1. 数字图像处理

2. 图像三要素

(1) 图像大小(size)

像素点

分辨率

图像大小

(2) 图像深度(depth)

(3) 图像通道数(channels)

单通道

三通道

四通道

二通道

3. 图像类型

(1)二值图像

(2)灰度图像

(3)索引图像

(4)RGB 彩色图像

4. 图像信号数字转换

(1)图像数字化

(2)一般数字化过程

采样

量化


1. 数字图像处理

首先我们需要了解什么是数字图像处理(Digital Image Processing)

数字图像处理主要的目的是改善图示信息以便于人们理解,还有就是为了存储、传输以及表示而对图像进行处理,以便于机器的自动理解

所以,我们可以将其理解为将一幅简单的原始图像使用计算机处理成为更能为我们所理解或需要的形式

比如车牌检测、人脸识别等

2. 图像三要素

一般来说,对于一个图像需要使用它的三个要素去描述它,其中包括图像的大小(size),图像深度(depth)以及图像通道数(channels)

(1) 图像大小(size)

此处可参考:图像的大小的计算

像素点

一张图片放大以后就会呈现为一个个点阵,而其中的每一个点称为一个像素点,所以对于图像的处理我们也可以认为是对像素点的处理

分辨率

图像的分辨率是指图像存储的信息量,代表每一寸图像中含有的像素点数,即 像素/英寸,单位为 PPI(Pixels Per Inch),所以分辨率代表的是类似于密度的一种量,在平时我们所说的图像的分辨率是 1280*960 这种说法并不能算是准确的,因为这种说法代表的是一张图中的像素点总数,而不是像素点密度,所以在 python 中创建画布表示图像的分辨率时,我们的表示方法如下:

fig = plt.figure(figsize = (10, 10), dpi = 300)

并不是直接使用上面提到的乘法方式 

图像大小

指的是图像占用空间的大小

计算方式为:分辨率*位深/8(这里的分辨率是像素点的总数)

分辨率:宽*高(如 1280*960)

位深:如 24 位,16位,8位

/8:计算字节数

(2) 图像深度(depth)

图像的深度是指存储每一个像素点所使用的位数,也可以用来度量图像的色彩分辨率,确定了每个彩色图像中像素点能拥有的色彩数或者灰度图像中最大灰度等级;就是上面在计算图像大小时提到的位深

表现得是单个像素点的色彩丰富度,比如 16 位(65536种)等

一般来说一个像素点使用 RGB 三种分量表示,如果每一种分量的的位数为 6,那么可以说这个像素点的深度为 18位,那么它就可以表示 二的十八次方 种颜色,所以一般图像的深度越大,它就可以表示更多的色彩,颜色也就更加多样化

(3) 图像通道数(channels)

可以参考:图像识别与处理——图像的表示与通道数问题

由于我们眼中的图像在计算中是一个个矩阵,而矩阵的列数行数与图像的尺寸有关,矩阵元素的值表示这个点的亮度,一般来说像素点值越大表示该点越亮,通常灰度图像用二维矩阵(单通道)表示,而彩色图像用三维矩阵(三通道)表示

单通道

一个像素点,如果是灰度,那么只要使用一个通道表示就可以了,所以它是单通道

三通道

如果一个像素点使用 RGB 三中颜色表示,那么它就需要三个通道来表示

四通道

在三通道的基础上添加了透明度通道

二通道

一般在编程时用来表示傅里叶变换,一个通道为实数,一个通道为虚数

3. 图像类型

(1)二值图像

二值图像的二维矩阵值仅仅由 0,1 两个值构成,’0‘ 代表黑色,‘1’ 代表白色;由于每一个像素仅仅有两种值可以选,所以计算机中二值图像的数据类型为一个二进制位;二值图像一般使用在文字、线条图的扫描识别以及掩膜图像的存储中

当然对于二值图像的像素值以及二值化有疑问可以参考知乎回答:知乎回答

(2)灰度图像

灰度图像与黑白图像并不同,黑白图像只有黑白两种色彩,但灰度图像覆盖了最黑到最亮这个过程中的所有级数,一般灰度图像使用位深为八位,可以分为 256[0~255] 个级数,但也有一些位深为十六位,那么就可以分为 65536 级灰度了

(3)索引图像

索引图像是一种把像素值直接作为 RGB 调色板下标的图像,索引图像可把像素值“直接映射”为调色板数值。一幅索引图包含一个数据矩阵data和一个调色板矩阵map,数据矩阵可以是uint8,uint16或双精度类型的,而调色板矩阵则总是一个m×3 的双精度矩阵

索引模式和灰度模式比较类似,它的每个像素点也可以有256种颜色容量,但它可以负载彩色,而灰度模式的图像最多只能有256种非彩色颜色。当图像转换成索引模式时,系统会自动根据图像上的颜色归纳出能代表大多数的256种颜色,就象一张颜色表,然后用这256种来代替整个图像上所有的颜色信息

参考自:百度百科

(4)RGB 彩色图像

彩色图像是指每个像素由R、G、B分量构成的图像,其中R、G、B是由不同的灰度级来描述的。

和索引图像相比,彩色图像每一个像素点都可以使用不同的颜色来表示,而每一种颜色都可以用 0~255 级的亮度表示,但索引图像只能在每一个像素点中表示 256 种颜色,所以彩色图像比起索引图像更为高级,但占用的空间也就越大

4. 图像信号数字转换

(1)图像数字化

将模拟图像信号进行离散化,得到的数字表示的图像(前面提到的矩阵),计算机处理图像需要将其转化为数字离散形式

(2)一般数字化过程

此处参考:图像数字化

采样

将空间上连续的图像转化为离散的采样点(像素点)的过程,采样间隔即周期如果太大就会发生混叠,如果太小则会使得计算机工作量加大

至于采样率的信号的频率之间的关系可以参考我之前的文章:

数字信号处理 2.1 — 采样

量化

把采样后所得的各种像素的灰度值从模拟量化到离散量的转换称为图像灰度的量化

比如在模拟信号中的亮度我们在数字信号中需要用矩阵中的元素值的大小来表示

当图像的采样点数一定时,采用不同量化级数的图像质量也不一样,量化级数越多,图像质量越好;量化级数越少,图像质量越差,量化级数最小的极端情况就是二值图像,图像会出现假轮廓

以上是关于Python 计算机视觉 —— 数字图像处理基础的主要内容,如果未能解决你的问题,请参考以下文章

计算机视觉数字图像处理基础知识题

OpenCV-Python计算机视觉函数

深度学习基础:8.卷积与池化

Python计算机视觉编程-第一章 图像处理基础

基于微软开源深度学习算法,用 Python 实现图像和视频修复

Python 计算机视觉 —— OpenCV 基础