JPEG标记0xb9是什么?

9

我是一名JPEG新手,正在尝试解码(可能已损坏的)JPEG(或者说是JFIF)文件。

我的图像查看器程序报错了一个非法的0xb9标记。

该文件没有SOF(帧开始)标记,而是有这个APP1段。

ff e1 00 0b 50 49 43 00 02 28 3c 01 00

跟着这段文字出现了一个 0xb9 标记:
ff b9 00 11 08 06 4c 04 d3 03 01 22 00 02 11 01 03 11 01

我在这里看到的是什么?

编辑

有人问我文件来自哪里。以下是故事背景:

大约20年前,我购买了一套CD-ROM上的杂志集合。然而,这些杂志只能在旧的Windows计算机上阅读,因此我正在尝试找到另一种方法来阅读它们,最好是可以在我的Linux计算机上运行的方法。据我所知,杂志页面存储为许多JFIF文件,这些文件简单地连接在一起。

所以首先,我提取了其中一个JFIF文件,现在我正在尝试找到一种查看它的方法。

编辑2

有人要求我分享一张图片文件。我不确定是否会侵犯版权,因此我将在几天后再次删除该文件。无论如何,可以从此处下载其中一个有问题的图片文件:

https://www.dropbox.com/s/9da72gdri8c9xwp/f1000.jpg

我不知道文件包含什么内容,除了它可能是《MAD杂志》的一页。

ff b9 段非常像SOF0段,将其更改为 ff c0(SOF0)会使图片可见,但只是一堆随机像素的集合。

上面提到的APP1段包含字符串 PIC,这不是我所知道的任何APP1段类型的一部分。

编辑3

既然问题已经得到回答,为避免版权问题,我将从Dropbox中删除该文件。谢谢所有为此做出贡献的人。


1
你的FFB9标记看起来很像SOF标记。不过显然出了些问题。 - user3344003
1
@haraldK:我已编辑帖子,包括一个文件链接。 - oz1cz
2
标记 X'FF02' 到 X'FFBF' 在 ITU T.81 中被保留。 - DaBler
1
我在将 FF B9 改为 FF C0 后尝试在 GIMP 中打开您的示例图像,但出现了一个错误,提示“霍夫曼表 0x00 未定义”。我猜测您使用的任何查看器都会忽略该错误,并最终输出随机垃圾。 (顺便说一句,我还尝试过将标准JPEG霍夫曼表注入到文件中,但这只给我带来了一堆RGB沙拉和一个“损坏的JPEG数据:错误的霍夫曼代码”错误,在图像中途停止。) - Ilmari Karonen
3
据称,APP1/PIC段包含“Accusoft Pegasus自定义字段”。虽然我仍不确定FFB9段是什么,但我发现此源文件声称它可能表示“残差扫描,交流编码”(实际上这意味着什么还不确定)。 - Ilmari Karonen
显示剩余9条评论
1个回答

4
根据ITU T.86修订版1,标识符为“PIC”的APP1段包含“Accusoft Pegasus自定义字段”。 这表明该文件可能是使用Accusoft工具创建的,并且他们也可能能够解码它。
(实际上,在您上面的评论中,您说您成功使用Accusoft的“Apollo”图片查看器演示版本打开了该文件。)
关于FFB9分段标记,我仍然不确定它的含义。 我在JPEG XT参考实现(称为“libjpeg”;请勿与独立JPEG组使用的同名混淆)中找到了{{link1:一些代码}},其似乎能够识别它,并包括一条注释说它表示“残余扫描,ac编码”。然而,我并不完全确定那意味着什么。

显然,这与支持每像素动态范围超过8位的图像有关,"残留扫描"存储了额外的高精度像素数据,可以与基本的8位JPEG图像数据结合以重建完整的HDR图像。但是,如果是这样的话,那么只有这样一个残留扫描标记的文件似乎很奇怪,没有任何正常的SOI标记。根据jakub_d的说法,JPEG XT库实际上无法解析您的文件,可能是因为它在某种非标准的方式中使用了该标记。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接