【图像处理与机器视觉】图像处理概述与像素

什么是数字图像处理

改善图像信息,便于作出解释
方便对图像传输,储存,方便机器理解

什么是数字图像

(1)模拟图像:连续二维函数 f(x,y)表示,其中 x,y 是平面坐标,f 代表图像在某点的某种性质的数值
(2)数字图像:对模拟图像red:离散化的结果
r 表示图形的行,c 表示图像的列,I 表示离散后的 f,可以用矩阵或者数组来描述数字图像
像素:数字图像的元素

数字图像处理的任务

(1)图像获取
(2)图像预处理
(3)图像滤波与增强
(4)图像复原
(5)彩色图像处理
(6)图像压缩
(7)图像分割
(8)图像描述与识别

机器视觉

用机器来模拟视觉,使用算法对于采集到的图像进行分析处理,并做出合适决策
计算机视觉侧重于对于理论的研究,而机器视觉侧重于对于实际场景的使用,强调算法的重要性
一个完整的机器视觉系统包括:
(1)光学系统
(2)图像采集模块
(3)图像处理系统
(4)交互界面
光学系统:通常包括光源,相机和镜头,突出被拍摄物体的特征,方便后期处理
图像采集模块:使用图像采集卡,将来自相机的模拟信号或者数字信号转为图像数据流
图像处理系统:通过视觉处理软件对于图像进行多种运算,并对得到的特征进行检测,定位,测量等处理
交互界面:显示最终的结果

工业应用中机器视觉的特点

(1)综合技术
(2)实用性
(3)实时性

处理基础

图像感知与获取

通过传感器将输入能源变为电压,再进行数字化处理

图像取样与量化

大多数传感器的输出是连续电压波形,为了产生图像,需要把连续的模拟信号转为离散的数字信号
取样:图像空间坐标的数字化
量化:对于图像函数值 f的数字化
数字图像只是对于真实场景的近似,取样点越多,量化的灰度级越多,图像质量越好
对于表示模拟图像的函数 f ( s , t ) f(s,t) f(s,t),通过采样和量化,转化为 M 行 N 列,离散灰度级数为 L 的数字图像,其中 M、N 必须为正整数,灰度级数 L = 2 k L=2^k L=2k,等间隔
(1)灰度跨越的值域为动态范围: 图像中最大可度量灰度 图像中最小可检测灰度 \frac{图像中最大可度量灰度}{图像中最小可检测灰度} 图像中最小可检测灰度图像中最大可度量灰度
(2)可度量灰度的上限取决于饱和度,超过了饱和度的灰度级将被剪切掉;下限取决于噪声,因为噪声掩盖了可检测的最低真实灰度级
(3)对比度:图像中最高的灰度级与最低的灰度级之间的灰度差
L = 2 k L=2^k L=2k,储存数字图像所需要的 bit 数为: M ∗ N ∗ k M*N*k MNk
E.G.对于 32*32 的二值图像(黑白两种元素的图像)
k=1,则其大小为: 3 2 2 ∗ 1 = 1024 b i t s = 256 b y t e s 32^2*1=1024bits=256bytes 3221=1024bits=256bytes

空间分辨率

图像的空间分辨率代表着对于图像中可辨别的最小单位的度量,由采样方式确定:
(1)视觉任务:像素尺寸
(2)平面设计:DPI(dots per Inch)

灰度分辨率

灰度分辨率则是指在灰度级中可以分辨的最小变化,灰度分辨率越大,图像的细节区分度就越好
在这里插入图片描述

图像中灰度级变小会如何:图像的明暗过度会越来越明显,同时可能出现一些不属于正常物体边缘的伪轮廓,呈现细小山脊状,是灰度级不够平滑造成的

图像内插

用于图像的放大缩小,旋转矫正等任务,同时也可以相对应的改变图像的分辨率
插值:通过已知的图像数据来对改变后的位置数据进行处理

最近邻插值

将原图中最相邻的灰度值赋给新位置,当对于边缘来说可能造成严重的失真
插值过程:
(1)对于一张 500x500 的图像,将其放大为 750x750
(2)采用原图的间隔创建 750*750 的网格
(3)将新图像收缩到和原图相同的大小,此时新网格的单位边长小于原网格
(4)对每个新网格中的点,找到其最近的原网格的点为其赋值
(5)将新网格扩展到 750x750 的大小,此时就获得了放大后的图片
总体来说,过程就是:放大-缩小-放大
在这里插入图片描述

线性插值

已知点(x0,y0)与 (x1,y1),计算[x0,x1]区间上的任意直线上一点的插值
y = x 1 − x x 1 − x 0 ⋅ y 0 + x − x 0 x 1 − x 0 ⋅ y 1 y = \frac{x_1-x}{x_1-x_0}\cdot{y_0}+\frac{x-x_0}{x_1-x_0}\cdot y_1 y=x1x0x1xy0+x1x0xx0y1
则认为
f ( P ) = x 1 − x x 1 − x 0 ⋅ f ( P 0 ) + x − x 0 x 1 − x 0 ⋅ f ( P 1 ) f(P) = \frac{x_1-x}{x_1-x_0}\cdot f(P_0)+\frac{x-x_0}{x_1-x_0}\cdot f(P_1) f(P)=x1x0x1xf(P0)+x1x0xx0f(P1)
在这里插入图片描述

