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

NEFU数字图像处理(1)绪论

一、简介

1.1什么是数字图像

图像是三维场景在二维平面上的影像。根据其存储方式和表现形式,可以将图像分为模拟图像和数字图像两大类

图像处理方法:光学方法、电子学方法

  • 模拟图像:连续的图像
  • 数字图像:通过对时间上和数值上连续的模拟图像采用数字化(离散化)技术所得到的
  • 数字图像:以数字格式存储图像数据,便于计算机进行处理,这种图像称为数字图像。

数字图像处理主要有两种方法:空域法和变换域法

 1.2数字图像的表示

一幅数字图像是通过有限个离散点来表示的,其中每个点被称为图像元素(也称像素pixel),这些像素是构成数字图像的最小组成单元·
由像素组成的二维排列可以用矩阵表示,因此,一幅大小为MxN的数字图像可表示为一个大小MxN的矩阵:

数字图像是由连续的模拟图像采样和量化而得到的。组成数字图像的基本单位是像素,所以数字图像是像素的集合
像素为元素的矩阵,像素的值代表图像在该位置的亮度,称为图像的灰度值
因此:数字图像像素具有整数坐标和整数灰度值两个方面的含义。

1.3什么是数字图像处理

利用计算机处理数字图像的过程称为数字图像处理,也称计算机图像处理,它包括了对数字图像进行增强、分割、复原、特征提取、几何变换压缩编码等一系列的理论、方法和技术。

数字图像处理的本质特征:
对输入图像进行某种操作或变换得到输出图像,即图像到图像的过程。

1.4相关工具包

IPT-Image Processing Toolbox以数字图像处理理论为基础,用MATLAB语言构造出一系列的用于图像数据显示与处理的M函数

1.5内容概述

图像增强:

作用1:用于改善图像的视感质量(视觉效果)
作用2:用于突出图像中的某些重要特征,以便于人眼观察或计算机检测,即增强感兴趣特征的可观察性或可检测性

图像分割:

一幅图像中通常包含多个对象,为了识别和理解图像中的不同对象,需要按照一定规则将图像分割成若干个区域,每个区域代表被成像的一个物体(或部分)
图像分割就是把一幅图像划分成若干区域的过程。

图像几何变换:

可用于改变图像的形状、大小和位置等几何特性。比如图像的平移、镜像、旋转、比例缩放、错切等。

图像压缩编码:

图像压缩的目的是在保证图像质量的前提下减少图像的数据量,以便于图像的存储和传输。
图像编码主要是利用图像信号的统计特性以及人类视觉的生理学和心理学特性,对图像信号进行高效编码,从而压缩图像数据。

图像复原:

当造成图像退化(图像品质下降)的原因已知时,通过图像复原技术对图像进行校正,恢复图像的本来面目·

图像特征提取:

1.6数字图像处理系统的基本组成

数字图像处理系统有三部分组成:图像采集系统、计算机和图像输出设备

 1.7应用领域

二、 图像处理基础

2.1图像获取

将一幅图像从其原来的形式转换为数字形式的处理过程,包括“扫描”、“采样”与“量化”三个步
骤,但通常将“扫描”合并到“采样”阶段,合并为两个过程


数字图像是由连续的模拟图像采样和量化而得到的。组成数字图像的基本单位是像素,所以数字图像是像素的集合。

扫描

 将一个数学虚拟网格覆盖在一幅图像上,图像的平面空间被离散化成一个个的有序的格子,然后按照格子的排列顺序依次读取图像的信息,此读取过程称为“扫描”
在扫描过程中被读取的小块图像称为图像元素,简称像素,它的描述包括空间坐标以及图像信息两个部分。

 采样

在一幅图像的每个像素位置上测量灰度值。连续图像在二维空间上的离散化称为采样,即用
空间上部分点的灰度来代表图像,这些点称为采样点
注意:
图像数字化时必须遵守采样定理,才能保证图像可恢复。

图像采样方法有均匀采样和非均匀采样两种方法

空间分辨率: 空间分辨率=M*N

采样间隔的选取决定了采样后图像的质量,即忠实于原始图像的程度

空间分辨率是图像中可分辨的最小细节,主要由采样间隔值决定

