matlab --- 图像处理基础

MATLAB图像处理

1. 数字图像处理

参考

数字图像处理(Digital Image Processing)又称为计算机图像处理,是一种将图像信号数字化利用计算进行处理的过程。随着计算机科学、电子学和光学的发展,数字图像处理已经广泛的应用到诸多领域之中。本小节主要介绍图像的概念、分类和数字图像处理的产生以及数字图像处理的研究的内容。

1.1 什么是图像

图像: 是三维世界在二维平面的表示,具体来说就是光学器件对一个物体,一个人或是一个场景等的可视化表示。图像中包含了它所表达的事物的大部分信息,据有关资料表示,人类所获得的大部分信息来源于视觉系统,也就是从图像中获得的。

1.2 图像的分类

根据图像的属性不同,图像分类方法也不同。从获取方式上图像分为拍摄类图像和绘制类图像;从颜色上图像分为彩色图像、灰度图像和黑白图像等;从图像的内容上图像分为人物图像,风景图像等;从功能上又分为流程图、结构图、心电图、电路图、设计图等。

在数字图像处理领域,将图像分为模拟图像和数字图像两种,计算机处理的信号都是数字信号,所以在计算机上处理的图像均为数字图像。根据数字图像在计算机中表示方法不同,分为二进制图像,索引图像,灰度图像,RGB图像和多帧图像;根据计算机中图像文件格式不同,图像又分为位图和矢量图。可见,图像的属性是多角度的,图像的分类也是多维的。

1.3 数字图像的产生

数字图像的产生主要有两种渠道,一种是通过数码照相机这样的设备直接拍摄得到数字图像,还有一种是通过图像采集卡、扫描仪等数字化设备,将模拟图像变为数字图像。

模拟图像转换成数字图像: 首先将图像分割成8 * 8 个各自,用数字0表示全是黑色,用数字8表示全是白色.(1~7表示黑色的多少)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8sz0hYdL-1589099849936)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510022601671.png)]

1.4 数字图像处理的研究内容

数字图像处理的研究内容主要有以下方向:

  1. 图像运算与变换

在这里插入图片描述

  1. 图像增强

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SAKFB5mC-1589099849943)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510022828717.png)]

  2. 图像复原

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LoHJFAps-1589099849948)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510022857776.png)]

  3. 图像的锐化处理及边缘检测

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wV1z0jvR-1589099849951)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510022922154.png)]

  4. 图像分割: 将感兴趣的区域分割出来,进行研究

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dh35zLMo-1589099849954)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510023000027.png)]

  5. 图像编码压缩

2. 图像的表示方法

图像的表示方法是对图像处理算法描述和利用计算机处理图形的基础。一个二维图像,在计算机中通常为一个二维数组f(x, y), 或者是一个M * N 的二维矩阵,其中, M为图像的行数, N为图像的列数。

2.1 二进制图像

二进制图像也称为二值图像,通常用一个二维数组来描述,1位表示一个像素,组成图像的像素值非0即1,没有中间值,通常0表示黑色,1表示白色。二进制图像一般用来描述文字或者图形,其优点是占用空间少,缺点是当表示人物或风景图形时只能描述轮廓。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cm0NWrhY-1589099849955)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510023615089.png)]

2.2 灰度图像

灰度图像也称为单色图像,通常也是由一个二维数组表示一副图像,8位表示一个像素,0表示黑色,255表示白色,1~254表示不同的深浅灰色。通常灰度图像显示了黑色与白色之间许多级的颜色深度,比人眼所能识别的颜色深度范围要宽的多。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZMa5ke5-1589099849956)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510023930770.png)]

2.3 RGB图像

RGB图像也称为真彩色,是一种彩色图像的表示方法,利用3个大小相同的二维数组表示一个像素,3个数组分别代表R、G、B三个分量,R表示红色,G表示绿色,B表示蓝色,通过三种基本颜色可以合成任意颜色。每个像素中的每种颜色分量占8位,每一位由[0, 255]中的任意数值表示,那么一个像素由24位表示,允许的最大值为2^24(即1677216,通常记为16M)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sOwnjPmJ-1589099849958)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510024316801.png)]

2.4 索引图像

索引图像是一种把像素值直接作为RGB调色版下标的图像。在MATLAB中,索引图像包含一个数据矩阵X和一个颜色映射(调色板)矩阵map。数据矩阵可以是8位无符号整型、16位无符号整型或双精度类型的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wmvWEthA-1589099849959)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510024550359.png)]

3. 图像的数据结构

数字图像处理常用的数据结构有矩阵,链表,拓扑结构和关系结构。图像的数据结构用于目标表示和描述。本节主要介绍矩阵、链表、拓扑结构和关系结构描述图像、图像的边界、区域和区域之间的关系。

3.1 矩阵

矩阵用于描述图像,可以表示黑白图像、灰度图像和彩色图像。矩阵中的一个元素表示图像的一个像素。矩阵描述黑白图像时,矩阵中的元素取值只有0和1两个值,因此黑白图像又叫二值图像或二进制图像。矩阵描述灰度图像时,矩阵中的元素由一个量化的灰度级描述,灰度级通常为8位,即0~255之间的整数,其中0表示黑色,255表示白色。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLEmzXbY-1589099849960)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510025057365.png)]