双线性插值

用 4 个最近邻来估计给定位置的灰度值,相当于将 y 轴也算作灰度值插值,就不用考虑需要在直线上的条件,只要在 x,y 构成的平面内即可
首先还是在 x 方向进行线性插值,获得两个辅助点 R1 和 R2,然后再利用这两个辅助点在 y 方向上插值,从而得到最终的插值结果
在这里插入图片描述
我们也可以推出在三维空间中是三线性插值

双三次插值

了解即可,采用 16 个最近邻点来进行计算,效果比双线性插值更好,但是速度更慢

像素间的基本关系

主要分为 4 邻域,D 邻域,和 8 邻域
在这里插入图片描述
(对于 1 而言)
4 邻域:2,4,6,8 号格
D 邻域:3,5,7,9 号格
8 邻域:4 邻域+D 邻域
在灰度级中,我们一般考虑 3 种像素的邻接方法
(1)4 邻接:两个像素互在对方的 4 邻域中
(2)8邻接:两个像素互在对方的 8 邻域中
(3)m 邻接(混合邻接):分为两种情况:1.4 邻接 2.两个像素互在对方的 D 邻域中,且 4 邻域的交集中像素值为 0
目的:对于8邻接,在寻找两个点的路径或者计算路径长度的时候会出现二义性的问题,m邻接可以去除二义性
在这里插入图片描述
如果使用8邻接,那么A-D的距离计算就会产生歧义,但是对于m邻接,A-C不能直接联通,因为他们的4邻域的交集中有B,所以A-D的路径为A-B-C-D

通路与连通集

对于刚刚我们提到的路径,我们把其叫做通路,通路的长度即为其包含的像素个数
(1)如果起始点和终点是同一个点,那么我们就认为这条通路是闭合通路,使用了哪种邻接方式就被称为x-通路
(2)给定一个像素集合S,对于任何一个属于S的像素q,通路中连接到像素q的像素集被称为S的连通分量
(3)如果S仅有一个连通分量,则S称为连通集
(4)R为图像的一个像素子集且刚好构成连通集,则将其称为一个区域,两个区域合在一起成为一个连通集,则这两个区域称为邻接区域

前景与背景

一幅图像中有k个不连接的区域,它们均不与图像的边界相接,令 R u R_u Ru代表k个区域的并集, ( R u ) c (R_u)^c (Ru)c表示其补集
则称 R u R_u Ru为前景,$(R_u)^c为背景

图形的边界

对于图像中的一部分区域,已经定义了其邻接方式,若在此邻接方式下,区域的某像素的邻接区域中出现背景像素,则称该像素为该区域的边界

对于距离的定义

在图中,对于像素有:
(1)不是同一个点之间的距离必然大于0
(2)A到B的距离等于B到A的距离
(3)两边之和大于第三边

欧式距离

就是传统的计算距离的方式,勾股定理

D4距离(城市街区距离)

D 4 ( p , q ) = ∣ X p − X q ∣ + ∣ Y p − Y q ∣ D4(p,q) = |X_p-X_q|+|Y_p-Y_q| D4(p,q)=XpXq+YpYq

D8距离(棋盘距离)

D 8 ( p , q ) = m a x ( ∣ x p − x q ∣ , ∣ y p − y q ∣ ) D8(p,q) = max(|x_p-x_q|,|y_p-y_q|) D8(p,q)=max(xpxq,ypyq)

Dm距离

两点间的最短通路

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

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

相关文章

操作系统真象还原:一些你可能正感到迷惑的问题

第0章-一些你可能正感到迷惑的问题 这是我看操作系统真象还原这本书的一些记录: 4 软件是如何访问硬件的 硬件在输入输出上大体分为串行和并行,相应的接口也就是串行接口和并行接口。串行硬件通过串行接口与 CPU 通信,反过来也是&#xff…

【uni-app】Pinia 持久化

小程序端 Pinia 持久化 说明:Pinia 用法与 Vue3 项目完全一致,uni-app 项目仅需解决持久化插件兼容性问题。 持久化存储插件 安装持久化存储插件: pinia-plugin-persistedstate pnpm i pinia-plugin-persistedstate插件默认使用 localStor…

MySQL——JDBC编程

目录 前言 一、JDBC概述 二、准备工作 1.下载MySQL的JDBC驱动包 2.把jar引入到项目中 三、JDBC编程 1.插入操作 2.查询操作 尾声 前言 本篇文章主要介绍如何利用Java代码进行操作数据库,在实际开发中,绝大多数对数据库的操作我们都是通过代码进行…

aop整理

一、aop基础知识 Spring AOP 详细深入讲解代码示例 二、spring/spring boot/spring cloud中出现的注解/类与概念的对应 Aspect: 标注当前MyAspect是一个切面类,–》对应切面的概念,在切面类中有用Before等注解修饰的方法作为advice,也有用…