对于同一幅图像,若垂直和水平方向上采样间隔越小,则M和N越大,采样图像的空间分辨率越高,失真度越小


通常,图像中的细节越多,采样间隔应越小

灰度分辨率是指灰度图像中可以表示的不同灰度级别的数量。它决定了图像中可以区分的灰度细节的程度。

灰度图像的灰度分辨率通常由每个像素的位数来决定。例如,8位灰度图像可以表示256个不同的灰度级别,范围从0到255。因此,它具有8位的灰度分辨率。

量化

连续图像在灰度上的离散化称为图像灰度量化即把采样后得到的各采样点的灰度从连续量转换为离散量(即离散的整数值)
量化后的灰度用整数值表示

图像量化方法有标量量化、向量量化两种方法。(矢量量化)

2.2图像数字化

将连续形式的模拟图像进行离散化处理,转换为数字图像,这个过程称为图像数字化·

 对于一幅图像,当采样点数M×N一定时,不同的量化级数L对图像质量有影响:

  • 量化级数越多,图像质量越好
  • 当量化级数减少时,图像中的假轮廓现象逐渐明显。
  • 量化级数最小的极端情况(L=2):二值图像。

 例题

 2.3数字图像的基本类型

数字图像处理中四种基本的数字图像类型:

  • 灰度图像
  • 二值图像
  • 索引图像
  • 真彩色图像(也称RGB图像

 灰度图像

灰度图像是指包含灰度级的图像,这里的灰度即亮度


灰度图像只有灰度而没有彩色,图像中的每个像素都是从黑到白之间的L级灰度中的一种。

灰度图像通常由一个unit8、unit16或双精度类型的数组来描述,其实质是一个数据矩阵。该矩阵中的数据均代表了在一定范围内的灰度级,每一个元素对应于图像的一个像素点,通常0代表黑色,1、255或65535(针对不同的存储类型)代表白色。

 二值图像

二值图像是一种特殊的灰度图像。图像中的像素只有两种灰度一一黑和白

 索引图像

1、调色板

  • ·调色板是用于定义不同种颜色的一个颜色表,也称颜色映射(colormap)其中每种颜色都使用红(R)、绿(G)、蓝(B)三种分量来表示。
  • 调色板中一行定义一种颜色,最多只能定义256种颜色。
  • 每行中的三列元素分别表示R、G、B三种颜色分量的深浅程度。

2、索引图像

  • ·索引图像是一种带有调色板的图像。
  • ·最多只能显示256种颜色。
  • ·索引图像可由两个矩阵来表示:

RGB图像

  • RGB图像不需要使用调色板,即它的颜色是非映射的
  • 每个像素的颜色由红(R)、绿(G)、蓝(B)三个分量共同决定,每个分量都用8bt表示,即每个像素的颜色用3个字节表示。
  • 可以产生28×28×28=224≈1677万种不同颜色。因此,又称24位真彩色图像。

 2.4图像格式

图像格式与图像类型不同,它是指存储图像时所采用的文件格式,即存储格式,是图像文件的数
据结构·

BMP图像 

图像为真彩色24位或更多,没有调色板,图像数据直接是每一个像素的颜色值B、G、R。
位图的存储顺序:从左到右、从下到上;即图像数据中的第一个数是图像的最左下角的像素值。

gif图像

 JPEP图像

TIFF图像

 

PNG图像

 

 2.5颜色模型

颜色有三个基本属性:色调、饱和度、亮度

色调(Hue)指的是颜色的种类或类型,如红色、绿色、蓝色等。色调是通过颜色在色轮上的位置来表示的,色轮上的不同角度对应不同的色调。色调的取值范围通常是0到360度,其中0度对应红色,120度对应绿色,240度对应蓝色。

饱和度(Saturation)指的是颜色的纯度或鲜艳程度。饱和度越高,颜色越鲜艳,越接近于纯色;饱和度越低,颜色越灰暗,越接近于灰色。饱和度的取值范围通常是0到100%,其中0%表示灰度,100%表示最高饱和度。

亮度(Value)指的是颜色的明暗程度。较高的亮度值表示较亮的颜色,较低的亮度值表示较暗的颜色。亮度的取值范围通常是0到100%,其中0%表示黑色,100%表示白色。

RGB模型

 

正常每个分量的量化范围为:[0,255]
若都进行标准化(即归一化)处理:[0,1]

 HSV模型

 

相关文章:

NEFU数字图像处理(1)绪论

一、简介 1.1什么是数字图像 图像是三维场景在二维平面上的影像。根据其存储方式和表现形式,可以将图像分为模拟图像和数字图像两大类 图像处理方法:光学方法、电子学方法 模拟图像:连续的图像数字图像:通过对时间上和数值上连续…...

数值分析学习笔记——绪论【华科B站教程版本】

绪论 数值分析概念 用计算机求解数学问题的数值方法和理论 三大科学研究方法 实验理论分析科学计算(用计算机去辅助研究):数值方法计算机 解析解和近似解 解析解:使用数学方法求出或推导出的结果,往往可以求解出…...

节日灯饰灯串灯出口欧洲CE认证办理

灯串(灯带),这个产品的形状就象一根带子一样,再加上产品的主要原件就是LED,因此叫做灯串或者灯带。2022年,我国灯具及相关配件产品出口总额超过460亿美元。其中北美是最大的出口市场。其次是欧洲市场&#…...

一线大厂Redis高并发缓存架构实战与性能优化

文章目录 一、redis主从架构锁失效问题分析二、从CAP角度剖析redis与zookeeper分布式锁区别三、redlock分布式锁原理与存在的问题分析四、大促场景如何将分布式锁性能提升100倍五、高并发redis架构代码实战 一、redis主从架构锁失效问题分析 我们都知道,一般的互联…...

PHP 行事准则:allow_url_fopen 与 allow_url_include

文章目录 参考环境allow_url_fopenallow_url_fopen 配置项操作远程文件file 协议 allow_url_includeallow_url_include 配置项 allow_url_include 与 allow_url_fopen区别联系默认配置配置项关闭所导致异常运行时配置ini_set()限制 参考 项目描述搜索引擎Bing、GoogleAI 大模型…...

Replicate + ngrok云端大模型API实现教程

ChatGPT 的诞生预示着人工智能和机器学习领域的新时代。 日新月异,Hugging Face 不断推出突破性的语言模型,重新定义人机交互的界限。欢迎来到未来! 当然,有很多选项可以对它们进行推断。在本文中,我将告诉大家如何使…...

蓝桥等考Python组别十四级005

蓝桥等考Python组别十四级 第一部分:选择题 1、Python L14 (15分) 运行下面程序,输出的结果是( )。 d = {1 : one, 2 : two, 3 : three, 4 : four} print(d[2]) onetwothreefour正确答案:B...

Linux 本地 Docker Registry本地镜像仓库远程连接

Linux 本地 Docker Registry本地镜像仓库远程连接 Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)镜像,不受本地局域网限制! 1. 部署Docker Registry 使用官网安装方式,docker命令一键启动,该命令启动一个regis…...

