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

【图像处理】-不同的图像存储格式

看到了前面的基础操作介绍,我们再了解一下不同图像的存储格式,更有利于我们理解图像处理的原理。

图像存储格式详细介绍

1. BMP(BitMap Picture)

发展历史

BMP是一种位图文件格式,由微软公司于1986年推出。它最初是为Windows操作系统设计的,后来逐渐被其他操作系统所支持。由于其简单易用的特点,在早期计算机图形学中得到了广泛应用。

描述

BMP是一种与设备无关的位图格式,这意味着无论何种显示设备都可以正确地渲染该图像。BMP文件由四个部分组成:文件头、位图信息头、颜色表(可选)和位图数据。其中,文件头用于描述文件的基本信息;位图信息头则包含了关于图像尺寸、色彩深度等详细信息;颜色表定义了图像中使用的颜色;而位图数据则是实际的像素值。

存储结构示例
字段名称长度(字节)描述
文件类型2标识文件为BMP格式 (BM)
文件大小4整个文件的大小
保留值4保留未使用
数据偏移量4从文件开头到图像数据之间的字节数
大小4本信息头的长度
宽度4图像宽度,以像素为单位
高度4图像高度,以像素为单位
色彩平面数2总是设置为1
位数/像素2每个像素占用的位数
压缩方式4表示是否压缩及采用何种压缩算法
图像大小4压缩后的图像数据大小
水平分辨率4每米的像素数
垂直分辨率4每米的像素数
使用的颜色数4颜色表中颜色的数量
重要颜色数4对图像显示至关重要的颜色数量
实际图片数据说明

假设我们有一张10x10像素的单色(黑白)BMP图像,每个像素占1位,总共有100个像素点。文件结构如下:

  • 文件头:

    • 文件类型: BM (2字节)
    • 文件大小: 54 + 100 = 154字节 (4字节)
    • 保留值: 0 (4字节)
    • 数据偏移量: 54字节 (4字节)
  • 位图信息头:

    • 大小: 40字节 (4字节)
    • 宽度: 10像素 (4字节)
    • 高度: 10像素 (4字节)
    • 色彩平面数: 1 (2字节)
    • 位数/像素: 1位 (2字节)
    • 压缩方式: 0 (无压缩) (4字节)
    • 图像大小: 100字节 (4字节)
    • 水平分辨率: 2835 DPI (4字节)
    • 垂直分辨率: 2835 DPI (4字节)
    • 使用的颜色数: 2 (4字节)
    • 重要颜色数: 0 (4字节)
  • 颜色表:

    • 黑色: RGB(0, 0, 0) (4字节)
    • 白色: RGB(255, 255, 255) (4字节)
  • 位图数据:

    • 按行排列的100个像素点,每个像素点占1位,共13字节(因为每8个像素点需要1字节存储)

2. JPEG(Joint Photographic Experts Group)

发展历史

JPEG是由联合图像专家组在1992年制定的一种有损压缩标准,旨在解决数字照片和其他连续色调图像所需的大量存储空间问题。JPEG格式因其高效的压缩比和良好的视觉质量而在互联网上广泛传播。

描述

JPEG采用了基于离散余弦变换(DCT)的压缩技术,可以显著减少文件体积而不明显影响画质。JPEG文件由一系列标记段组成,每个标记段包含一个两字节的标识符、两个字节表示内容长度以及具体的数据。

存储结构示例
标记段长度(字节)描述
SOI (Start of Image)2文件开始标志 (FF D8)
APP0 (JPEG应用段0)16应用程序特定信息
DQT (定义量化表)67量化表参数
SOF0 (开始帧0)17帧头部信息
DHT (定义哈夫曼表)328哈夫曼编码表
SOS (开始扫描)12 + 图像数据 + EOI (End of Image, 2字节)扫描开始及结束标志 (FF DA, FF D9)
实际图片数据说明

假设我们有一个简单的JPEG图像,包含以下标记段:

  • SOI: FF D8
  • APP0: 包含JFIF头信息
  • DQT: 定义量化表
  • SOF0: 帧头部信息,例如:
    • 图像宽度: 640像素
    • 图像高度: 480像素
    • 精度: 8位
  • DHT: 定义哈夫曼编码表
  • SOS: 开始扫描,后跟压缩后的图像数据
  • EOI: 文件结束标志 FF D9

3. PNG(Portable Network Graphics)

发展历史

