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

news2024/11/26 7:32:58
  • 1. 什么是图像 & 图像在计算机中如何存储?
  • 2. 图像可分为哪些类型?
    • 2.1. 二值(黑白)图像
    • 2.2. 灰度图像
    • 2.3. RGB彩色图像
    • 2.4. RGBA图像
  • 3. 什么是图像通道?
  • 4. 图像处理
    • 4.1. 什么是图像处理?
    • 4.2. 图像处理流程
    • 4.3. 图像处理技术案例
      • 4.3.1. 图像增强
      • 4.3.2. 图像修复
      • 4.3.3. 图像分割
      • 4.3.4. 物体检测
      • 4.3.5. 图像压缩
      • 4.3.6. 图像处理
      • 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,...M1 y = 0 , 1 , 2 , . . . N − 1 y=0,1,2,...N-1 y=0,1,2,...N1,图像可表示为如下所示 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),这是另一种独特的神经网络架构。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/977083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汉诺塔问题(java解析代码版)

此文章只解析代码部分问题,理解汉诺塔,但是不理解代码的可以看一下,希望能帮到各位,如果有什么地方错了,欢迎指正。 不过其实主要还是给自己看的,怕到时候忘记 汉诺游戏规则如下: 1、有三根相…

成集云 | 金蝶云星空即时库存明细同步到多维表格 | 解决方案

源系统成集云目标系统 方案介绍 金蝶云星空是金蝶软件推出的新一代成长型企业SaaS管理软件,基于可组装低代码PaaS平台,构建了财务、供应链、采购管理、销售管理、生产管理、成本、税务、零售、电商、人力资源、协同办公等三十多个领域的一体化企业管理…

使用Android原生制作毛玻璃效果图片

毛玻璃效果,也被称为模糊效果,是许多现代应用中流行的一种视觉效果。在 Android 中,我们可以通过多种方式实现该效果。本文将探讨如何使用 Android 原生的 Bitmap 类和 RenderScript 来实现毛玻璃效果。 1. 准备工作 首先,你需要…

使用maven idea环境

创建模块工程后 idea三种方式执行maven命令 想在哪个工程模块上执行就点开哪一个 如果觉得双击完clean再双击install麻烦,可以 如果有需要还可以给命令后面加参数 ​​​ 第三种,在终端中打开,相当于通过idea进入了命令行 工程导入 导入模块…

Vue + Element UI 前端篇(十一):第三方图标库

Vue Element UI 实现权限管理系统 前端篇(十一):第三方图标库 使用第三方图标库 用过Elment的同鞋都知道,Element UI提供的字体图符少之又少,实在是不够用啊,幸好现在有不少丰富的第三方图标库可用&…

JVM性能优化 —— 类加载器,手动实现类的热加载

一、类加载的机制的层次结构 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时&#…

Redis List类型命令 - Set类型命令 - SortedSet类型命令

目录 List类型 什么是双向链表呢? List类型的特征: List的常用命令 LPUSH和RPUSH的区别: LPOP和RPOP的区别: LPUSH和RPUSH的使用 LPOP和RPOP的使用 LRANGE key star end:返回一段距离范围内所有的元素 BLPOP…

Kotlin(五) 循环语句

目录 For循环 关键字 until step downTo Java中主要有两种循环语句:while循环和for循环。而Kotlin也提供了while循环和for循环,其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别,因此我们就直接跳过不进行讲解…

winserver 2012 R2 部署记录

记一次winserver2012 R2 环境部署,程序要求 framework4.6.1 安装好之后发现报错,提示运行环境没有 4.6.1 支持,需要安装 于是先装了 chs 版本,发现报错。 再次打开卸载,重新安装enu版本,发现程序正常。

GPT引领前沿热点、AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域: 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。 2、数据可…

ubuntu 22.04 深度学习环境配置

第一步 安装驱动 网址:https://www.nvidia.com/download/index.aspx 根据硬件选择,我这里是 ubuntu 服务器,显卡是v100 sudo su root chmod ax NVIDIA //按 TAB 即可 加运行权限 # 禁用原显卡驱动 vim /etc/modprobe.d/blacklist.conf # 在最后一行…

服装商城小程序制作:打造便捷购物体验和提升销售额的利器

随着移动互联网的发展,服装商城小程序成为各大服装品牌推广销售的重要工具。它不仅能够为用户提供便捷的购物体验,还能帮助服装商城实现更高效的销售和管理。下面给大家介绍下服装商城小程序的优点以及制作流程,让您了解并充分利用这一利器。…

【视觉系统】电容正负极角度机器视觉测量软硬件方案-康耐德智能

电容正负极角度测量  客户的需求  检测内容 电容的正负极角度测量。  检测要求 判断电容的正负极,无精度要求,速度越快越好。  凯瑞斯评估  视觉可行性分析 对贵司的样品进行了光学实验,并进行图像处理,…

数据链路层中多路复用详解

MAC协调节点间信号的传输,经历避免节点间相互干扰 因此出现了两种信道划分方式,分别是:静态划分信道、动态划分信道 一、什么是多路复用 多路复用技术是把多个低速信道合成一个高速信道的技术,使得一条高速的主干链路同时为多条…

STM32 硬件IIC 控制OLED I2C卡死问题

1. STM32L151C8T6 硬件IIC 控制OLED 屏,OLED 驱动IC CH1116G, 查阅OLED 数据手册 2. STM32 硬件IIC 初始化,用的标准库,固件库 // stm32l151c8t6 as master, oled control ic (CH1116G) as slave, and communicate by master iic2 void STM3…

基于FPGA的ECG心电信号峰值检测和心率计算,包括testbench测试文件和ECG数据转换为coe文件程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 202…

联想M7600D激光打印机墨粉盒清零方法

粉盒没有墨粉了,加粉后回来安装回打印机里还是会显示请更换墨粉盒;这个时候你就需要将粉盒的计数归一下零,好让机器重新计数;那么怎么清零呢?用什么方法清零呢?在哪里操作呢?下面我就告诉你一个…

Android中的view绘制流程,简单理解

简单理解 Android中的View类代表用户界面中基本的构建块。一个View在屏幕中占据一个矩形区域、并且负责绘制和事件处理。View是所有widgets的基础类,widgets是我们通常用于创建和用户交互的组件,比如按钮、文本输入框等等。子类ViewGroup是所有布局&…

Facebook 广告:如何为移动设备投放广告

图片来源于:SaleSmartly官网 如果您希望目标受众发现并看到您的企业,那么广告是至关重要的,但是哪些是宣传您的品牌的最佳方式呢?当今最常用的平台(手机)上的广告怎么样?能够回答这些问题很重要…

el-select数据过多的解决(纯前端)

前言 el-select数据过多这个问题应该很多人都遇到过,在生产环境中数据几百、几千条是比较常见的。当数据过多时,就会造成浏览器卡顿,如果客户电脑性能不行,浏览器直接卡死也有可能。 解决 先说一下现在项目中遇到的两种解决方案…