3.2 RGB彩色图像

RGB彩色图像是由三原色红、绿、蓝组成的,RGB图像的每个像素都是由不同灰度级的红、绿、蓝描述的,每种单色的灰度描述同灰度图像的描述方式相同。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yMR1IxcL-1589099849962)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510025355520.png)]

链码用于描述目标图像的边界,通过规定链的起始坐标和链起始点坐标的斜率用一小段线段来表示图像中的曲线。链码按照标准方向的斜率分为4向链码或8向链码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UpSr1gcP-1589099849964)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510025736776.png)]

3.3 拓扑结构

拓扑结构**用于描述图像的基本结构,通常在于形态的图像处理或是二值图像中,用于描述目标事件发生的次数,在一个目标事件中有多少孔洞,有多少联通区域等。在图像中定义相邻的概念,一个像素与它周围的像素组成一个邻域

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3jevTlPC-1589099849965)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510160609948.png)]

在图像中,目标事件上的两个像素点如果可以用一个像素序列联通。连接像素p和q的都是4-邻域像素点,则p和q称为4-连通,连接p和q的都是8邻域像素点,则p和q称为8-连通。如果一个像素集合中的所有像素点都是4连通,则这个集合称为4-组元,如果一个像素集合的所有像素都是8连通,则这个集合称为8-组元。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DdBozOZv-1589099849965)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510161026877.png)]

3.4关系结构

关系结构用于描述一组目标物体之间的相互关系,常用的描述方法为传描述和树描述。串描述是一种一维结构,当用串描述图像时,需要建立一种合适的映射关系,将二维图像降为一维形式。串描述适用于那些图像元素的链表的连接可以用来从头到尾或用其他连续形式的图像元素的描述。链码表示就是基于串描述思想描述的。

树描述:是一种能够对不连接区域进行很好描述的方法。树是一个或一个以上节点的有限集合

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wYQtJjcl-1589099849966)(C:\Users\54328\AppData\Roaming\Typora\typora-user-images\image-20200510161738400.png)]

4. 计算机中图像文件格式

数字图像在计算机中存储的格式有多种多样,每一个文件格式都包括一个头文件和一个数据文件。头文件的内容由制作图像的公司规定,一般包括文件类型、制作时间,文件大小制作人及版本号等信息。文件制作时还涉及到图像的压缩和存储效率等。

4.1 BMP文件格式

BMP文件格式是Windows系统中的一种标准图像文件格式,支持RGB、索引颜色、灰度和位图颜色模式。BMP文件一共有两种类型,设备相关位图(DDB)和设备无关位图(DIB)。Windows3.0及以前的BMP文件格式与显示设备有关,因此把这种BMP文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。Windows3.0 以后的BMP文件与显示设备无关,因此把这种BMP图像文件格式称为与位图无关DIB(device-independent bitmap)格式。BMP文件默认的文件扩展名是.BMP或.bmp。

4.2 GIF文件格式

  • GIF文件格式是CompuServe公司在1987年开发的图像文件格式,任何商业目的使用均须由CompuServe公司授权。
  • GIF文件主要是为数据流设计一种传输格式,不作为文件的存储格式,它具有顺序的结构形式。GIF文件主要由5部分组成:
    • 文件标志块: 标识"GIF"和版本号;
    • 逻辑屏幕描述块: 定义图像显示区域的参数,包含背景颜色信息、显示区域大小、纵横尺寸、颜色深浅以及是否存在全局彩色表;
    • 全局彩色表: 其大小由图像使用的颜色决定;
    • 图像数据块: 包含图像的描述块,局部彩色表,压缩图像数据,图像控制块,无格式文本扩展块,注释扩展块,应用程序扩展块,此部分可以缺省;
    • 尾块: 为三维16进制数,表示数据流以及结束,此部分可以缺省。

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

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

相关文章

[python、flask] - POST请求

1. 微信小程序POST传递数据给flask服务器 小程序端 // 提交POST数据 import { request } from "../../request/index.js"async handleDetectionPoints() {let params {url: "/detect_points",data: {"points": arr,"img_name": thi…

[vue]data数据属性及ref获取dom

data项的定义 this.$refs获取dom 获取不到数据 这样中转下才ok 小结: data里不能用this.$ref. 另外使用visjs时候 view-source:http://visjs.org/examples/network/basicUsage.html 加载不出东西,点了按钮触发才ok 小结: create里应该是从上到下执行的. 转载于:https://www.cnb…

[异步、tensorflow] - 子线程操作tensor,主线程处理tensor

参考整体流程如下图 代码 import tensorflow as tf"""模拟: 子线程不停的取数据放入队列中, 主线程从队列中取数据执行包含: 作用域的命名、把程序的图结构写入事件、多线程 """# 模拟异步存入样本. # 1、 定义一个队列,长度为1000 with tf.va…

Element

官网:http://element-cn.eleme.io/#/zh-CN 转载于:https://www.cnblogs.com/weibanggang/p/9995433.html

