《数字图像处理基础》学习03-图像的采样

 在之前的学习中我已经知道了图像的分类:物理图像和虚拟图像。
《数字图像处理基础》学习01-数字图像处理的相关基础知识_图像处理 数字-CSDN博客

目录

一,连续图像和离散图像的概念 

二,图像的采样

1, 不同采样频率采样同一张图像


一,连续图像和离散图像的概念 

 因为图像的表现方式不同,所以也可以分为:连续图像和离散图像。

连续图像:在二维坐标系上是连续变化的。(即该图像画面的像素点是无限稠密的)。相信学过《数字信号处理》的还记得“模拟信号”这一概念,模拟信号就是连续的,因此模拟信号也称为连续信号。对于连续的信号而言,它所包含的信号就称为模拟信号。在《数字图像处理》中,连续图像所包含的图片,图纸,或景物等原始信息都是连续的模拟信号,因此连续图像也称为模拟图像。

离散图像:使用数字阵列来表示。离散图像也称为数字图像。这种图像所包含的数字信号就是计算机所能处理的。因此,学习数字图像处理的过程中,第一个环节就是将连续图像信息转化为数字形式。即将连续图像的模拟信号转换成离散图像的数字信号,必然会经历采样量化这两个步骤。

二,图像的采样

采样:将时域或者是空域上的连续图像(或模拟图像)变换成离散采样点(或像素点)集合的一种操作。在采样的过程中需要注意的是,图像是二维信号,基本上是采取二维平面信息的分布方式来描述的。 由于采样一般是对一维信号的采样,因此,需要将二维信号转换成两次一维采样操作实现,一般先进行(xing)行(hang)采样 ,接着再对列采样。对于二维信号,是在二维空间中进行采样,通常是建立一个二维网格来采样。这种方法可以更好地保留信号的空间结构和特征。

行采样:沿垂直方向按一定间隔,从上至下的顺序以直线的方式沿水平方向扫描 。↓ ↓ ↓ ↓ ↓ ↓

通过上面的行采样能够取出各个水平行上的灰度值(灰度值又称为灰阶:表示图像中每个像素的亮度或强度)的一维扫描信息,从而获得图像每行的灰度值阵列,即一组一维的连续信号。

列采样:在行采样的基础上沿水平方向按一定间隔,从左至右的顺序以直线的方式沿垂直方向扫描

一般情况下,水平方向上的采样间隔和垂直方向的采样间隔相同。

经过了行采样和列采样之后,就会得到多个图像元素(像素),即每一个小方格,如下👇

对一副图像采样后,若每行(横向)像素有M个,每列(纵向)像素有N个,则图像分辨率(分辨率:采样所获得的图像总像素)为M\times N个像素,例如上图中的图像,每行有9个像素,每列有8个像素,因此,该图像的分辨率为9 \times 8=72个像素。如果想要得到更加清晰的图像质量,就需要提高图像采样的像素点数,同时也会需要更大的存储空间。

接下来学习评价数字图像效果的四个评价参数:

  1. 图像分辨率:采样所获得的图像总像素。图像分辨率越大,图像越清晰,同时存储量也大。
  2. 采样密度:图像上单位长度所包含的采样点数。像素间距=1/采样密度。
  3. 采样频率:一秒内采样的次数。反映了采样点之间的间隔大小,采样频率越高,丢失的信息越少,采样除的样本越细腻逼真,图像质量越好,同时也如前面提到的,所需要的存储空间也就越大。
  4. 扫描分辨率:每英寸扫描所得到的点。单位是DPI(dot per inch),一英寸≈2.5cm。扫描分辨率越大,表示被扫描的图像转化为数字化图像越逼真,扫描仪质量也越好。

对于上面的这四个评价参数来说,采样间隔的选取是一个非常重要的问题,它决定了采样后图像的质量,即和原图像相似的程度(或称忠实于原图像的程度),采样间隔的大小取决于原图像中包含的细微亮暗变化。

采样间隔可根据香浓采样定理(或称奈奎斯特采样定理)选取,只要采样频率(或称奈奎斯特率 f_{s})高于或等于原始频率的两倍(原始频率一般选取信号最高频率  f_{h},也称为奈奎斯特频率):

