图像的数据结构

embedded/2024/10/31 17:20:38/

一 图像的数据结构

图像数字结构是指图像像素灰度值的存储方式,常用方式是将图像各像素灰度值用一维或二维数
组相应的各元素加以存储。此外,其他方式:
1.组合方式
2.比特面方式
3.分层结构
4.树结构
5.多重图像数据存储

1.组合方式
方法:一个字长存放多个像素灰度值。
特点:节省内存,但计算量增加,处理程序复杂

在这里插入图片描述
2.比特面方式
将所有像素灰度的相同比特位用一个二维数组表示,形成比特面。 n 个比特位表示的灰度图像按
比特面方式存取,就得到 n 个比特面。
特点:能充分利用内存空间,便于进行比特面之
间的运算,但对灰度图像处理耗时多。

在这里插入图片描述
3.分层结构
锥形结构:对2 k × 2 k 个像素形成的图像,依次构成分辨率下降的 k+1 幅图像的层次集合。
方法:从原图像I 0 开始,依次产生行列像素数都变为 1/2 的一幅幅的图像 I1, I2 ,Ik 。此时,作为图像 Ii 的各像素的值,就是它前一个图像 Ii -1 的相应的 2 × 2像素的灰度的平均值。优点:先对低分辨率图像进行处理,然后根据需要对高分辨率图像进行处理,可提高效率。

在这里插入图片描述
4.树结构
对于如图所示的一幅二值图像的行、列接连不断地二等分,如果图像被分割部分中的全体像素都
变成具有相同的特征时,这一部分则不再分割。

用这种方法,可以把图像用树结构 (4 叉树 表示。这可以用在特征提取和信息压缩等方面。
在这里插入图片描述
5.多重图像数据存储
对于彩色图像或多波段图像而言,每个像素包含着多个波段的信息。
存储方式有三种:
(1 )逐波段存储
分波段处理时采用。
(2 )逐行存储
逐行扫描记录设备采用。
(3 )逐像素存储用于分类。

在这里插入图片描述

二 图像文件格式

按不同的方式进行组织或存储数字图像像素的灰度,就得到不同格式的图像文件。图像文件按其格式的不同具有相应的扩展名。常见的图像文件格式按扩展名分为: RAW 格式、 BMP 格式、 TGA 格式、 PCX 格式、 GIF 格式、 TIFF 格式等。这些图像格式都大致包含下列特征:
(1 )描述图像的高度、宽度以及各种物理特征的数据。
(2 )彩色定义
(3 )描述图像的位图数据体
下面只对BMP 格式作较详细介绍,其他格式只做简介。

1.RAW格式
它是将像素按行列号顺序存储在文件中。这种文件只含有图像像素数据,不含有信息头,因此,在读图像时,需要事先知道图像大小(矩阵大小)。它是最简单的一种图像文件格式。
2.BMP
格式由以下四个部分组成
1)14 字节的文件头;
2)40 字节的信息头;
3)8 字节的颜色定义;
4)位图数据。

