当前位置: 首页 > 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距离

两点间的最短通路

相关文章:

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

什么是数字图像处理 改善图像信息,便于作出解释 方便对图像传输,储存,方便机器理解 什么是数字图像 (1)模拟图像:连续二维函数 f(x,y)表示,其中 x&#xf…...

虚函数的性能消耗到底在哪?

虚函数的性能消耗 聊到虚函数的性能开销,大家的第一反应肯定是间接调用上,何为间接调用? 当调用一个虚函数时,实际执行的函数版本是在运行时通过虚函数表(virtualtable)查找确定的。这个查找过程是一个间接…...

Visual Studio 的使用

目录 1. 引言 2. 安装和配置 2.1 系统要求 2.2 安装步骤 2.3 初次配置 3. 界面介绍 3.1 菜单栏和工具栏 3.2 解决方案资源管理器 3.3 编辑器窗口 3.4 输出窗口 3.5 错误列表 3.6 属性窗口 4. 项目管理 4.1 创建新项目 4.2 导入现有项目 4.3 项目属性配置 5. 代…...

Web前端与App前端:深入剖析两者的异同

Web前端与App前端:深入剖析两者的异同 在数字化时代,前端技术已成为连接用户与数字世界的桥梁。然而,当我们谈及前端时,往往会遇到两个相似的概念:Web前端和App前端。这两者是否完全相同,还是各有千秋&…...

初学者必读:Midjourney AI创作工具的简易使用手册!

在数字化时代,AI的应用不断推动着各个领域的发展。在这些领域中,AI在艺术和设计方面的应用引起了广泛的关注。AI绘画软件作为今年的热门,Midjourney 通过其独特的原理和方便的使用方法,为创作者提供了一个全新的创作逼真绘画的平台…...

使用python绘制一个五颜六色的爱心

使用python绘制一个五颜六色的爱心 介绍效果代码 介绍 使用numpy与matplotlib绘制一个七彩爱心! 效果 代码 import numpy as np import matplotlib.pyplot as plt# Heart shape function def heart_shape(t):x 16 * np.sin(t)**3y 13 * np.cos(t) - 5 * np.cos…...

关于锂电池短路测试

了解锂电池短路测试 电池短路试验测试标准有哪些?宏展告诉你 - 哔哩哔哩 (bilibili.com) 电池电芯上架亚马逊美国站认证标准和要求UL1642测试 - 知乎 (zhihu.com) CR123A电池的短路试验: CR123A电池为例_锂锰电池所需通过的安全性能测试_纽扣电池_锂锰电池_松下电…...

排序(前篇)

1.排序的概念及其运用 2.插入排序的概念及实现 3.希尔排序的概念及实现 4.选择排序概念及实现 总代码(对比各个排序在大量的数据情况排序所化的时间): 1.排序的概念及其运用 1.1排序的概念 排序:所谓排序,就是使…...

Linux学习笔记(二)

一、Linux文件目录 1.命令:tree -L 1 2.挂载命令(例如U盘,需要挂载之后才能访问): mount /dev/cdrom /mnt ls /mnt 3.查看登录信息: last / lastlog 4.修改/查看网络信息 vi /etc/sysconfig/netw…...

Git——pull request详细教程

当我们需要协助其他仓库完成更改时,往往会用到git中的Pull Request操作,从而方便团队的协作管理和代码持续集成。 下面是详细的教程步骤。 一. Fork目标项目 比如说我现在要fork以下Qwen-VL的项目,如图所示: 随后点击Create即可…...

Prompt工程与实践

Prompt工程与实践 一、Prompt与大模型 1.1 大模型的定义 大模型本质上就是一个概率生成模型,该模型的模型参数足够大,并且在训练过程中阅读了非常多的各个领域的语料。这个时候,如果通过一个正确的、有效的指令去引导这个模型,…...

电脑录屏怎么录?7个电脑录屏软件免费版强势来袭,赶快收藏!

电脑录屏怎么录?相信很多小伙伴们都不知道怎么在Windows电脑上录屏吧?在当今社会,随着互联网的快速发展,越来越多的小伙伴们开始通过制作视频内容来分享知识、展示技能或者记录生活。电脑录屏成为了一种简单高效的方式&#xff0c…...

ts: 映射类型

映射类型会携带接口的可选和只读属性 interface User { name: string; age?: number; readonly email: string; } interface User { name: string; age?: number; readonly email: string; } type change<T> {[P in keyof T]: T[P] } type obj change<…...

调出idea解决冲突界面

背景 我对idea使用不熟练&#xff0c;还是习惯用git bash来合并代码&#xff0c;合并爆冲突后&#xff0c;我进入idea准备解决冲突&#xff0c;却发现找不到解决冲突的界面。 解决 右击idea中冲突的文件&#xff0c;将鼠标移动到菜单栏的git上&#xff0c;此时应该出现包含有…...

android studio项目 gradle-xx-bin.zip下载失败或很慢的解决方法

一、环境&#xff1a; gradle官网:https://services.gradle.org/distributions/ IDE: android studio 二、下载并拷贝以下文件 下面已 gradle-8.0 为例&#xff0c;gradle缓存目录为&#xff08;file->settings->Build,Execution…->Build Tools->Gradle查看Gradle…...

Python系列:教你使用PyMySQL操作MySQL数据库

Python系列 PyMySQL操作MySQL数据库 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_2855…...

mysql数据库管理面试题-1