即满足关系:f_{s}\geq 2f_{h}
其中:

  1. Nyquist 频率 f_{h}:指的是一个信号的最高频率,它的数值是采样频率的一半。根据奈奎斯特采样定理,为了确保能够无失真地重构一个信号,采样频率必须至少是信号带宽的两倍。因此,对于一个带宽为 B 的信号,Nyquist 频率就是 B。

  2. Nyquist 率 f_{s}:通常是指数字信号处理中的一个术语,用来描述信号采样时所需的最低采样频率。具体而言,Nyquist 率通常是指两倍于最大信号频率的采样频率。

如果采样间隔满足香农定理,图像信息之间不会产生频率混叠,可以完全精确地记录图像信息,则数字图像就可以生动地再现原始场景。

1, 不同采样频率采样同一张图像

如果不知道matlab程序设计中的基础语法的请点击下面的链接并查看相关内容:
Matlab学习04-matlab程序设计中的基础语句-CSDN博客

接下来使用matlab编写代码,并使用不同的采样频率去采样同一张图像,如下👇
【ps:采样间隔越大,图像越模糊,细节信息无法辨认。例如上述的采样频率n=10和n=20】

其中:

  1.  oim存储获取到的原图像(original image),imread是打开并获取具体图像的函数,传入参数为图像在本地计算机中的地址。如果不知道文件路径的添加怎么搞,请点击下面链接并跳转到相关文章去查看:↓ ↓ ↓ ↓ ↓ ↓ ↓《数字图像处理》学习02-BMP位图文件_位图文件大小的计算公式-CSDN博客

  2. figure;创建一个用于图像(原图像或处理后的图像)显示的窗口,figure;后面可以直接加上图像显示函数,例如 imshow 函数:

    >> help imshow
    imshow - 显示图像此 MATLAB 函数 在图窗中显示灰度图像 I。imshow 使用图像数据类型的默认显示范围,并优化图窗、坐标区和图像对象属性以便显示图像。imshow(I)

    如果figure命令后面直接跟着图像显示函数,则一幅图像直接占据一整个图像窗口。如下👇

    在数字图像处理中,会有两种图像:原图像和处理后的图像。一般来说,建议将这两种图像都显示在同一个图像窗口中,方便对照并查看处理后的图像的细微变化。
    因此,推荐使用subplot函数,在同一个图像窗口中显示多幅图像,该函数可以写在figure窗口函数后面,图像显示函数的前面:

    >> help subplot
    subplot - 在平铺位置创建坐标区此 MATLAB 函数 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。subplot(m,n,p)

    例如,现在我需要将4幅图像在同一个图像窗口中显示,并且按照两行两列进行排列:

    可以看到这四幅图像的显示的代码编写都一样,唯一不同就是对应的图像序号。因此,可以考虑给个for循环:

    为了能够很好的区分每一幅图像,一般都会给图像加上标题title,即在图像显示函数的后面写上title函数:并加上图像的序号组成图像的标题,由于序号是数值型的数据,不能和字符串'图像'直接拼接,这个时候可以使用num2str函数:

    >> help num2str
    num2str - 将数字转换为字符数组此 MATLAB 函数 将数值数组转换为表示数字的字符数组。输出格式取决于原始值的量级。num2str 对使用数值为绘图添加标签和标题非常有用。s = num2str(A)

    该函数将数值型数据转换成字符串类型之后,就可以和字符串进行拼接,如下 ↓:

  3. 由于是不同的采样间隔,因此,直接定义一个数组类型变量N,存储不同的采样间隔:

    N=[1,10,20];

    如果要获取其中的元素,只需要使用数组名N (想要获取的元素序号),例如,输出10

  4. 前面也提到过,图像是二维信号,采样原图像时,原图像的行和列的都需要被采样到,并且在采样的时候一般会选择保留原图像所有的颜色通道,:

    sim= oim(1:n:end,1:n:end,:);

    其中:
    1)sim:sample image采样图像
    2)oim:原图像
    3)第一个 1:n:end ,表示对原图像的从第一个像素,采样到最后end一个像素,采样步长为 n(每隔n个像素采样一次)。
    4)第一个 1:n:end ,表示对原图像的从第一个像素,采样到最后end一个像素,采样步长为 n(每隔n个像素采样一次)。
    5)最后的冒号,表示保留原图像的所有颜色通道。
    这里举个例子,来进一步说明图像的两次一维采样。
    oim图像的像素为4x4,现在对其采样,采样步长为2,输出的采样结果sim如下:

代码👇 

oim = imread('lena_color_256.tif'); 
figure;
subplot(2,2,1);
imshow(oim);
title('原图像');
N= [1,10,20]; 
for i = 1:length(N)n = N(i);sim= oim(1:n:end,1:n:end,:);subplot(2,2,i+1);imshow(sim);title(['采样间隔n= ', num2str(n)]);
end

 如果有问题请在评论区留言或者是私信我,回复时间不超过一天。

《数字图像处理基础》学习04-图像的量化-CSDN博客 

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

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

相关文章

【MongoDB】Windows/Docker 下载安装,MongoDB Compass的基本使用、NoSQL、MongoDB的基础概念及基础用法(超详细)

文章目录 Windows下载MongoDB Compass使用NoSQL的基本概念MongoDB常用术语MongoDB与RDBMS区别MongoDB的CRUD 更多相关内容可查看 Docker安装MongoDB可查看:Docker-安装MongoDB Windows下载 官网下载地址:https://www.mongodb.com/try/download/communi…

二 MyBatis入门程序

二、MyBatis入门程序 2.1 MyBatis入门程序开发步骤 写代码前准备: 准备数据库表:汽车表t_car,字段包括: id:主键(自增)【bigint】car_num:汽车编号【varchar】brand:品牌…

网络自动化02:基于xlsx传入设备信息与所需执行备份配置命令,使用netmiko自动化登录分发

这是这个系列第二篇 本文将仅简单介绍使用xlsx导入设备信息,并使用netmiko配置 目录 环境设备信息表格式单线程代码解释代码逻辑分析函数解析 逻辑调用图逻辑说明 遇到的问题写在最后 环境 所有设备均能与我执行Python脚本的环境互通,同时均拥有独立的ip…

自动化测试类型与持续集成频率的关系

持续集成是敏捷开发的一个重要实践,可是究竟多频繁的集成才算“持续”集成? 一般来说,持续集成有3种常见的集成频率,分别是每分钟集成、每天集成和每迭代集成。项目组应当以怎样的频率进行集成,这取决于测试策略&…

制作一个简易恒流电子负载教程,实战教程,单片机程序,电路图,方案

师从:https://www.bilibili.com/read/cv4088568/ 题目是这样的: 设计和制作一台恒流(CC)工作模式的简易直流电子负载。其原理示意图如图1所示。 图1简易直流电子负载原理示意图 二、要求 1.基本要求 (1)…

日期类数据和控件管理

目录 QTime API QDate API QDateTime QDateTimeEdit API QCalendarWidget API 测试样例(参考了《Qt6开发指南》) (严肃提示:笔者认为这里的控件没有难点,本篇文章实际上是GPT辅助的代码整理和表格使用,笔者建…

PostgreSQL-06-入门篇-集合运算

文章目录 1. UNION 组合多个查询的结果集简介带有 ORDER BY 子句的 UNION设置样例表PostgreSQL UNION 示例1) 简单的 PostgreSQL UNION 示例2) PostgreSQL UNION ALL 示例3) 带 ORDER BY 子句 UNION ALL 示例 2. INTERSECT 取交集简介带 ORDER BY 子句的 INTERSECT 操作Postgre…

露营投影仪什么牌子好,中科极光A5 Pro Max开启投影新未来

伴随着现代学业工作繁重,人们的时间变得碎片化,对生活轻量化的需求也越来越高。便捷性、便利性、简易性开始成为人们的关注重点。而在简化、便捷的背后,品质是否能跟上成为了商品需要接受的考验。打造一间属于自己的私人小影厅,听…

当我们在微服务中使用API网关时,它是否会成为系统的瓶颈?这种潜在的瓶颈如何评估和解决?如何在微服务架构中保证高效请求流量?|API网关|微服务|异步处理

