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

数字图像处理基础-用通俗语言进行超详细的总结

目录

图像感知与获取

韦伯定理

马赫带效应

图像获取

图像的采样和量化

图像内插(重采样)

图像的表示与描述

像素间的关系

exercise:4-邻域连通区域标记


本文章讲解数字图像处理的基础,大部分内容来源于课堂笔记中

图像感知与获取

人眼解剖图

屈光系统:光线由一种介质进入另一种不同折射率的介质时,会发生前进方向的改变,在眼光学中成“屈光”,屈光系统由角膜、房水、晶状体、玻璃体构成

感光系统:视网膜

视觉形成过程:物体(发射,反射)--->人眼屈光媒质--->感光细胞(视锥细胞、视杆细胞)--->感光细胞外节的光敏色素吸收光子后分解放出的能量形成膜电位发出信号--->通过突触传递给双极细胞和水平细胞,它们将信号作进一步处理后,传递给神经节细胞---->大脑皮层--->识别并产生视觉

视杆细胞:视网膜表面,负责黑白视觉,对光线的敏感程度非常敏感,主要用于暗视觉,左右人的夜视能力;对色彩没有感觉

视锥细胞:视网膜中央凹中间部分,对颜色高度敏感,具有三种类型:红色、绿色、蓝色感光细胞。常见色盲原因:其中一种视锥细胞发育出现问题

人眼聚焦:睫状体中的纤维根据目标远近,会压扁或加厚晶状体,从而改变焦距

韦伯定理

韦伯定理指出:差别阈限和标准刺激的强度成正比,并且差别阈限和标准刺激的比例是一个常数

\Delta Ic/I=K

以视觉为例,如果你在一个相对暗的房间中看到了两个光源,其中一个比另一个更亮,那么你可能会轻松地注意到它们之间的差别。但如果你在一个非常明亮的环境中,两个光源的强度差异需要更大才能被感知到相同的程度。这就是韦伯定律的体现:感知到的差别阈限与刺激强度成比例

然而,对于不同的感知系统、不同的感官以及不同的实验条件,韦伯比可能会略有变化。韦伯比大说明感知系统相对较不敏感,需要更大的刺激变化才能产生可察觉的差异。相反,韦伯比小说明感知系统相对较敏感,较小的刺激变化就足以引起可察觉的差异

马赫带效应

马赫带是一种主观的边缘对比效应。当观察两块亮度不同的区域时,边界处亮度对比加强,使轮廓表现得特别明显

马赫带效应的出现是人类的视觉系统造成的。生理学对马赫带效应的解释是:人类的视觉系统有增强边缘对比度的机制

图像获取

图像获取指的是将物体成像的过程,由“照射”源和形成图像的“场景”元素对光能的反射或吸收而产生的

图像获取主要有三种方式:使用单个传感器获取图像、使用条带传感器获取图像、使用传感器阵列获取图像

阵列传感器CCD

图像的采样和量化

图像采样是指从连续的图像中获取离散的样本或数据点的过程。想象一张图像是由无数个像素组成的,像素是图像中最小的单元。采样即是在图像中选取部分像素以表示整个图像。采样过程决定了图像的分辨率。高分辨率图像具有更多的像素,可以呈现更多的细节;低分辨率图像则只包含少量像素,细节较少 

图像量化是指将采样得到的图像数据转换为离散的数值表示的过程。数字图像中的每个像素需要用数字来表示。这个过程就是量化。常见的是将图像的亮度范围映射为数字值。例如,如果是灰度图像,可能使用 0 到 255 之间的整数来表示像素的灰度级别。0代表黑色,255代表白色

通俗地说,采样就像是用相机拍照,而量化则是将照片上的颜色和亮度转换成数字。采样决定了图像的清晰度和细节程度,量化则决定了图像的色彩和亮度等方面的表现