uni-app全局弹窗的实现方案

背景 为了解决uni-app 任意位置出现弹窗 解决方案 一、最初方案 受限于uni-app 调用组件需要每个页面都引入注册才可以使用,此方案繁琐,每个页面都要写侵入性比较强 二、改进方案 app端:新建一个页面进行跳转,可以实现伪弹窗…

筛选的艺术:数组元素的精确提取

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、筛选的基本概念 二、筛选的实际应用案例 1. 筛选能被三整除的元素 2. 筛选小于特定值…

C++ list类

目录 0.前言 1.list介绍 1.1优势 1.2劣势 1.3容器属性 2.list使用 2.1构造函数 2.1.1默认构造函数 2.1.2填充构造函数 2.1.3范围构造函数 2.1.4拷贝构造函数 2.1.5初始化列表构造函数 2.2迭代器 2.2.1 begin() 2.2.2 end() 2.2.3 cbegin() 2.2.4 cend() 2.2.…

【C#】中托管与非托管对象区别、托管与非托管DLL区别

C 中的托管与非托管的区别_托管程序和非托管程序-CSDN博客 C# 中托管与非托管对象区别 在C#中,托管对象和非托管对象的主要区别在于内存管理和执行环境: 托管对象 (Managed Objects) 内存管理:托管对象的内存由.NET运行时(CLR…

什么是CAS?

CAS(比较并交换,Compare And Swap)是一种多线程并发编程中的原子操作。它是一种乐观锁技术,用于解决 多线程环境下的数据竞争问题。CAS操作通过比较内存中的值与预期值是否相等来确定是否进行交换,如果相等&#xff0c…

PyMySQL连接池

背景 在用python写后端服务时候,需要与mysql数据库进行一些数据查询或者插入更新等操作。启动服务后接口运行一切正常, 隔了第二天去看服务日志就会报错,问题如下: pymysql.err.OperationalError: (2006, "MySQL server ha…

JavaScript-内存分配

内存空间 内存分为栈和堆 栈:由操作系统自动释放存放的变量值和函数值等。简单数据类型存放在栈中 栈会由低到高先入后出 堆:存储引用类型 (对象) 对象会先将数据存放在堆里面,堆的地址放在栈里面

关于virtualBox PC掉电后系统消失的解决方法

我们经常被会遇到笔记本电脑没电了,系统重新启动的情况。 这样会有出现虚拟机正在工作的时候,重启,导致虚拟机下次重启,系统出现问题。 直接上干货: 问题错误码 UUID {4105263a-f9d6-460e-b1e1-072377179af9} of the …

数字孪生智慧车站:全方位可视化管理平台

运用图扑数字孪生技术,智慧车站可视化管理平台实时模拟并监控车站运行状态,通过整合即时数据与历史数据,提供精准分析和预测。该平台支持乘客流量管理、设备运行监控、安全预警等多项功能,提高车站运营效率与安全性。直观的可视化…

N1 one-hot编码

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊# 前言 前言 onehot编码在机器学习比较常见,例如推荐系统中类别变量的处理等。 onehot 编码简介 One-hot编码(one-hot encoding&…

进程发起DNS请求会fork进程吗

0 发起DNS请求本身并不会导致fork进程。当一个进程需要进行DNS解析时,它会使用操作系统提供的库函数(如getaddrinfo、gethostbyname等)发起DNS查询。这些库函数会通过网络接口向DNS服务器发送查询请求,并等待DNS服务器返回查询结…

这个橙子真的香!老司机徒手把玩香橙派Kunpeng Pro事后回忆录

说!你是哪个门派? 香橙,芸香科柑橘属小乔木。枝通常有粗长刺,新梢及嫩叶柄常被疏短毛。叶厚纸质,翼叶倒卵状椭圆形,顶部圆或钝。。。 咦?小李?我们不是搞IT的嘛,怎么会有…

esp32s3 库函数功能解析

定时器 esp_restart 函数的主要功能是触发整个系统的重新启动。调用此函数后,ESP32 芯片会执行以下操作: 保存当前状态(如果需要):在一些应用场景中,可能需要在重启前保存当前系统状态,比如日…

(函数)求一元二次方程的根(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>//声明函数&#xff1b; //判断条件等于0时&#xff1b; void zeor(double a, double b);//判断条件大于0时&#xff1b; void bigzeo…

浅谈 parallelStream和Stream 源码及其应用场景

上篇讲述了list.forEach()和list.stream().forEach() 异同点 谈到了并行流的概念&#xff0c;本篇则从源码出发&#xff0c;了解一下其原理。 一、流的初始操作流程 jdk8中 将Collection中加入了转换流的概念。 default Stream<E> stream() {return StreamSupport.str…

用wordpress模板搭建网站的好处

使用WordPress模板搭建网站的优势主要包括以下几点&#xff1a; 多样化选择&#xff1a;WordPress提供了数千种免费和付费模板&#xff0c;覆盖各种行业和风格&#xff0c;满足不同用户的需求。 易于使用和定制&#xff1a;WordPress界面简单易用&#xff0c;适合没有HTML或其…