1. 描述MySQL架构及其主要组件&#xff08;例如存储引擎、缓存、优化器等&#xff09;。 MySQL的架构可以分为三层&#xff1a; 客户端层&#xff1a;这是用户和MySQL数据库交互的接口&#xff0c;包括命令行工具、图形化管理工具等。 服务层&#xff1a;这是MySQL的核心部分…...

Linux安装zsh并配置oh-my-zsh

配置oh-my-zsh 查看当前shell安装zsh切换到zsh配置ohmysh 查看当前shell cat /etc/shells# /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash安装zsh sudo apt install zsh# /etc/shells: valid login s…...

echarts(6大基础图表)的使用

目录 一、vue2挂载 二、柱状图 2.1、基础柱状图介绍 2.2、标记&#xff1a;最大值\最小值(markPoint)、平均值(markLine) 2.3、显示&#xff1a;数值显示(label)、柱子宽度(barWidth)、横向柱状图 三、折线图 3.1、标记&#xff1a;最大值\最小值(markPoint)、平均值(ma…...

React hooks - forwardRef+useImperativeHandle

forwardRefuseImperativeHandle React.forwardRef用法useImperativeHandle用法第三个参数的用法 React.forwardRef与useImperativeHandle配合使用注意事项 React.forwardRef用法 1.创建一个 能够接受到ref属性的React 组件。 ref 用来获取实例&#xff0c;但函数组件不存在实例…...

MyBatis出现:SQLSyntaxErrorException: Unknown column ‘XXX‘ in ‘field list‘

<update id"updateStudent">update tb_students set stu_name${stuName},stu_gender${stuGender},stu_age${stuAge},stu_tel${stuTel}where stu_num ${stuNum}</update> 本质上来说&#xff0c;是Mybatis使用上的错误&#xff0c;不熟悉&#xff0c;理…...

代码随想录算法训练营Day54 | 392.判断子序列、115.不同的子序列 | Python | 个人记录向

本文目录 392.判断子序列做题看文章 115.不同的子序列做题看文章 以往忽略的知识点小结个人体会 392.判断子序列 代码随想录&#xff1a;392.判断子序列 Leetcode&#xff1a;392.判断子序列 做题 借鉴Day53中1143.最长公共子序列的思路&#xff0c;最后改一下判断逻辑即可。…...

利用oracle默认事务隔离级别(提交读)提升多表联查速度

利用oracle默认事务隔离级别(提交读)提升查询速度) 背景介绍&#xff1a; 数据量大查询缓慢&#xff0c;添加太多条件&#xff0c;使用IN走了全表查询导致查询速度缓慢。 解决方案&#xff1a; 版本一&#xff1a; 新建临时表&#xff0c;在查询是将数据插入到临时表中&#…...

B/S架构+java语言+Mysqladr数 据 库ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些作用?

B/S架构&#xff0b;java语言&#xff0b;Mysqladr数 据 库ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些作用&#xff1f; 药物不良反应(ADR)是指在合格药物以正常用量和用法用于预防、诊断、治疗疾病或调节生理功能时所发生的意外的、与防治目的无关的、不利或…...

Matlab中% note that Wilkinson notation (‘L1~L4~1‘) is used to specify the model

fitrm 函数的输入参数不正确&#xff0c;似乎出错的地方是在定义 fitrm 对象时使用了不正确的参数。 fitrm 函数的语法是这样的&#xff1a; rm fitrm(tbl, model, WithinDesign, withinDesign) 其中&#xff1a; - tbl 是一个表格&#xff0c;包含了待分析的数据。 - mod…...

测试测试测试

一分钟速览新闻点&#xff01; 京东前副总裁蔡磊回应被指装病&#xff1a;没有时间、精力和能力应对 百度沈抖&#xff1a;主力模型免费的原因很朴素&#xff0c;希望大家别再天天拉表格比价格 蚂蚁集团CTO何征宇&#xff1a;蚂蚁一直在努力优化和提高AI的可靠性、经济性和易…...

动态规划专题

leecode 221 class Solution { public:int maximalSquare(vector<vector<char>>& matrix) {int n matrix.size();if (n 0) return 0; // 如果矩阵为空&#xff0c;则直接返回0 int m matrix[0].size();vector<vector<int>> ans(n, vector<i…...

.net8.0与halcon编程环境构建

1.安装vs2022 2.安装h-12.0.exe ,不要勾选复选框 3.vs2022新建wpf应用程序 4.依赖项添加项目应用,选择halcondotnet.dll 5.安装System.Drawing 安装 HalconDotNet 安装 Rti.HDevEngineDotNet 在工具箱 空白处右键 应用halcon.dll WPF控件也应用halcon.dll 6.xaml申明hal…...

文心智能体平台:快来创建你的Java学习小助理,全方位辅助学习

文章目录 一、文心智能体平台1.1平台介绍1.2智能体介绍 二、智能体创建三、体验与总结 一、文心智能体平台 文心智能体平台是百度推出的基于文心大模型的智能体&#xff08;Agent&#xff09;平台&#xff0c;支持广大开发者根据自身行业领域、应用场景&#xff0c;选取不同类…...

AppInventor2 表格布局的外面的黑框怎么去掉?

问&#xff1a;表格布局的外面的黑框怎么去掉啊&#xff1f; 答&#xff1a;这个黑框是界面设计的布局位置示意&#xff0c;实际 App 测试时并没有框。 来源&#xff1a;AppInventor2 表格布局的外面的黑框怎么去掉&#xff1f; - App应用开发 - 清泛IT社区&#xff0c;为创新…...