动态范围:描述了一张图片中最暗的地方到最亮的地方的亮度差异。想象一下你站在一个夏日的海滩上,太阳光照在沙滩上,海水里可能有一些阴影。动态范围就是指能在同一张照片中捕捉到这个阳光下明亮的沙滩和海水中较暗的阴影的能力

比如8比特的灰度图像,下述k=8

饱和度:图像中颜色的强度或纯度。高饱和度表示颜色非常鲜艳、明亮,而低饱和度则使颜色看起来更灰淡或淡淡的。想象一下一个色彩斑斓的花园照片,高饱和度可能使得花朵的颜色非常生动,而低饱和度则可能导致花色看起来更为柔和和淡雅

对比度:图像中亮和暗之间的差异程度。高对比度的图像中,明暗之间的差异非常明显,而低对比度的图像则使得明暗过渡更为平缓。想象一下一张黑白照片,高对比度可能导致清晰的黑白分界线,而低对比度则可能使得灰度变化更为平缓

均匀量化:将数据范围均匀地划分为若干个区间,然后将每个区间映射到一个离散值

非均匀量化:可以根据数据的分布情况不均匀地划分区间。这样可以更灵活地对图像进行量化,使得对图像中某些区域的细节更加敏感

空间分辨率:是指遥感图像上能够详细区分的最小单元的尺寸或大小,是用来表征影像分辨地面目标细节的指标

灰度分辨率:涉及到图像中可见的不同灰度层次或颜色层次的数量,比如8位灰度深度意味着256个不同的灰度级别

图像内插(重采样)

下采样/缩小图片:行列删除
上采样/放大图片:创建新的像素位置,对新位置上的像素赋值

针对图像内插,下面介绍三种不同的插值方法:

最近邻插值:把原图中最近邻的灰度赋给每个新像素

这种方法的优缺点很明显,优点就是实现简单、速度快,缺点就是容易产生马赛克效应

双线性插值:其核心思想是在两个方向分别进行一次线性插值

大致原理:分别在Q12Q22、Q11Q21的连线上,通过最邻近插值按比例算出R2、R1的f值,然后再在R1R2的连线上同理算出P的f值

优点: 比最近邻插值效果好,没有明显的块效应
缺点: 计算量比最近邻插值大,使图像细节退化

双三次插值使用16个邻近像素的灰度值进行插值计算,采用二次多项式的插值方法。这样可以更好地保留图像的细节,并减少缩放操作引入的伪影和失真

图像的表示与描述

图像一般用二维矩阵表示,矩阵元素 f (m, n)表示图像在第 m 行 第 n 列的像素值,称为像素

坐标索引

为了编程方便起见,在图像的描述中,我们以矩阵坐标系来定义图像的坐标

对于灰度图像,图像中每个像素信息由一个量化的灰度级描述,没有色彩信息,灰度图像的灰度级常为8bits,即0--255,0位纯黑,255位纯白

还有一种图像叫做二值图像或者是黑白图像,其只有两种像素值,要么纯黑,要么纯白

可以通过对灰度图像二值化变成黑白图像,变成黑白图像的图片,可通过分析图像连通区域估计一些东西的数量(比如统计下面米粒的数量)

像素间的关系

像素与像素之间的关系:

邻接:通常,如果像素在水平、垂直或对角线方向上相邻叫邻接

连接:通常指的是一组相邻的像素,它们在某种意义上被视为一个整体

连通:一组像素被称为连通,如果在这组像素之间存在一条路径,使得路径上的相邻像素之间也是相邻的。连通性通常用于描述图像中区域的完整性

通路:指的是连接两个像素的路径,这个路径可以通过相邻的像素进行跳跃,也可以是一条像素的序列

像素与集合之间也有上述的邻接、连接、连通关系

像素间的距离有多种定义:

欧式距离DE

曼哈顿距离D4(城区距离)

切比雪夫距离D8(棋盘格距离)

4-邻域(N4(p)) p为像素点的名称          

对角邻域/D-邻域(ND(p))

