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

news2024/10/29 0:01:46

 在之前的学习中我已经知道了图像的分类:物理图像和虚拟图像。
《数字图像处理基础》学习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 = 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

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

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

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

相关文章

SSA-CNN-LSTM-MATT多头注意力机制多特征分类预测

SSA-CNN-LSTM-MATT多头注意力机制多特征分类预测 目录 SSA-CNN-LSTM-MATT多头注意力机制多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现SSA-CNN-LSTM-MATT麻雀算法优化卷积神经网络-长短期记忆神经网络融合多头注意力机制多特征分类预测&…

ComfyUI - 视觉基础任务 检测(Detection) 和 分割(Segmentation) 的 Impact-Pack 流程 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/141140498 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 在 Com…

【音视频 | ADPCM】音频编码ADPCM详细介绍及例子

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

租房市场新动力:基于Spring Boot的管理系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

深入理解数据链路层:以太网帧格式、MAC地址、交换机、MTU及ARP协议详解与ARP欺骗探究

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 数据链路层 认识以太网以太网帧格式 认识 MAC 地址交换机与碰撞域的划分认识 MTUMTU 对 IP 协议的影响MTU 对 UDP 协议的影响 MTU 对…

SolidWorks 导出 URDF 中的惯性矩阵错误问题

系列文章目录 前言 一、 dsubhasish09于2021年5月23日发表评论 在装配体中定义由多个零件组成的 link 时,单个零件质心处各自的惯性值(在使用相似性变换使其与关节坐标系平行后)会直接相加,从而得到净惯性矩阵,而不是…

使用linuxdeployqt打包Qt程序问题及解决方法

dpkg: 处理归档 libmysqlclient18_5.6.25-0ubuntu1_amd64.deb (--install)时出错: 预依赖问题 - 将不安装libmysqlclient18:amd64 在处理时有错误发生: libmysqlclient18_5.6.25-0ubuntu1_amd64.deb下载libmysqlclient18/5.6.25 libmysqlclient18/5.6.25-0ubuntu1 安装 s…

如何把图片转换成pdf?这几种转换方法看了就能学会!

如何把图片转换成pdf?在当今这个高度数字化的世界里,图片文件和PDF文件无疑是我们日常生活中最常接触到的两种文件格式,它们各自拥有独特的特性和功能,为我们的工作与生活带来了诸多便利,图片文件,以其卓越…

Android Activity SingleTop启动模式使用场景

通知栏 当用户点击通知栏中的通知时,可以使用单顶启动模式来打开对应的活动,并确保只有一个实例存在。 简单集成极光推送 创建应用 获取appkey参数 切换到极光工作台 极光sdk集成 Project 根目录的主 gradle 配置 Module 的 gradle 配置 Jpush依赖配置 配置推送必须…

乐维网管平台(一):如何精准掌控 IP 管理

业网络已成为支撑业务运转的关键基础设施,而在企业网络管理中,IP 管理至关重要,它就像是网络秩序的守护者,确保网络的高效运行、安全可靠。 一、为什么企业要进行 IP 管理 1. 优化资源分配 IP 地址作为网络中的重要资源&#xf…

c++数据结构算法复习基础--7--线性表-队列-常用操作接口-复杂度分析

1、队列 特点:先进先出,后进后出 环形队列(依赖数组实现,单必须实现环形) 链式队列(依赖链表实现) 2、环形队列 理论 常规数组思想随着队列的不断使用,会出现越界 所以要将其…

拍拍贷鸿蒙版H5容器之路

背景介绍 业务背景 2024年1月18日华为宣布:HarmonyOS NEXT 将不再支持 Android系统,基于以上背景及国内信贷业务现状,公司决定启动借款App鸿蒙化项目。 下图是2024年6月华为HDC大会上,华为宣布 HarmonyOS NEXT 将面向开发者和先…

Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置

文章目录 构建拓扑图配置IP地址配置路由器命令说明测试效果 构建拓扑图 1,添加2811路由器。 2,添加pc0。 3,使用交叉线连接路由器和pc(注意线路端口)。 4,使用配置线连接路由器和pc(注意线路…

IT监控对接华三CAS云管平台监控方案

概述 CAS云管平台是新华三集团自主研发的虚拟化和云计算管理平台,它主要面向数据中心,提供虚拟化和云计算管理,在教育行业、网络安全领域、高性能计算业务、企业IT部门等领域被广泛应用。在信创国产化背景下,以CAS、Fusion等为代…

rtp协议:rtcp包格式和传输间隔

RTP Control Protocol -- RTCP-rtp控制协议 实时传输控制协议(RTCP)基于对会话中的所有参与者定期传输控制包,使用与数据包相同的分发机制。底层协议必须提供数据包和控制包的多路复用,例如使用UDP时使用不同的端口号。RTCP执行四…

LLMs 入门实战系列大全:LLMs应用、领域大模型介绍、大模型常见面经汇总

1. 常见大模型介绍 1.1 ChatGLM-6B 系列 ChatGLM2-6B [【ChatGLM2-6B 入门】清华大学开源中文版 ChatGLM-6B 模型学习与实战] 更强大的性能:基于 ChatGLM 初代模型的开发经验,我们全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目…

sa-token 所有的异常都是未登录异常的问题

在使用satoken的时候,有这么一个问题,就是不管我是什么错误,都会弹出未登录异常,起初的时候我以为satoken的拦截器会拦截所有的异常,但是今后测试才发现忽略了一点,也是最重要最容易忽视的一点。 如果我现在…

动态规划 —— 路径问题-不同路径

1. 不同路径 题目链接: 62. 不同路径 - 力扣(LeetCode)https://leetcode.cn/problems/unique-paths/description/ 2. 算法原理 1. 状态表示:以莫一个位置为结尾 dp[i]表示:以[i,j]位置为结尾时&#xff0…

新手入门c++(8)

到时候了,是时候给你们讲一下其他的定义形式与格式化输入输出了。 1.长整型变量 长整型变量分为两种: ①long类型 在计算机编程中,long 类型是一个整型数据类型,用于存储较大的整数。它的大小和范围取决于操作系统和编译器的实…

存储引用服务(OSS)Minio 环境搭建

下载Docker desktop 最好进行相关的设置,比如说进行登陆docker账号等等 推荐使用 docker-engine源【目前还能使用下载】 https://ccr.ccs.tencentyun.com 使用docker拉取对应的minio镜像 netstat -aon|findstr "8081" 注意:dockerhub有时…