二十九、高级IO与多路转接之epollreactor(收官!)

文章目录 一、Poll(一)定义(二)实现原理(三)优点(四)缺点 二、I/O多路转接之epoll(一)从网卡接收数据说起(二)如何知道接收了数据&…...

vite dev开发模式下支持外部模块引用

web工程中经常需要使用外部的cdn资源&#xff0c;比如lodash、three.js等&#xff1a; <script type"importmap">{"imports": {"lodash": "https://unpkg.com/lodash-es4.17.21/lodash.js"}} </script> vite build通过r…...

Chrome出现STATUS_STACK_BUFFER_OVERRUN解决方法之一

Chrome出现STATUS_STACK_BUFFER_OVERRUN错误代码&#xff0c;setting都无法打开 解决方法1&#xff1a;兼容性设置为win7 解决方法2&#xff1a; 1&#xff0c;开始菜单搜索Exploit Protection 2&#xff0c;添加程序进行自定义&#xff0c;点号&#xff0c;按程序名称添加 …...

【JavaEE】JavaScript

JavaScript 文章目录 JavaScript组成书写方式行内式内嵌式外部式&#xff08;推荐写法&#xff09; 输入输出变量创建动态类型基本数据类型数字类型特殊数字值 String转义字符求长度字符串拼接布尔类型undefined未定义数据类型null 运算符条件语句if语句三元表达式switch 循环语…...

