当前位置: 首页 > news >正文

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

什么是数字图像处理

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

什么是数字图像

(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距离

两点间的最短通路

相关文章:

  • 《TCP/IP网络编程》(第十二章)I/O复用(2)
  • 如何找出真正的交易信号?Anzo Capital昂首资本总结7个
  • Vue3实战笔记(51)—Vue 3封装带均线的k线图
  • 微信小程序预览图片和H5使用canvas实现图片+蒙层+文字
  • 2019美亚
  • 【面试】谈谈常见的Java虚拟机有哪些
  • JavaScript-JavaWeb
  • 聚观早报 | 哪吒L纯电版开启预售;OPPO Pad 3获3C认证
  • opencl色域变换,处理传递显存数据
  • 【PB案例学习笔记】-13 徒手做个电子时钟
  • fast-lio2代码学习
  • GEC6818开发板的环境配置
  • AI界的“拼夕夕”登场,为上万张GPU寻找新使命
  • 磁盘管理后续——盘符漂移问题解决
  • Java进阶学习笔记21——泛型概念、泛型类、泛型接口
  • php的引用
  • Angular Elements 及其运作原理
  • CODING 缺陷管理功能正式开始公测
  • cookie和session
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • create-react-app项目添加less配置
  • emacs初体验
  • Javascript 原型链
  • Java-详解HashMap
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Redux 中间件分析
  • 不上全站https的网站你们就等着被恶心死吧
  • 对象引论
  • 后端_ThinkPHP5
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 物联网链路协议
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • puppet连载22:define用法
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • !$boo在php中什么意思,php前戏
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #QT(智能家居界面-界面切换)
  • (12)Hive调优——count distinct去重优化
  • (16)Reactor的测试——响应式Spring的道法术器
  • (C)一些题4
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Java数据结构)ArrayList
  • (poj1.2.1)1970(筛选法模拟)
  • (八)Spring源码解析:Spring MVC
  • (分布式缓存)Redis哨兵
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (强烈推荐)移动端音视频从零到上手(下)
  • ***测试-HTTP方法
  • ... 是什么 ?... 有什么用处?
  • .gitignore文件使用
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net连接MySQL的方法