1)位图文件头 BITMAPFILEHEADER
它的结构如下:
typedef
struct tagBITMAPFILEHEADER
WORD
bfType ; 指定文件类型,必须是 0x424D ,即字符串 BM” */
DWORD
bfSize ; 指定文件大小
WORD bfReserved1;
为 保留字
WORD bfReserved2; /*
保留字
DWORD
bfOffBits 为 文件头到实际的位图数据的偏移字节数 *
}BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER;
该结构的长度是固定的,为
14 个字节 。
2)位图信息头 BITMAPINFOHEADER
结构的长度为
40 个节 其结构如下:
typedef
struct tagBITMAPINFOHEADER
DWORD
bfSize ; /* 指定这个结构的大小,为 40 个字节
LONG
biWidth ; 指定图像的宽度,单位是像素
LONG
biHeight ; 指定图像的高度,单位是像素;
WORD
biPlanes ; 必须是 1
WORD
biBitCount ; 指定表示颜色位数, 1( 黑白 )8 256 色)、 24 (真彩色
DWORD
biCompression ; 指定是否压缩 分别为 BI_RGB 、 BI_RLE4 、 BI_RLE8
DWORD
biSizeImage ; 指定实际的位图数据占用的字节数。
LONG
biXPelsPerMeter ; 指定目标设备的水平分辨率
LONG
biYPersPerMeter ; 指定目标设备的垂直分辨率
DWORD
biClrUsed ; 指定本图像实际用到的颜色数
DWORD
biClrImportant ; 指定本图像中重要的颜色数
}BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER;
3)palette
(调色板调色板实际上是一个数组数组中每个元素的类型为一个
RGBQUAD 结构,占 4 个字节。结构定义如下:
typedef
struct tagRGBQUAD
BYTE
rgbBlue
BYTE
rgbGreen
BYTE
rgbRed
BYTE
rgbReserved
}RGBQUAD;
有些位图,比如真彩色图,没有调色板。他们的位图信息头
后直接是位图数据。
4)
位图数据
它分两种情况:对于用到调色板的位图,图像数据就是该像
素颜色在调色板中的索引值;对于真彩色图,图像数据就是实
际的 R 、 G 、 B 值。

a)位图是 1 4 8 位时,有调色板。
在这里插入图片描述
对于2 色位图,用 1 位就可以表示该像素的颜色,因此一个字节可以表示 8 个像素;对于16 色位图,用 4 位可以表示一个像素的颜色,所以 1 个字节可以表示 2 个像素;对于256 色位图,一个字节刚好表示一个像素;
b位图是 24 位(真彩色)时,无调色板。
在这里插入图片描述

对于真彩色图,3 个字节才能表示 1 个像素。
3.GIF
GIF图像是基于颜色列表的,最多支持 8 位。 GIF支持在一幅 GIF 文件中存放多幅彩色图像,并且可以按照一定的顺序和时间间隔将多幅图像依次读出并显示在屏幕上,这样就可以形成一种简单的动画效果。GIF一般有七个数据区组成:头文件、通用调色板、位图数据区以及四个扩充区。
4.TIFF文件
TIFF图像文件主要由三部分组成:文件头、标识信息区和图像数据区。


http://www.ppmy.cn/embedded/133915.html

相关文章

java 正则匹配人名

有个需求,需要对json格式数据里面的人名(staffName)和电话(mobile进行脱敏。这种考虑用正则匹配。 处理: 正则表达式: 名字:包括英文字符,数字,空格(英文名称带空格): a…

运维监控丨16条常用的Kafka看板监控配置与告警规则

本期我们针对企业运维监控的场景,介绍一些监控配置和告警规则。可以根据Kafka集群和业务的具体要求,灵活调整和扩展这些监控配置及告警规则。在实际应用场景中,需要综合运用多种监控工具(例如Prometheus、Grafana、Zabbix等&#…

matplotlilb画图

matplotlib matplotlib 是 Python 中一个强大而灵活的绘图库,广泛用于数据可视化。它允许创建多种类型的图表,包括线图、散点图、柱状图、饼图、直方图等。matplotlib 的基础是 pyplot 模块,它为绘图提供了简单的接口。这里详细讲解一下 mat…

traceroute或tracepath区别

traceroute和tracepath都是网络诊断工具,用于追踪数据包在网络中的路径,以帮助用户发现网络中可能存在的问题。以下是两者的具体区别: 一、实现方式 traceroute:通过调用原始数据包实现。由于直接处理原始数据包,某些…

智能财务 | 数据与融合,激发企业财务数智化转型思考

数据与融合,激发企业财务数智化转型思考 用友持续深耕企业财务领域,见证中国企业走过了财务电算化、信息化时代,当下共同经历数智化时代。2023 年度,通过走访标杆企业,与高校教授、权威机构学者共同探讨等形式&#xf…

20241028软考架构-------软考案例7答案

每日打卡题案例7答案 【2013年真题】 难度:一般 阅读以下有关表现层设计方面的说明,回答问题。 【说明】 某商业银行欲开发一套个人银行系统,为用户提供常见的金融服务,包括转账、查询、存款变更和个人信息管理等功能。该软件除了…

人工智能原理实验一:知识的表示与推理实验

一、实验目的 本实验课程是计算机、智能、物联网等专业学生的一门专业课程,通过实验,帮助学生更好地掌握人工智能相关概念、技术、原理、应用等;通过实验提高学生编写实验报告、总结实验结果的能力;使学生对智能程序、智能算法等有…

[Python学习日记-57] 常用模块的练习(答案更新中)

[Python学习日记-57] 常用模块的练习 简介 题目 答案 简介 本篇是常用模块的练习题,主要用于巩固前面学习的函数内容,建议先自己做一遍,最后再对答案,这样会比较稳固。 题目 1、导入模块的方式有哪几种,官方不推荐…