剑指offer——JZ7 重建二叉树 解题思路与具体代码【C++】

一、题目描述与要求 重建二叉树_牛客题霸_牛客网 (nowcoder.com) 题目描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}&#xff0c;则重建出…...

图片批量编辑器,轻松拼接多张图片,创意无限!

你是否曾经遇到这样的问题&#xff1a;需要将多张图片拼接成一张完整的画面&#xff0c;却缺乏专业的图片编辑技能&#xff1f;现在&#xff0c;我们为你带来一款强大的图片批量编辑器——让你轻松实现多张图片拼接&#xff0c;创意无限&#xff01; 这款图片批量编辑器可以帮助…...

蓝桥等考Python组别十四级008

第一部分:选择题 1、Python L14 (15分) 运行下面程序,输出的结果是( )。 d = {1: "red", 2: "yellow", 3: "blue", 4: "green"} print(d[2]) redyellowbluegreen正确答案:B 2、Python L14 (...

【linux进程(二)】如何创建子进程?--fork函数深度剖析

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; 进程状态管理 1. 前言2. 查看…...

数字IC前端学习笔记:数字乘法器的优化设计(华莱士树乘法器)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 进位保留乘法器依旧保留着阵列的排列规则&#xff0c;只是进位是沿斜下角&#xff0c;如果能使用树形结构来规划这些进位保留加法器&#xff0c;就能获得更短的关键…...

CountDownLatch 批量更改使用,

代码 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.first.pet.platform.entity.PlatformAddress; import com.first.pet.platform.mapper.PlatformAddressMapper; …...

910数据结构(2019年真题)

算法设计题 问题1 有一种排序算法叫做计数排序。这种排序算法对一个待排序的表(采用顺序存储)进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个元素,扫描待排序的表一趟,统计表中有多少个元素的关…...

推荐系统实践 笔记

诸神缄默不语-个人CSDN博文目录 这是我2020年写的笔记&#xff0c;我从印象笔记搬过来公开。 如果那年还在读本科的同学也许有印象&#xff0c;那年美赛出了道根据电商评论给商户提建议的题。其实这件事跟推荐系统关系不大&#xff0c;但我们当时病急乱投医&#xff0c;我打开…...

【JavaEE】JUC(Java.util.concurrent)常见类

文章目录 前言ReentrantLock原子类线程池信号量CountDownLatch相关面试题 前言 经过前面文章的学习我们大致了解了如何实现多线程编程和解决多线程编程中遇到的线程不安全问题&#xff0c;java.util.concurrent 是我们多线程编程的一个常用包&#xff0c;那么今天我将为大家分…...

清除浮动的方法

为什么需要清除浮动&#xff1f; 父级的盒子不能把height定死这样&#xff0c;浮动子类就没有了&#xff08;行内块元素的特点&#xff09;&#xff0c;父类高度为零。故引用清除浮动 1、父级没有高度 2、子盒子浮动了 3、影响下面的布局了&#xff0c;我们就应该清除浮动了…...

LangChain 摘要 和问答示例

在Azure上的OpenAI端点 注意 OpenAI key 可以用微软 用例【1. 嵌入 &#xff0c;2. 问答】 1. import os import openai from langchain.embeddings import OpenAIEmbeddings os.environ["OPENAI_API_KEY"] "****" # Azure 的密钥 os.environ["OP…...

(32)测距仪(声纳、激光雷达、深度摄影机)

文章目录 前言 32.1 单向测距仪 32.2 全向性近距离测距仪 32.3 基于视觉的传感器 前言 旋翼飞机/固定翼/无人车支持多种不同的测距仪&#xff0c;包括激光雷达&#xff08;使用激光或红外线光束进行距离测量&#xff09;、360 度激光雷达&#xff08;可探测多个方向的障碍…...

教你拥有一个自己的QQ机器人!0基础超详细保姆级教学!基于NoneBot2 Windows端搭建QQ机器人

0.序言 原文链接&#xff1a;教你本地化部署一个QQ机器人本教程主要面向Windows系统用户教程从0开始全程详细指导&#xff0c;0基础萌新请放心食用&#x1f355;如果你遇到了问题&#xff0c;请仔细检查是否哪一步有遗漏。如果你确定自己的操作没问题&#xff0c;可以到原文链…...

智能银行卡明细筛选与统计,轻松掌握账户总花销!

作为现代生活的重要组成部分&#xff0c;银行卡成为了我们日常消费和收入的主要途径。但是&#xff0c;当我们需要了解自己的银行卡账户的总花销时&#xff0c;繁琐的明细筛选和统计工作常常让人头疼。现在&#xff0c;让我们向您推荐一款智能银行卡明细筛选与统计工具&#xf…...

SRT服务器SLS

目前互联网上的视频直播有两种&#xff0c;一种是基于RTMP协议的直播&#xff0c;这种直播方式上行推流使用RTMP协议&#xff0c;下行播放使用RTMP&#xff0c;HTTPFLV或者HLS&#xff0c;直播延时一般大于3秒&#xff0c;广泛应用秀场、游戏、赛事和事件直播&#xff0c;满足了…...

Linux 安装 Android SDK

先安装jdk RUN apt-get install default-jdk 参考&#xff1a;http://t.zoukankan.com/braveym-p-6143356.html mkdir -p $HOME/install/android-sdk wget https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip unzip commandlinetools-linu…...

【QT开发笔记-基础篇】| 第四章 事件QEvent | 4.4 鼠标按下、移动、释放事件

本章要实现的整体效果如下&#xff1a; QEvent::MouseButtonPress ​ 鼠标按下时&#xff0c;触发该事件&#xff0c;它对应的子类是 QMouseEvent QEvent::MouseMove ​ 鼠标移动时&#xff0c;触发该事件&#xff0c;它对应的子类是 QMouseEvent QEvent::MouseButtonRel…...

vue3父子通信+ref,toRef,toRefs使用实例

ref是什么? 生成值类型的响应式数据可用于模板和reactive通过.value修改值可以获取DOM元素 <p ref”elemRef”>{{nameRef}} -- {{state.name}}</p> // 获取dom元素 onMounted(()>{ console.log(elemRef.value); }); toRef是什么? 针对一个响应式对象(rea…...

北京网站设计招聘/视频号下载器手机版

一、序列 序列是用于生成唯一、连续序号的对象 序列可以是升序的&#xff08;步长正&#xff09;&#xff0c;也可以是降序的&#xff08;步长负&#xff09; 使用CREATE SEQUENCE语句创建序列 语法&#xff1a; ① 创建序列需要有创建序列的权限&#xff1a; grant crea…...

wordpress添加下载链接/经典软文案例100例简短

Java 中操作数组只需要四个步骤&#xff1a;1、 声明数组语法&#xff1a; 数据类型[ ] 数组名&#xff1b;或者 数据类型 数组名[ ]&#xff1b;其中&#xff0c;数组名可以是任意合法的变量名&#xff0c;如&#xff1a;2、 分配空间简单地说&#xff0c;就是指定数组中最…...

wordpress横排菜单/兰州seo快速优化报价

先定义一个测试类&#xff0c;由于本文将要介绍注入各种集合时如何配置&#xff0c;故这个类包含各种集合&#xff0c;类名和属性名不好取&#xff0c;没有特殊含义&#xff1a; ?123456789public class Test {private List<String> listTest;private Map<String, Ob…...

可视化在线做网站/windows优化大师怎么使用

http://ardui.co/archives/738 我是潘&#xff0c;曾经是个工程师。这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程。上一课介绍了I2C 协议连接1602 LCD。现在我们将屏幕升级到更强大的12864 OLED&#xff08;也称“1306”&#xff09;&#xff0c;让交互界面更加丰…...

厦门集美网站建设/交换友情链接吧

版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本声明http://www.chedong.com/tech/lucene.html 关键词&#xff1a;Lucene java full-text search engine Chinese word segment 内容摘要&#xff1a; Lucene是一个基于Ja…...

网站开发实践教程/百度大数据平台

1. 问题描述&#xff1a; 将数组的所有元素使用头插法插入到一个链表中&#xff0c;最终的序列与插入的序列是相反的 2. 下面是具体的C语言代码&#xff1a; #include<stdio.h> #include<malloc.h> typedef struct node{int data;node *next; }LNode; LNode *C;…...