JPG图片格式及隐写方法

本文详细介绍了JPG文件的结构,包括SOI、APP0、DQT、SOF0、DHT等段的组成,以及JPEG压缩的四步骤。接着,探讨了JPG图像的常见隐写方法,如修改DQT、jphide、JSteg和OutGuess算法,并推荐了Steghide和Stegdetect隐写检测工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,先来介绍下JPG文件

JPG文件使用的是一种有损的压缩算法,通过去除冗余信息和不可见的细节来减少文件大小

JPG图片的组成:SQI(文件头)+APP0(图像识别信息)+DQT(定义量化表)+SOF0(图像基本信息)+DHT(定义HUFFMAN表)+DRI(定义重新开始间隔)+SOS扫描开始+EOI(文件尾)j

加粗部分是JPG图像构成所必须的部分

JPEG(Joint Photographic Experts Group)压缩方式主要分为以下四个步骤:

  1. 颜色空间转换:将RGB颜色空间转换为亮度-色度(YCbCr)颜色空间。
  2. 离散余弦变换(DCT):对每个8×8像素块中的Y、Cb和Cr分量进行DCT变换,将其转换为频域表示。
  3. 量化:对DCT系数进行进一步的量化。通过除以一个量化矩阵来降低更多的精度
  4. 编码:使用哈夫曼(HUFFMAN)编码对量化后的DCT系数进行编码,以减小存储空间。

JPG文件的格式分为一个个的段来存储,段的长度和多少是不一定的。只要包含了足够的信息,那么JPG文件就是可以被打开的;。JPG文件的每个段都一定包含两部分:第一个是段的标识,第二个是段的长度。

既然说了JPG每个段一定包含两部分,那么先来讲讲每个段的结构

段的结构:

名称

字节数

数据

说明

段标识

1

FF

每个新段的开始标识

段类型

1

每个段都不同

类型编码

段长度

2

不固定

包括段内容和段长度本身,不包括段表示和段类型

段内容

≤65533字节

接下来我们使用010 Editor工具打开一个JPG图像来观察一下

圈起来的就是就是我所说的每个段所一包含的两部分的第一个部分,也就是段的标识。我们使用010 Editor工具可以发现,许多部分被划为了不同的颜色,这就是不同的段,圈起来的FF,就是每个段的开头,段的标识。

段类型

名称

标记码

说明

SOI

D8

文件头

EOI

D9

文件尾

SOFO

C0

帧开始

SOF1

C1

同上

DHT

C4

定义HUFFMAN(哈夫曼)表

SOS

DA

扫描行开始

DQT

DB

定义量化表

DRI

DD

定义重新开始间隔

APP0

E0

定义交换格式和图象识别信息

COM

FE

注释

SOI文件头

JPG文件的开始两个字节都是FF D8这是固定的

可以看到FF D8正是这个JPG文件的文件头

SOI后跟的就是APP0(图像识别信息了)

APP0格式

名称

字节数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值