8-邻域(N8(p)):为4-邻域和D-邻域的相加

令V是用于定义邻接的灰度值集合

4-邻接:q在p的4-邻域N4(p)中,且它们都在V中取值,q在N4(p)中意味着p也在N4(q)中

8-邻接:同上,只不过是8-邻域

m-邻接/混合邻接:

1.两个像素p和q在V中取值
2.满足下列条件之一:
•q在N4(p)中,即两个像素p和q是4-邻接;
•q在ND(p)中,且N4(p)和N4(q)在V的意义下是空集,即N4(p)∩N4(r)不包含V中取值的像素

像素间的通路:是指连接两个像素的路径,这个路径可以通过相邻的像素进行跳跃,也可以是一条像素的序列,根据邻接方式不同有4-通路和8-通路

像素间的连通:S表示图像中像素一个子集,如果S中的两个像素p、q之间存在一个完全由S中像素组成的通路,则p和q在S中是连通的,也分为4-连通和8-连通

令R表示图像中像素的一个子集。若R是一个连通集,称R为图像的一个区域

若 Ri和 Rj形成一个连通集时,称 Ri和 Rj为邻接区域

边界:也称为区域的轮廓,是该区域的一个子集,但在其邻域中有不属于该区域的像素,它将该区域与其他区域分开。必须指定所用连接类型才能确定一个像素是否属于边界

比如,上图,如果定义连接类型为8-连接则圈住的1为于赋1值区域的边界,如果定义为4-连接,那么它的4-邻域没有赋1值区域以外的像素,那么它就不是边界了

exercise:4-邻域连通区域标记

4-邻域连通区域标记是图像处理中的一项基本任务,常用于标记图像中具有相同像素值且相邻的区域。下面是一个简单的Python代码示例,使用深度优先搜索(DFS)进行4-邻域连通区域标记:

def dfs(image, row, col, label, visited, connectivity=4):# 4-邻域的相邻像素坐标增量neighbors = [(-1, 0), (0, -1), (0, 1), (1, 0)] if connectivity == 4 else [(-1, 0), (0, -1), (0, 1), (1, 0), (-1, -1), (-1, 1), (1, -1), (1, 1)]# 标记当前像素image[row][col] = labelvisited[row][col] = True# 遍历相邻像素for dr, dc in neighbors:new_row, new_col = row + dr, col + dc# 检查相邻像素是否在图像范围内且未被访问if 0 <= new_row < len(image) and 0 <= new_col < len(image[0]) and not visited[new_row][new_col] and image[new_row][new_col] == 1:dfs(image, new_row, new_col, label, visited, connectivity)def label_connected_regions(image, connectivity=4):rows, cols = len(image), len(image[0])visited = [[False for _ in range(cols)] for _ in range(rows)]label = 0for i in range(rows):for j in range(cols):if not visited[i][j] and image[i][j] == 1:label += 1dfs(image, i, j, label, visited, connectivity)return image# 示例用法
image = [[1, 0, 1, 0],[1, 0, 1, 0],[0, 0, 1, 1],[1, 0, 0, 0]
]result = label_connected_regions(image, connectivity=4)
print(result)

相关文章:

数字图像处理基础-用通俗语言进行超详细的总结

目录 图像感知与获取 韦伯定理 马赫带效应 图像获取 图像的采样和量化 图像内插&#xff08;重采样&#xff09; 图像的表示与描述 像素间的关系 exercise&#xff1a;4-邻域连通区域标记 本文章讲解数字图像处理的基础&#xff0c;大部分内容来源于课堂笔记中 图像感…...

3.3.1详解linux内核链表list_head及其接口应用

文章目录 1 list定义2 list接口2.1 list初始化方法1:定义并初始化链表方法2:先定义再初始化链表2.2 list_add2.3 list_del2.4 list_replace2.5 list_move2.6 list_splice3 list遍历3.1 list_entry3.2 list_first_entry3.3 list_last_entry3.4 list_first_entry_or_null3.5 li…...

