数字图像处理笔记(一)---- 图像数字化与显示
系列文章目录
数字图像处理学习笔记(一)---- 图像数字化与显示
数字图像处理笔记(二)---- 像素加图像统计特征
数字图像处理笔记(三) ---- 傅里叶变换的基本原理
文章目录
- 系列文章目录
- 前言
- 一、数字图像处理
- 二、图像数字化与显示(数字图像的基本获取过程)
- 2.1 采样
- 2.2 量化
- 2.2.1 量化方法--标量量化
- 2.2.2 矢量量化
- 总结
前言
慕课视频地址:https://www.icourse163.org/course/HHU-1471232170 from=searchPage&outVendor=zw_mooc_pcssjg_
注重讲解图像变换以及分解过程中物理含义
理解数学模型如何描述和解决实际应用问题
培养对复杂工程问题的分析解决的能力
一、数字图像处理
包括图像增强,图像压缩,图像重建,图像融合,图像分类,目标识别。
图像增强技术
图像增强技术的应用范围很广,最常见的就是手机美颜功能,可以平滑掉面部的瑕疵和纹理,也可以实现眼睛鼻子嘴唇等部位的特征增强。图像增强技术在医学影像领域也很重要,例如x光片,和CT影像,对图像全图或感兴趣区域进行局部对比度拉伸,方便医生做出诊断。
图像压缩技术
图像压缩技术是研究如何对数字图像进行压缩和编码,降低图像传输和存储所占用的带宽和存储资源的技术。我们平时的照片通常是jpg格式文件,视频通常是mp4格式文件。这些文件格式中都包含有图像压缩技术。
图像重建技术
图像重建技术是基于对场景有限的观测数据重建出清晰、完整的图像。例如在核磁共振成像领域,通常需要牺牲一部分观测数据换取扫描时间。成像时间长一直是核磁共振成像的一大弊力,对于CT影像快速成像可以降低患者的辐射量,它的意见就更加明显。
稀疏采样和压缩感知技术可以实现快速成像
快速成像为图像重建提出了新的挑战。
老照片复原技术,换脸技术都可以理解为图像重建技术。老照片复原技术中,由于当时传感器设备性能的局限性,很多保存的老照片存在分辨率低,噪声干扰强,图片失真等情况。可以通过图像重建技术进行修复和补充。
图像的分类识别
属于高级别的图像处理技术。在自动驾驶技术,医学AI诊断,遥感自动解译等领域都具有重要的研究价值。比如现有的CT影像已经可以实现机器的自动阅片,这就是通过图像分割,分类,识别技术实现的。
二、图像数字化与显示(数字图像的基本获取过程)
图像数字化的基本过程包括采样、量化和编码三个步骤。
采样:这一步骤涉及将二维空间上连续的图像在水平和垂直方向上等间距地分割成矩形网状结构,形成的微小方格称为像素点。例如,一幅640x480分辨率的图像由307200个像素点组成。采样频率,即一秒钟内采样的次数,反映了采样点之间的间隔大小。采样频率越高,得到的图像样本越逼真,图像质量越高,但要求的存储量也越大。采样点间隔大小的选取非常重要,它决定了采样后的图像能真实反映原图像的程度。
量化:量化是指使用多大范围的数值来表示图像采样之后的每一个点。量化的结果是图像能够容纳的颜色总数,反映了采样的质量。例如,如果使用4位存储一个点,图像只能有16种颜色;若采用16位存储一个点,则有2^16=65536种颜色。量化位数越大,图像可以拥有的颜色越多,产生的图像效果越细致,但也会占用更大的存储空间。
编码:在采样和量化之后,将像素灰度转换成离散的整数值,然后进行编码的过程。这一步骤将数字图像转换为计算机可以存储和处理的格式。
2.1 采样
数字信号是通过采样和量化两个过程,将模拟信号转化为数字信号,图像也是如此。
对于空间位置连续,辐射强度连续的场景,可以通过采样和量化两个步骤实现模拟信号的数字化
对于一个感兴趣的场景信号,我们采用一个光感受器阵列来记录该场景信息,这个过程就是采样,采样后场景中任意一个点都对应一个像素。采样可以将信号在空域维度上进行离散化。
对于同一个场景,既可以采用1024 * 1024 像素来记录也可以采用 256 * 256来记录,这就是由拍摄图像的设备来决定。当光感受器阵列上的采样孔径越小,采样间隔越小,采样得到的图像空间分辨率越高,场景中的细节越清晰。更高的像素即更小的采样间隔,这样我们获取的图像分辨率越高。
2.2 量化
量化是对采样的信号在幅度上进行离散化。
均匀量化可以将信号的变换区间,按照一定的间隔,映射为一个个离散的整数。通常为了满足计算机存储和计算的需要,量化后的数值取值会按照2的幂次方来选择。
可以用0-255这256个灰度级作为量化信号的强度,像素的灰度值就可以用8Bit二进制位来记录。
采样定理–奈奎斯特采样定理
对于一个信号FT,傅里叶变换后可以得到信号的频谱,频谱的宽度是最高频率的两倍;
使用一个采样脉冲序列对它进行采样,采样间隔和w_s称反比例关系。w_s是采样后信号频谱在频域上搬移的距离。
通常为了降低采样点的个数,减少存储的数据量和传输的带宽,我们需要加大采样间隔,这样采样得到信号的频谱搬移的距离w_s就会变小,当搬移的距离小于信号带宽时,我们采样得到的频谱就会发生镜像折叠,就无法重建信号。
如果对一个带宽时20HZ的信号进行采样,采样频率采样12HZ.
按照这个采样频率我们能测量的最高频率只有6HZ,而原始信号最高频率为10HZ.
10HZ的部分就会以6HZ为镜像,产生镜像折叠,就是2HZ.
采集到的信号频谱发生了折叠,最多采集到12HZ带宽的信号。
等间隔均匀采样时,需要满足奈奎斯特采样定理才能无失真的复原信号。
如果不采用等间隔采样,在压缩感知理论下,通过非均匀稀疏采样,就可以打破奈奎斯特采样定理,实现更低采样频率的采样。
如果我们的信号是在频域进行采样,那么采样频率是否要满足Niquest采样定理?
2.2.1 量化方法–标量量化
对每个采样点的信号强度进行量化
均匀量化和非均匀量化
均匀量化:将整个取值范围等间隔划分然后设置量化值代替落入区间的信号幅度
非均匀量化:根据信号幅度出现的频率来优化量化区间和量化值
不同量化间隔下均匀量化得到的成像效果
随着量化间隔的减少,图像中一些灰度差异较小的信息,就会被量化间隔淹没。量化级的减少导致图像中灰度变化平缓区域丢失。量化级越多,图像灰度变化刻画的越准确。
以上两种量化方法都是针对单个像素点的量化,称为标量量化。
如果要将多个像素点的灰度值组合起来一起量化,就是矢量量化。
2.2.2 矢量量化
矢量量化需要提前设计匹配的码字,码字是由同等数量的像素组成的向量;
每个码字分配一个编号。
量化过程就是寻找与输入向量距离最近的码字,用该码字的编号作为量化值进行传输和存储。
在解码时,根据包含所有码字的码书,通过编号索引进行解码。
下面这四个码字分别用两位二进制数进行编码,计算输入向量与各个码字的距离,发现输入向量与第三个码字最接近,因此量化后的编码是10.
相对于标量量化,矢量量化后数据量更小,且具有很强的抗干扰能力。
总结
等间隔均匀采样时,需要满足奈奎斯特采样定理才能无失真的复原信号。如果不采用等间隔采样,在压缩感知理论下,通过非均匀稀疏采样,就可以打破奈奎斯特采样定理,实现更低采样频率的采样。
相对于标量量化,矢量量化后数据量更小,且具有很强的抗干扰能力。
相关文章:
数字图像处理笔记(一)---- 图像数字化与显示
系列文章目录 数字图像处理学习笔记(一)---- 图像数字化与显示 数字图像处理笔记(二)---- 像素加图像统计特征 数字图像处理笔记(三) ---- 傅里叶变换的基本原理 文章目录 系列文章目录前言一、数字图像处理二、图像数…...
Unity UGUI 之 事件接口
本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是事件接口&…...
Hadoop、HDFS、MapReduce 大数据解决方案
本心、输入输出、结果 文章目录 Hadoop、HDFS、MapReduce 大数据解决方案前言HadoopHadoop 主要组件的Web UI端口和一些基本信息MapReduceMapReduce的核心思想MapReduce的工作流程MapReduce的优缺点Hadoop、HDFS、MapReduce 大数据解决方案 编辑 | 简简单单 Online zuozuo 地址…...
Dubbo SPI 之负载均衡
1. 背景介绍 在分布式系统中,负载均衡是一项核心技术,旨在将请求合理地分配到多个服务实例上,以提高系统的性能和可靠性。Dubbo 作为一个高性能的 Java RPC 框架,提供了多种负载均衡策略来满足不同的业务需求。本文将深入探讨 Du…...
规范:前后端接口规范
1、前言 随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。 然…...
Python --NumPy库基础方法(2)
NumPy Numpy(Numerical Python) 是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算,Numpy支持向…...
音视频入门基础:H.264专题(15)——FFmpeg源码中通过SPS属性获取视频帧率的实现
音视频入门基础:H.264专题系列文章: 音视频入门基础:H.264专题(1)——H.264官方文档下载 音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…...
【C++高阶】哈希之美:探索位图与布隆过滤器的应用之旅
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:模拟实现unordered 的奥秘 🌹🌹期待您的关注 🌹🌹 ❀哈希应用 Ǵ…...
文件包涵条件竞争(ctfshow82)
Web82 利用 session.upload_progress 包含文件漏洞 <!DOCTYPE html> <html> <body> <form action"https://09558c1b-9569-4abd-bf78-86c4a6cb6608.challenge.ctf.show//" method"POST" enctype"multipart/form-data"> …...
通信原理-思科实验三:无线局域网实验
实验三 无线局域网实验 一:无线局域网基础服务集 实验步骤: 进入物理工作区,导航选择 城市家园; 选择设备 AP0,并分别选择Laptop0、Laptop1放在APO范围外区域 修改笔记本的网卡,从以太网卡切换到无线网卡WPC300N 切…...
*算法训练(leetcode)第三十一天 | 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
刷题记录 *1049. 最后一块石头的重量 II*494. 目标和474. 一和零 *1049. 最后一块石头的重量 II leetcode题目地址 本题与分割等和子集类似,要达到碰撞最后的石头重量最小,则尽可能把石头等分为两堆。 时间复杂度: O ( m ∗ n ) O(m * n)…...
mac中如何使用obs推流以及使用vlc播放
使用obs推流 1.打开obs,在“来源”框中->点加号->选择媒体源->选择本地ts文件 2.obs中->点击右下角设置->点直播->服务选自定义->服务器填写你的srt服务url,比如:srt://192.168.13.211:14000?modecaller 注意ÿ…...
shopee虾皮 java后端 一面面经 整体感觉不难
面试总结:总体不难,算法题脑抽了只过了一半,面试官点出了问题说时间到了,反问一点点,感觉五五开,许愿一个二面 1.Java中的锁机制,什么是可重入锁 Java中的机制主要包括 synchronized关键字 Loc…...
HydraRPC: RPC in the CXL Era——论文阅读
ATC 2024 Paper CXL论文阅读笔记整理 问题 远程过程调用(RPC)是分布式系统中的一项基本技术,它允许函数在远程服务器上通过本地调用执行来促进网络通信,隐藏底层通信过程的复杂性简化了客户端/服务器交互[15]。RPC已成为数据中心…...
pve笔记
配置显卡直通参考 https://blog.csdn.net/m0_59148723/article/details/130923893 https://foxi.buduanwang.vip/virtualization/pve/561.html/ https://www.cnblogs.com/MAENESA/p/18005241 https://www.wangsansan.com/archives/181/ pve配置显卡直通到虚拟机后,…...
typecho仿某度响应式主题Xaink
新闻类型博客主题,简洁好看,适合资讯类、快讯类、新闻类博客建站,响应式设计,支持明亮和黑暗模式 直接下载 zip 源码->解压后移动到 Typecho 主题目录->改名为xaink->启用。 演示图: 下载链接: t…...
springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step
springcloud RocketMQ ,一个mq消息发送后,客户端是怎么一步步拿到消息去消费的?我们要从代码层面探究这个问题。 找的流程图,有待考究。 以下我们开始debug: 拉取数据的线程: PullMessageService.java 本…...
GPT-4o mini小型模型具备卓越的文本智能和多模态推理能力
GPT-4o mini 是首个应用OpenAI 指令层次结构方法的模型,这有助于增强模型抵抗越狱、提示注入和系统提示提取的能力。这使得模型的响应更加可靠,并有助于在大规模应用中更安全地使用。 GPT-4o mini 在学术基准测试中,无论是在文本智能还是多模…...
Milvus 向量数据库进阶系列丨部署形态选型
本系列文章介绍 在和社区小伙伴们交流的过程中,我们发现大家最关心的问题从来不是某个具体的功能如何使用,而是面对一个具体的实战场景时,如何选择合适的向量数据库解决方案或最优的功能组合。在 “Milvus 向量数据库进阶” 这个系列文章中&…...
【React】详解受控表单绑定
文章目录 一、受控组件的基本概念1. 什么是受控组件?2. 受控组件的优势3. 基本示例导入和初始化定义函数组件处理输入变化处理表单提交渲染表单导出组件 二、受控组件的进阶用法1. 多个输入框的处理使用多个状态变量使用一个对象管理状态 2. 处理选择框(…...
使用puma部署ruby on rails的记录
之前写过一篇《记录一下我的Ruby On Rails的systemd服务脚本》的记录,现在补上一个比较政治正确的Ruby On Rails的生产环境部署记录。使用Puma部署项目。 创建文件 /usr/lib/systemd/system/puma.service [Unit] DescriptionPuma HTTP Server DocumentationRuby O…...
如何在Linux上使用Ansible自动化部署
Ansible是一个开源的自动化工具,可以帮助开发人员和系统管理员对大规模的服务器进行自动化部署和管理。它使用SSH协议来在远程服务器上执行任务,并通过模块化的方式提供了丰富的功能,可以轻松地管理服务器配置、软件部署和应用程序运行。 在…...
scrapy爬取城市天气数据
scrapy爬取城市天气数据 一、创建scrapy项目二、修改settings,设置UA,开启管道三、编写爬虫文件四、编写items.py五、在weather.py中导入WeatherSpiderItem类六、管道中存入数据,保存至csv文件七、完整代码一、创建scrapy项目 先来看一下爬取的字段情况: 本次爬取城市天…...
一天搞定React(5)——ReactRouter(下)【已完结】
Hello!大家好,今天带来的是React前端JS库的学习,课程来自黑马的往期课程,具体连接地址我也没有找到,大家可以广搜巡查一下,但是总体来说,这套课程教学质量非常高,每个知识点都有一个…...
微信小程序之计算器
在日常生活中,计算器是人们广泛使用的工具,可以帮助我们快速且方便地计算金额、成本、利润等。下面将会讲解如何开发一个“计算器”微信小程序。 一、开发思路 1、界面和功能 “计算器”微信小程序的页面效果如图所示 在计算器中可以进行整数和小数的…...
【logstash】logstash使用多个子配置文件
这里有个误区在pipelines.yml中写conf.d/*,实测会有问题,不同的filter处理逻辑会复用。 现在有两个从kafka采集日志的配置文件:from_kafka1.conf,from_kafka2.conf 修改pipelines.yml配置文件 config/pipelines.yml- pipeline.i…...
暴风骑士S9电摩上市,定义青少年骑行安全新标准
暴风骑士,作为全球高端儿童电动车的开创品牌,以其卓越的技术实力和创新精神,不断推动行业发展。如今,暴风骑士再次突破自我,推出了全新力作——S9青少年电摩。这款全新上市的青少年专属电摩,以其领先的安全…...
spring security如何适配盐存在数据库中的密码
19.token认证过滤器代码实现_哔哩哔哩_bilibili19.token认证过滤器代码实现是SpringSecurity框架教程-Spring SecurityJWT实现项目级前端分离认证授权-挑战黑马&尚硅谷的第20集视频,该合集共计41集,视频收藏或关注UP主,及时了解更多相关视…...
Go语言编程 学习笔记整理 第2章 顺序编程 后半部分
1.流程控制 1.1 条件语句 if a < 5 { return 0 } else { return 1 } 注意:在有返回值的函数中,不允许将“最终的”return语句包含在if...else...结构中, 否则会编译失败!!! func example(x int) i…...
美团后端二面
美团后端二面 ……………………………… 两道场景 一道 数字转中文读法(1000-》一千) 0八股0自我介绍 反问 “您觉得我能过吗?” “这个需要横行对比之后才能有结果” ……………………………… 什么时候到岗 场景题 1 假设我有一个…...
学懂C语言(十六):对C语言作用域规则 局部变量、全局变量的认识
一、C 作用域规则 任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。C 语言中有三个地方可以声明变量: 局部变量:在函数或块内部全局变量:在所有函数外部形式参数:在函数…...
关于TS(typescript)的理论知识
关于TS(typescript)的理论知识 TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的一个超集,添加了可选的静态类型和基于类的面向对象编程。TypeScript 最终会被编译成纯 JavaScript 代码,以便在任何支持 …...
【OpenCV C++20 学习笔记】基本图像容器——Mat
【OpenCV C20 学习笔记】基本图像容器——Mat 概述Mat内部结构引用计数机制颜色数据格式 显式创建Mat对象使用cv::Mat::Mat构造函数矩阵的数据项 使用数组进行初始化的构造函数cv::Mat::create函数MATLAB风格的初始化小型矩阵通过复制创建Mat对象 Mat对象的输出其他普通数据项的…...
枚举单例是怎么保证线程安全和防止反射的
枚举单例在Java中具有天然的线程安全性和防止反射攻击的特性,这是由于Java对枚举类型的特殊处理方式。以下是详细解释: 1. 线程安全性 Java 枚举类的特性 类加载机制:枚举类型在Java中是特殊的类,由JVM保证其线程安全性。枚举类…...
传知代码-智慧医疗:纹理特征VS卷积特征(论文复现)
代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 论文链接:https://www.sciencedirect.com/science/article/abs/pii/S1076633223003537?__cf_chl_rt_tkJ9Aipfxyk5d.leu48P20ePFNd4B2aunaSmzVpXCg.7g-1721292386-0.0.1.1-6249 论文概述 今天我们把视线…...
数据结构中的八大金刚--------八大排序算法
目录 引言 一:InsertSort(直接插入排序) 二:ShellSort(希尔排序) 三:BubbleSort(冒泡排序) 四: HeapSort(堆排序) 五:SelectSort(直接选择排序) 六:QuickSort(快速排序) 1.Hoare版本 2.前后指针版本 …...
ACC2.【C语言】经验积累 栈区简单剖析
int main() {int i0;int arr[10]{1,2,3,4,5,6,7,8,9,10};for (i0;i<12;i){arr[i]0;printf("A");}return 0; } 执行后无限打印A 在VS2022,X86,Debug环境下,用监视后,原因是arr[12]的地址与i的地址重合(数组越界&…...
c# 索引器
索引器(Indexer)允许你像访问数组一样,通过索引访问对象的属性或数据。索引器的主要用途是在对象内部封装复杂的数据结构,使得数据访问更加直观。下面是关于 C# 索引器的详细解释及示例: 基本语法 索引器的语法类似于…...
低代码如何加速数字化转型
数字化转型,正日益决定企业成功的关键。这里的一个关键因素是它可以以更快的速度和质量来实施技术计划。在当今瞬息万变的商业环境中,战略性地采用低代码平台对于旨在加快上市时间、增强业务敏捷性和促进跨团队无缝协作的首席技术官来说至关重要。日益增…...
Pytest进阶之fixture的使用(超详细)
目录 Fixture定义 Fixture使用方式 作为参数使用 Fixture间相互调用(作为参数调用) 作为conftest.py文件传入 Fixture作用范围Scope function class module session Fixture中params和ids Fixture中autouse Fixture中Name 总结 pytest fixture 是一种用来管理测试…...
GitHub 详解教程
1. 引言 GitHub 是一个用于版本控制和协作的代码托管平台,基于 Git 构建。它提供了强大的功能,使开发者可以轻松管理代码、追踪问题、进行代码审查和协作开发。 2. Git 与 GitHub 的区别 Git 是一个分布式版本控制系统,用于跟踪文件的更改…...
边界网关IPSEC VPN实验
拓扑: 实验要求:通过IPSEC VPN能够使PC2通过网络访问PC3 将整个路线分为三段 IPSEC配置在FW1和FW2上,在FW1与FW2之间建立隧道,能够传递IKE(UDP500)和ESP数据包,然后在FW1与PC2之间能够流通数据…...
力扣高频SQL 50题(基础版)第六题
文章目录 1378. 使用唯一标识码替换员工ID题目说明思路分析实现过程结果截图总结 1378. 使用唯一标识码替换员工ID 题目说明 Employees 表: ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | ------…...
在一个事物方法中开启新事物,完成对数据库的修改
在Java中,使用Transactional注解来管理事务非常常见。但是,在一个已经标记为Transactional的方法内部调用另一个也标记了Transactional的方法时,如果不正确处理,可能会导致一些意料之外的行为。这是因为默认情况下,Spr…...
ffmpeg的vignetting filter
vignetting filter是暗角过滤器 vignetting filter在官网是vignette。但是我查了一下,vignetting应该是正确的表达,vignette是什么鬼? 官网参数 官书参数 参数解释 angle,x0,y0可以使用表达式。 angle:不知道什么意思…...
商场导航系统:从电子地图到AR导航,提升顾客体验与运营效率的智能解决方案
商场是集娱乐、休闲、社交于一体的综合性消费空间,随着商场规模的不断扩大和布局的日益复杂,顾客在享受丰富选择的同时,也面临着寻路难、店铺曝光率低以及商场管理效率低下等挑战。商场导航系统作为提升购物体验的关键因素,其重要…...
vue3中父子组件的双向绑定defineModel详细使用方法
文章目录 一、defineProps() 和 defineEmits()二、defineModel() 的双向绑定2.1、基础示例2.2、定义类型2.3、声明prop名称2.4、其他声明2.5、绑定多个值2.6、修饰符和转换器2.7、修饰符串联 一、defineProps() 和 defineEmits() 组件之间通讯,通过 props 和 emits…...
耳机、音响UWB传输数据模组,飞睿智能低延迟、高速率超宽带uwb模块技术音频应用
在数字化浪潮席卷全球的今天,无线通信技术日新月异,其中超宽带(Ultra-Wideband,简称UWB)技术以其独特的优势,正逐步成为无线传输领域的新星。本文将深入探讨飞睿智能UWB传输数据模组在音频应用中的创新应用…...
webpack配置报错:Invalid options object.
前言: 今天在使用webpack进行项目配置的时候,运行之后终端报错:Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options has an unknown property inline. Thes…...
Java 并发编程:一文了解 Java 内存模型(处理器优化、指令重排序与内存屏障的深层解析)
大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 022 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…...