PNG格式是在1995年由一群开发者创建,作为GIF格式的替代品。PNG不仅支持透明背景,还提供了更好的压缩效果,并且是完全无损的。随着Web技术的发展,PNG成为了网页设计师们最喜爱的图像格式之一。

描述

PNG是一种无损压缩的位图格式,具有跨平台兼容性。PNG文件由一个固定的签名序列后跟多个块构成。每个块都有自己的类型代码、长度字段和校验和,确保数据完整性。

存储结构示例
长度(字节)描述
文件签名8确认文件为PNG格式 (89 50 4E 47 0D 0A 1A 0A)
IHDR (Image Header)17图像基本信息如宽度、高度等
PLTE (Palette)至少3n+1调色板中的颜色条目
IDAT (Image Data)至少12实际图像数据
IEND (Image Trailer)12文件结束标志
实际图片数据说明

假设我们有一个简单的PNG图像,包含以下块:

  • 文件签名: 89 50 4E 47 0D 0A 1A 0A
  • IHDR: 包含图像宽度、高度、位深度等信息
    • 宽度: 640像素
    • 高度: 480像素
    • 位深度: 8位
    • 颜色类型: 真彩色带Alpha通道
  • PLTE: 如果是调色板图像,则包含调色板条目
  • IDAT: 压缩后的图像数据
  • IEND: 文件结束标志

4. GIF(Graphics Interchange Format)

发展历史

GIF最早出现在1987年,由CompuServe公司开发。最初版本被称为GIF87a,随后在1989年进行了改进,推出了GIF89a版本,增加了对动画和透明度的支持。尽管存在版权争议,但GIF仍然非常流行,特别是在社交媒体平台上分享简短动画时。

描述

GIF使用LZW压缩算法进行无损压缩,适合存储具有较少颜色变化的简单图形或小型动画。GIF文件结构相对简单,主要包括文件头、逻辑屏幕描述符、全局颜色表(如果有的话)、图像描述符、局部颜色表(如果有的话)以及图像数据。

存储结构示例
字段名称长度(字节)描述
文件头6“GIF87a” 或 “GIF89a”
逻辑屏幕描述符7包含屏幕宽度、高度等信息
全局颜色表3nRGB三元组组成的调色板
图像描述符10指定图像位置和尺寸
局部颜色表3m如果存在,则覆盖全局颜色表
图像数据变长LZW压缩后的像素流
实际图片数据说明

假设我们有一个简单的GIF图像,包含以下字段:

  • 文件头: GIF89a
  • 逻辑屏幕描述符:
    • 宽度: 100像素
    • 高度: 100像素
    • 调色板大小: 256色
  • 全局颜色表: 包含256个RGB三元组
  • 图像描述符:
    • 左位置: 0
    • 上位置: 0
    • 宽度: 100像素
    • 高度: 100像素
  • 图像数据: LZW压缩后的像素流

http://www.kler.cn/a/536048.html

相关文章:

  • k8sollama部署deepseek-R1模型,内网无坑
  • 基于 Spring Cloud + Spring AI + VUE 的知识助理平台介绍以及问题
  • 【分布式架构理论2】分布式架构要处理的问题及解决方案
  • 编程之路:在细节中磨砺技艺
  • 畅游Diffusion数字人(15):详细解读字节跳动最新论文——音频+姿态控制人类视频生成OmniHuman-1
  • 从零开始实现一个双向循环链表:C语言实战
  • 蓝桥杯生命之树(DP)
  • 学习笔记:机器学习中的数学原理(一)
  • 【数据安全】现代智能手机的数据加密机制
  • Linux ftrace 内核跟踪入门
  • 可计算性与计算复杂性:理论计算机科学的核心领域
  • osclass增加支持webp格式
  • 【CPP】C++后端开发面试:深入理解编程中的锁机制
  • Linux进阶——web服务器
  • 【Spring Boot】自动配置源码解析
  • TcpClientTest
  • Python中 logging.basicConfig
  • 最新阿里高级Java面试题(首发,70道,带详细答案)
  • 支持向量机(一)
  • VERA: 基于视觉-语言模型的解释性视频异常检测框架
  • 大模型的微调方式
  • 【软件测试入门】Linux操作系统初级命令大全
  • 大模型蒸馏(Model Distillation)的原理及过程
  • 【Git】tortoisegit使用配置
  • 解锁高效 Web 开发新姿势:Open WebUI 安装指南
  • Java 的try-with-resources语句,不需要显式调用close()