发挥云计算潜力:Amazon Lightsail 与 Amazon EC2 的综述

文章作者&#xff1a;Libai 欢迎来到云计算世界&#xff0c;这里有无数的机会和无限的应用程序增长。 在当今的数字时代&#xff0c;企业可能会发现管理基础架构和扩展应用程序具有挑战性。 传统的本地解决方案需要大量的硬件、软件和维护前期投资。 要满足不断增长的需求&…...

【深度学习】卷积神经网络(CNN)

一、引子————边界检测 我们来看一个最简单的例子&#xff1a;“边界检测&#xff08;edge detection&#xff09;”&#xff0c;假设我们有这样的一张图片&#xff0c;大小88&#xff1a; 图片中的数字代表该位置的像素值&#xff0c;我们知道&#xff0c;像素值越大&#…...

科普:多领域分布式协同仿真

分布式协同仿真是一种在分布式计算环境中进行协同工作的仿真方法。使用该方法进行协同仿真时&#xff0c;仿真任务将被分发到多个计算节点上&#xff0c;并且这些节点可以同时工作以模拟完整的系统行为。分布式协同仿真已被广泛应用于工程、科学和军事领域&#xff0c;以便更好…...

openstack(2)

目录 块存储服务 安装并配置控制节点 安装并配置一个存储节点 验证操作 封装镜像 上传镜像 块存储服务 安装并配置控制节点 创建数据库 [rootcontroller ~]# mysql -u root -pshg12345 MariaDB [(none)]> CREATE DATABASE cinder; MariaDB [(none)]> GRANT ALL PR…...

Jmeter 压测保姆级入门教程

1、Jmeter本地安装 1.1、下载安装 软件下载地址&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/ 选择一个压缩包下载即可 然后解压缩后进入bin目录直接执行命令jmeter即可启动 1.2 修改语言 默认是英文的&#xff0c;修改中文&#xff0c;点击…...

springboot2.1升级到2.7 actuator丢失部分metrics端点

项目场景&#xff1a; 项目需要升级springboot从2.1升级至2.7 问题描述 发现之前的metrics后面的jvm相关的端口丢了 原因分析&#xff1a; 找到这样一篇博文https://blog.csdn.net/CL_YD/article/details/120309094&#xff0c;这篇博文意思是对的&#xff0c;但是写的不太好…...

梦开始的地方——Adobe Premiere Pro

今天&#xff0c;我们来说说一款老生常谈的相信也是很多人都经常迫切需要的软件。Adobe Premiere Pro&#xff0c;简称Pr&#xff0c;是由Adobe公司开发的一款视频编辑软件。 Premiere Pro是视频编辑爱好者和专业人士必不可少的视频编辑工具。它可以提升您的创作能力和创作自由…...

Nginx同时支持Http和Https的配置详解

当配置Nginx同时支持HTTP和HTTPS时&#xff0c;需要进行以下步骤&#xff1a; 安装和配置SSL证书&#xff1a; 获得SSL证书&#xff1a;从可信任的证书颁发机构&#xff08;CA&#xff09;或使用自签名证书创建SSL证书。 将证书和私钥保存到服务器&#xff1a;将SSL证书和私钥…...

3.2 Windows驱动开发:内核CR3切换读写内存

CR3是一种控制寄存器&#xff0c;它是CPU中的一个专用寄存器&#xff0c;用于存储当前进程的页目录表的物理地址。在x86体系结构中&#xff0c;虚拟地址的翻译过程需要借助页表来完成。页表是由页目录表和页表组成的&#xff0c;页目录表存储了页表的物理地址&#xff0c;而页表…...

基于springBoot+Vue的停车管理系统

开发环境 IDEA JDK1.8 MySQL8.0Node 系统简介 本项目为前后端分离项目&#xff0c;前端使用vue&#xff0c;后端使用SpringBoot开发&#xff0c;主要的功能有用户管理&#xff0c;停车场管理&#xff0c;充值收费&#xff0c;用户可以注册登录系统&#xff0c;自主充值和预…...