[tensorflow] - csv文件读取

参考 文件流程 csv读取流程 函数的流程 import tensorflow as tf import os"""tensorflow中csv文件的读取1、 先找到文件,构造一个列表2、 构造一个文件队列3、 读取(read)队列内容csv: 读取一行二进制文件: 指定一个样本的bytes读取图片文件: 按一张一张…

课程模块表结构

课程模块 我们要开始写课程模块了~~课程模块都有哪些功能呢~~ 我们的课程模块,包括了免费课程以及专题课程两个方向~~ 主要是课程的展示,点击课程进入课程详细页面~~ 课程详细页面展示,课程的概述,课程的价格策略,课程…

[tensorflow、神经网络] - 使用tf和mnist训练一个识别手写数字模型,并测试

参考 包含: 1.层级的计算、2.训练的整体流程、3.tensorboard画图、4.保存/使用模型、5.总体代码(含详细注释) 1. 层级的计算 如上图,mnist手写数字识别的训练集提供的图片是 28 * 28 * 1的手写图像,初始识别的时候,并不知道一次要训练多少个数据,因此输入的规模为 [None, 784].…

面向过程、面向函数、面向对象的区别浅谈

Python的面向过程、面向函数、面向对象的区别浅谈 转自--猎奇古今,加上其他 有人之前私信问我,python编程有面向过程、面向函数、面向对象三种,那么他们区别在哪呢? 面向过程就是将编程当成是做一件事,要按步骤完成&am…

[pytorch、学习] - 3.5 图像分类数据集

参考 3.5. 图像分类数据集 在介绍shftmax回归的实现前我们先引入一个多类图像分类数据集 本章开始使用pytorch实现啦~ 本节我们将使用torchvision包,它是服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision主要由以下几部分构成: torchvision.datasets: …

[pytorch、学习] - 3.6 softmax回归的从零开始实现

参考 3.6 softmax回归的从零开始实现 import torch import torchvision import numpy as np import sys sys.path.append("..") import d2lzh_pytorch as d2l3.6.1. 获取和读取数据 batch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_si…

[pytorch、学习] - 3.7 softmax回归的简洁实现

参考 3.7. softmax回归的简洁实现 使用pytorch实现softmax import torch from torch import nn from torch.nn import init import numpy as np import sys sys.path.append("..") import d2lzh_pytorch as d2l3.7.1. 获取和读取数据 batch_size 256 train_iter…

[pytorch、学习] - 3.9 多重感知机的从零开始实现

参考 3.9 多重感知机的从零开始实现 import torch import numpy as np import sys sys.path.append("..") import d2lzh_pytorch as d2l3.9.1. 获取和读取数据 batch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size)3.9.2. 定义模型参…

C语言逗号运算符和逗号表达式基础总结

逗号运算符的作用: 1,起分隔符的作用: 定义变量用于分隔变量:int a,b输入或输出时用于分隔输出表列 printf("%d%d",a,b) 2,用于逗号表达式的顺序运算符 语法:表达式1,表达式2,...,表达…

[pytorch、学习] - 3.10 多重感知机的简洁实现

参考 3.10. 多重感知机的简洁实现 import torch from torch import nn from torch.nn import init import numpy as np import sys sys.path.append("..") import d2lzh_pytorch as d2l3.10.1. 定义模型 num_inputs, num_outputs, num_hiddens 784, 10, 256 # 参…

如何从 Android 手机免费恢复已删除的通话记录/历史记录?

有一个有合作意向的人给我打电话,但我没有接听。更糟糕的是,我错误地将其删除,认为这是一个骚扰电话。那么有没有办法从 Android 手机恢复已删除的通话记录呢?” 塞缪尔问道。如何在 Android 上恢复已删除的通话记录?如…

[pytorch、学习] - 3.11 模型选择、欠拟合和过拟合

参考 3.11 模型选择、欠拟合和过拟合 3.11.1 训练误差和泛化误差 在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现…

[pytorch、学习] - 3.12 权重衰减

参考 3.12 权重衰减 本节介绍应对过拟合的常用方法 3.12.1 方法 正则化通过为模型损失函数添加惩罚项使学出的模型参数更小,是应对过拟合的常用手段。 3.12.2 高维线性回归实验 import torch import torch.nn as nn import numpy as np import sys sys.path.append("…

Scapy之ARP询问

引言 校园网中,有同学遭受永恒之蓝攻击,但是被杀毒软件查下,并知道了攻击者的ip也是校园网。所以我想看一下,这个ip是PC,还是路由器。 在ip视角,路由器和pc没什么差别。 实现 首先是构造arp报文&#xff0c…

转:org.apache.maven.archiver.MavenArchiver.getManifest错误

eclipse导入新的maven项目时,pom.xml第一行报错: org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration) 解决办法: 1、Help——>Install …

Codeforces Round #524 Div. 2 翻车记

A&#xff1a;签到。room里有一个用for写的&#xff0c;hack了一发1e8 1&#xff0c;结果用了大概600ms跑过去了。惨绝人寰。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorith…