Python图像处理算法实战【1】超详细整理 | 新手入门实用指南 | 图像处理基础

  • [1. 什么是图像 & 图像在计算机中如何存储?](#1. 什么是图像 & 图像在计算机中如何存储?)
  • [2. 图像可分为哪些类型?](#2. 图像可分为哪些类型?)
    • [2.1. 二值(黑白)图像](#2.1. 二值(黑白)图像)
    • [2.2. 灰度图像](#2.2. 灰度图像)
    • [2.3. RGB彩色图像](#2.3. RGB彩色图像)
    • [2.4. RGBA图像](#2.4. RGBA图像)
  • [3. 什么是图像通道?](#3. 什么是图像通道?)
  • [4. 图像处理](#4. 图像处理)
    • [4.1. 什么是图像处理?](#4.1. 什么是图像处理?)
    • [4.2. 图像处理流程](#4.2. 图像处理流程)
    • [4.3. 图像处理技术案例](#4.3. 图像处理技术案例)
      • [4.3.1. 图像增强](#4.3.1. 图像增强)
      • [4.3.2. 图像修复](#4.3.2. 图像修复)
      • [4.3.3. 图像分割](#4.3.3. 图像分割)
      • [4.3.4. 物体检测](#4.3.4. 物体检测)
      • [4.3.5. 图像压缩](#4.3.5. 图像压缩)
      • [4.3.6. 图像处理](#4.3.6. 图像处理)
      • [4.3.7. 图像生成](#4.3.7. 图像生成)

1. 什么是图像 & 图像在计算机中如何存储?

一幅图像可以定义为一个二维函数 f ( x , y ) f(x,y) f(x,y),其中x和y是空间(平面)坐标,f是图像在点(x,y)处具有的某种性质F的值,而任何一对空间坐标点 ( x , y ) (x,y) (x,y)处的幅值f,即为图像在该点处的强度灰度

为表达更清楚,我们对坐标点 ( x , y ) (x,y) (x,y)使用整数值表示: x = 0 , 1 , 2 , . . . M − 1 x=0,1,2,...M-1 x=0,1,2,...M−1和 y = 0 , 1 , 2 , . . . N − 1 y=0,1,2,...N-1 y=0,1,2,...N−1,图像可表示为如下所示 R x C RxC RxC矩阵形式,其中,R是图像的行数,C为图像的列数,而矩阵中的每个元素即为像素

习惯上,图像的原点位于左上角,正x轴向下延伸,正y轴向右延伸。许多图像显示扫描都是从左上角开始的,然后一次向下移动一行。

根据每个像素所代表信息的不同,可将图像分为二值图像、灰度图像、RGB图像等。

其中,二值图像或灰度图像是单通道 ,RGB图像是三通道(红-绿-蓝) 。彩色RGB图像的像素点(x,y)可以表示为三元组 ( r x , y , g x , y , b x , y ) (r_{x,y}, g_{x,y}, b_{x,y}) (rx,y,gx,y,bx,y)。

图像在计算机中如何存储?

计算机中,通常将像素通道所对应的值表示为整数(0~255)或浮点数(0~1),并将图像存储为不同类型(格式)的文件。每个文件通常包括元数据和多维数组的数据(例如,二值或灰度图像的二维数组,RGB和YUV彩色图像的三维数组)。

如下图所示即是将图像数据存储为不同类型图像的数组。其中,灰度图像用"宽度×高度"(二维数组)的模式存储;RGB图像,则用"宽度×高度×3"(三维数组)的模式存储。

2. 图像可分为哪些类型?

2.1. 二值(黑白)图像

仅具有两个唯一像素强度值 - 0(代表黑色)和 1(代表白色)的图像称为二值图像。此类图像通常用于突出显示彩色图像的区别部分。例如,常用于图像分割,如下图所示。

2.2. 灰度图像

灰度或8位图像由256种独特的颜色组成,其中像素强度0表示黑色,像素强度255表示白色。其间的所有其他254个值都是不同的灰度值。如下图是将RGB图像转换为其灰度图像的示例。

2.3. RGB彩色图像

我们在现代世界中常见的图像是RGB或彩色图像,对于计算机来说是16位矩阵。也就是说,每个像素可能有65536种不同的颜色。"RGB"代表图像的红色、绿色和蓝色"通道"。

到目前为止,我们的图像只有一个通道。也就是说,两个坐标可以定义矩阵的任何值的位置。现在,三个大小相等的矩阵(称为通道)彼此堆叠在一起,每个矩阵的值范围为0到255,因此我们需要三个唯一的坐标来指定矩阵元素的值。

因此,当RGB图像中的像素值为 (0, 0, 0) 时,像素的颜色为黑色;当像素值为 (255, 255, 255) 时,像素的颜色为白色。两者之间的任何数字组合都会产生自然界中存在的所有不同颜色。例如,(255, 0, 0) 是红色(因为该像素仅激活红色通道)。同样,(0, 255, 0) 是绿色,(0, 0, 255) 是蓝色。

下图所示是将RGB图像分割为其通道分量的示例。请注意,每个通道的直方图形状不同。

2.4. RGBA图像

RGBA 图像是彩色 RGB 图像,带有一个称为"alpha"的额外通道,用于描述 RGB 图像的不透明度。不透明度的值范围为 0% 到 100%,本质上是一种"透明"属性。

物理学中的不透明度描述了穿过物体的光量。例如,玻璃纸是透明的(100%不透明度),磨砂玻璃是半透明的,木材是不透明的。RGBA图像中的Alpha通道试图模仿此属性。

3. 什么是图像通道?

图像通道是指把数字图像按照颜色成分划分成不同的图像,主要有单通道图像、三通道图像、四通道图像,各通道图像之间可以进行转换。

单通道图像指每个像素点只用一个数值来表示,即只可以表示灰度,0表示黑色,1或255表示白色。

三通道图像是指图像的RGB(红绿蓝)模式,即每个像素点用 红绿蓝 三个数值来表示的彩色图像,全0表示黑色 ,全255表示白色,三个值都一样则表示灰色。

四通道图像是在RGB模式的基础上加入了Alpha(透明度),若Alpha=0则表示全透明。

4. 图像处理

4.1. 什么是图像处理?

图像处理是指在计算机上使用算法和代码自动处理、操控、分析和解释图像,广泛应用于诸多学科和领域,如电视、摄影、机器人、遥感、医学诊断和工业检验。

以医学图像分割问题为例,可利用图像预处理操作(图像修复)去除皮肤镜图像中的伪影,如下图所示。

4.2. 图像处理流程

典型数字图像处理流程的基本步骤如下:

  1. 图像采集。图像由相机捕获并使用模数转换器进行数字化(如果相机输出没有自动数字化),以便在计算机中进一步处理。
  2. 图像增强。在此步骤中,对获取的图像进行处理以满足将使用该图像的特定任务的要求。此类技术主要旨在突出图像中隐藏或重要的细节,例如对比度和亮度调整等。图像增强本质上是高度主观的。
  3. 图像修复。此步骤涉及改善图像的外观,并且是客观操作,因为图像的退化可以归因于数学或概率模型。例如,去除图像中的噪声或模糊。
  4. 彩色图像处理。此步骤旨在处理彩色图像(16位RGB或RGBA图像),例如,在图像中执行颜色校正或颜色建模。
  5. 小波和多分辨率处理。小波是表示不同分辨率图像的构建块。图像连续细分为更小的区域以进行数据压缩和金字塔表示。
  6. 图像压缩。为了将图像传输到其他设备或由于计算存储限制,图像需要被压缩并且不能保持其原始大小。这对于通过互联网显示图像也很重要;例如,在 Google 上,图像的小缩略图是原始图像的高度压缩版本。只有当您单击图像时,它才会以原始分辨率显示。该处理可以节省服务器上的带宽。
  7. 形态处理。需要提取在形状表示和描述中有用的图像组件以进行进一步处理或下游任务。形态处理提供了完成此任务的工具(本质上是数学运算)。例如,腐蚀和膨胀操作分别用于锐化和模糊图像中对象的边缘。
  8. 图像分割。此步骤涉及将图像划分为不同的关键部分,以简化和/或将图像的表示更改为更有意义且更易于分析的内容。图像分割允许计算机将注意力集中在图像中更重要的部分,而丢弃其余部分,从而使自动化系统能够提高性能。
  9. 表示和描述。图像分割过程通常遵循此步骤,其中表示的任务是决定分割区域是否应该被描绘为边界或完整区域。描述涉及提取属性,这些属性会产生一些感兴趣的定量信息,或者是区分一类对象与另一类对象的基础。
  10. 物体检测与识别。从图像中分割出对象并完成表示和描述阶段后,自动化系统需要为对象分配标签,让用户知道检测到了什么对象,例如"car"或"people"等。

4.3. 图像处理技术案例

4.3.1. 图像增强

最常见的图像处理任务之一是图像增强或提高图像质量。它在计算机视觉任务、遥感和监控中具有广泛的应用。一种常见的方法是调整图像的对比度和亮度。

对比度是图像最亮和最暗区域之间的亮度差异。通过增加对比度,可以增加图像的整体亮度,使其更容易看到。亮度是图像的整体亮度或暗度。通过增加亮度,图像可以变得更亮,从而更容易看到。大多数图像编辑软件都可以自动调整对比度和亮度,也可以手动调整。

然而,调整图像的对比度和亮度是基本操作。有时,具有完美对比度和亮度的图像在放大时会由于每平方英寸像素(像素密度)较低而变得模糊。为了解决这个问题,则可以使用图像超分辨率,从低分辨率图像中获得高分辨率图像。

该技术广泛应用于深度学习领域。例如,最早使用超分辨率的SRCNN模型,首先使用传统的双三次插值对低分辨率图像进行放大,然后用作 CNN 模型的输入。CNN 中的非线性映射从输入图像中提取重叠的图块,并将卷积层拟合到提取的图块上以获得重建的高分辨率图像。模型框架如下图所示。

4.3.2. 图像修复

图像质量可能会因多种原因而下降,尤其是云存储还不那么普遍的时代的照片。

4.3.3. 图像分割

图像分割是将图像划分为多个片段或区域的过程。每个片段代表图像中的不同对象,图像分割通常用作对象检测的预处理步骤。

有许多不同的算法可用于图像分割,但最常见的方法之一是使用阈值。例如,二值阈值处理是将图像转换为二值图像的过程,其中每个像素要么是黑色,要么是白色。选择阈值,使得亮度水平低于阈值的所有像素都变黑,并且亮度水平高于阈值的所有像素变白。

在多级阈值处理中,顾名思义,图像的不同部分根据级别数转换为不同的灰度阴影。例如,本文将多级阈值用于医学成像,特别是脑 MRI 分割,其示例如下所示。

4.3.4. 物体检测

物体检测是识别图像中的对象的任务,通常用于安防和监控等行业。许多不同的算法可用于物体检测,但最常见的方法是使用深度学习模型,特别是卷积神经网络 (CNN)。

4.3.5. 图像压缩

图像压缩是减小图像文件大小同时仍尝试保持图像质量的过程。这样做是为了节省存储空间,特别是在移动和边缘设备上运行图像处理算法,或减少传输图像所需的带宽。

传统方法使用有损压缩算法,该算法通过稍微降低图像质量来实现更小的文件大小。例如,JPEG 文件格式使用离散余弦变换进行图像压缩。

现代图像压缩方法涉及使用深度学习将图像编码到低维特征空间,然后使用解码网络在接收器端恢复该特征空间。此类模型称为自动编码器,它由学习有效编码方案的编码分支和尝试从编码特征中无损恢复图像的解码器分支组成。

4.3.6. 图像处理

图像处理是改变图像以改变其外观的过程。这可能出于多种原因而需要,例如从图像中移除不需要的对象或添加图像中不存在的对象。平面设计师经常这样做来制作海报、电影等。

4.3.7. 图像生成

图像生成是图像处理中的另一项重要应用,尤其是在需要大量标记数据进行训练的深度学习算法中。图像生成方法通常使用生成对抗网络(GAN),这是另一种独特的神经网络架构。

相关推荐
TaoYuan__30 分钟前
机器学习的常用算法
人工智能·算法·机器学习
用户40547878374821 小时前
深度学习笔记 - 使用YOLOv5中的c3模块进行天气识别
算法
十七算法实验室2 小时前
Matlab实现麻雀优化算法优化随机森林算法模型 (SSA-RF)(附源码)
算法·决策树·随机森林·机器学习·支持向量机·matlab·启发式算法
平头哥在等你2 小时前
Python中的正则表达式教程
python·正则表达式
黑不拉几的小白兔2 小时前
PTA部分题目C++重练
开发语言·c++·算法
Best_Me072 小时前
如何在Pycharm的终端里进入自己的环境
ide·python·pycharm
迷迭所归处2 小时前
动态规划 —— dp 问题-买卖股票的最佳时机IV
算法·动态规划
chordful2 小时前
Leetcode热题100-32 最长有效括号
c++·算法·leetcode·动态规划
_OLi_2 小时前
力扣 LeetCode 459. 重复的子字符串(Day4:字符串)
算法·leetcode·职场和发展·kmp
Romanticroom2 小时前
计算机23级数据结构上机实验(第3-4周)
数据结构·算法