ES开启安全认证

elasticsearch开启安全认证步骤 1.创建证书 进入到es主目录下执行 ./bin/elasticsearch-certutil ca Elasticsearch开启安全认证详细步骤 第一个证书名称默认&#xff0c;直接回车 第二个输入密码&#xff0c;直接回车 完成后会生成一个文件&#xff1a;elastic-stack-ca.p12…...

CS5511规格书|CS5511方案应用说明|DP转双路LVDS/eDP芯片方案

概述&#xff1a;CS5511是一个将DP/eDP输入转换为LVDS信号的桥接芯片&#xff0c;此外&#xff0c;CS5511可以用作在DP/eDP输入到DP/eDP输出场景中桥接芯片。CS5511的高级接收器支持VEDA DisplayPort&#xff08;DP&#xff09;1.3和嵌入式DisplayPort&#xff08;eDP&#xf…...

JAVA小游戏“飞翔的小鸟”

第一步是创建项目 项目名自拟 第二步创建个包名 来规范class 再创建一个包 来存储照片 如下&#xff1a; package game; import java.awt.*; import javax.swing.*; import javax.imageio.ImageIO;public class Bird {Image image;int x,y;int width,height;int size;doubl…...

1410. HTML 实体解析器 --力扣 --JAVA

题目 「HTML 实体解析器」 是一种特殊的解析器&#xff0c;它将 HTML 代码作为输入&#xff0c;并用字符本身替换掉所有这些特殊的字符实体。 HTML 里这些特殊字符和它们对应的字符实体包括&#xff1a; 双引号&#xff1a;字符实体为 &quot; &#xff0c;对应的字符是 &qu…...

【开源】基于Vue.js的海南旅游景点推荐系统的设计和实现

项目编号&#xff1a; S 023 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S023&#xff0c;文末获取源码。} 项目编号&#xff1a;S023&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四…...

机器学习【01】相关环境的安装

学习实例 参考资料&#xff1a;联邦学习实战{杨强}https://book.douban.com/subject/35436587/ 项目地址&#xff1a;https://github.com/FederatedAI/Practicing-Federated-Learning/tree/main/chapter03_Python_image_classification 一、环境准备 GPU安装CUDA、cuDNN pytho…...

微服务实战系列之签名Sign

前言 昨日恰逢“小雪”节气&#xff0c;今日寒风如约而至。清晨的马路上&#xff0c;除了洋洋洒洒的落叶&#xff0c;就是熙熙攘攘的上班族。眼看着&#xff0c;暖冬愈明显了&#xff0c;叶子来不及泛黄就告别了树。变化总是在不经意中发生&#xff0c;容不得半刻糊涂。 上集博…...

家用小型洗衣机哪款性价比高?口碑最好迷你洗衣机排行榜

由于我们的内衣、内裤和袜子等等贴身小件衣物的清洁频率比一般的衣物要高。而且&#xff0c;如果我们人工手洗的话&#xff0c;不仅会大大浪费了我们的时间&#xff0c;而且还不能进行对这些贴身的以为进行深层消毒和除菌。这种情况下&#xff0c;就得需要一台专门用于清洗内衣…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...

SQL注入篇-sqlmap的配置和使用

在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap&#xff0c;但是由于很多朋友看不了解命令行格式&#xff0c;所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习&#xff0c;链接&#xff1a;https://wwhc.lanzoue.com/ifJY32ybh6vc…...

工厂方法模式和抽象工厂方法模式的battle

1.案例直接上手 在这个案例里面&#xff0c;我们会实现这个普通的工厂方法&#xff0c;并且对比这个普通工厂方法和我们直接创建对象的差别在哪里&#xff0c;为什么需要一个工厂&#xff1a; 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类&#xff1a; 两个发…...