目录 1. API网关在微服务中的角色与重要性 2. API网关瓶颈的评估 2.1 请求延迟分析 2.2 并发请求量监控 2.3 内存和CPU使用情况 2.4 限流和熔断机制评估 2.5 日志分析 3. API网关瓶颈的解决方案 3.1 缓存机制优化 3.2 负载均衡优化 3.3 异步处理与消息队列 3.4 限流…

【python ASR】win11-从0到1使用funasr实现本地离线音频转文本

文章目录 前言一、前提条件安装环境Python 安装安装依赖,使用工业预训练模型最后安装 - torch1. 安装前查看显卡支持的最高CUDA的版本,以便下载torch 对应的版本的安装包。torch 中的CUDA版本要低于显卡最高的CUDA版本。2. 前往网站下载[Pytorch](https://pytorch.o…

mysql8.0.32升级到8.0.40

上篇8.0.32库的准备:mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc-CSDN博客 此篇测试升级到8.0.40 MySQL :: Download MySQL Community Server rootjyc:~# mysql -u root -pabcd1234 mysql: [Warning]…

从此告别图床失效:一个几乎可以代理所有图床的工具!

原项目 Github: https://github.com/webp-sh/webp_server_go 根据此项目制作的脚本工具 一键脚本: curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/webp-server.sh && chmod x webp-server.sh && ./webp-server.sh是的&…

JavaScript语法基础——变量,数据类型,运算符和程序控制语句(小白友好篇,手把手教你学会!)

一、JavaScript概述 JavaScript是一种高级编程语言,常用于网页开发和服务器端应用程序。它是一种动态类型语言,可以在浏览器中直接解释执行,而不需要编译。 脚本(Script)是一种与计算机程序相关的指令集或代码块&…

Jenkins-配置使用ssh拉取仓库代码,配置自动化构建打包(三)(云效)

文章目录 准备注意:流程: 检查之前是否配置过与代码仓库的连接生成密钥对手动在服务器中与代码仓库建立连接以生成 Known hosts file代码仓库端添加公钥Jenkins System-Publish over SSH中添加私钥Jenkins中创建项目,并使用私钥添加ssh凭据构…

镭眸ILS-F13测量型激光雷达:超远距激光雷达专家

镭眸F13是一款超远距离测量型激光雷达,专为需要在超远距离内实现移动物体轮廓数据测量的用户设计。它能够以25Hz的扫描频率,在120米内提供3厘米的扫描精度,解决了现有传感器无法满足的测量距离问题。与市场上其他产品如西克(SICK&…

windows安装deepin双系统

最近入手了一台中柏N100的小主机,本来只想当个机顶盒,没想到性能还可以,就打算用它做一些日常的办公,无聊时想着能不能再装个Linux,就去Deepin官网查看了下方法, 在此记录 另外,欢迎来我的博客…

SAP-FICO 月结流程

一、财务月结 1、资产会计-固定资产折旧计提AFAB 正式运行之前,先测试运行,没有问题就正式运行 可以看到,没有错误 因为正式系统的资产会过于庞大,一般都是后台运行资产的折旧 点击程序--后台执行 AFBP查看运行日志&#xff0c…

深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)

一、深度学习框架概述 深度学习框架在当今人工智能和机器学习领域中占据着至关重要的地位。其中,TensorFlow 由 Google 开发,自 2015 年发布以来,凭借其灵活的计算图、自动微分功能以及跨平台支持等特点,迅速成为主流深度学习框架…

JVM—类加载器、双亲委派机制

目录 什么是类加载器 类加载器的分类 Bootstrap启动类加载器 通过启动类加载器加载用户jar包 Extension扩展类加载器和Application应用程序类加载器 通过扩展类加载器加载用户jar包 双亲委派机制 打破双亲委派机制 自定义类加载器 线程上下文类加载器 Osgi框架的类加…

flask第一个应用

文章目录 安装一、编程第一步二、引入配置三、代码解析 安装 python环境安装的过程就不重复赘述了,flask安装使用命令pip install Flask即可,使用命令pip show Flask查看flask版本信息 提示:以下是本篇文章正文内容,下面案例可供…