当前位置: 首页 > 知识库问答 >
问题:

libjpeg和无损JPEG

严锐
2023-03-14

我有一个关于DICOM标准和libjpeg库的问题。在DICOM标准中,除其他外,还有传输语法:

JPEG无损、非分层、一阶预测(过程14[选择值1]):用于无损JPEG图像压缩的默认传输语法

据我所知,该传输语法与JPEG-1 LOSSSLES格式相对应。我开始研究libjpeg库,我发现它不支持(?)无损JPEG,如这里所述:DICOM中的JPEG无损

另外,在libjpeg文档中有一段话是这样说的:

不支持的ISO选项包括:*分层存储*无损JPEG*DNL标记*非整数子采样比

但是,在库代码中,压缩参数结构jpeg_compress_struct中有一个字段:

boolean lossless;       /* TRUE=lossless encoding, FALSE=lossy */

共有1个答案

计光赫
2023-03-14

我们先在这里做一些澄清。您应该从著名的JPEG 6B(又名62)版本开始。从这里开始阅读代码。您将发现没有提到您的boolean lossless。libjpeg6b是提供两个分叉的参考代码库:

  • Guido Vollbeding(IJG维护者):libjpeg 7及更高版本,具有著名的SmartScale扩展
  • dcommanderlibjpeg-turbo,特别是从此处读取注释。

因此,如果这是您所说的libjpeg,那么是的,它不支持标准中指定的无损模式。无损补丁是由Ken Murchison创建的,您应该仍然能够找到它(例如这里)。它应该直接应用于libjpeg6b。如果您不想自己为库打补丁,请快速查看GDCM和或DCMTK,因为它们都使用了libjpeg+著名的无损补丁的方便副本(多亏了DCMTK团队,还有一些补丁)。

在这一点上,这应该回答了你的问题。

有关libjpeg(IJG)和libjpeg-turbo信息的详细信息,建议您阅读以下信息:

  • https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=612341#131
  • https://lists.debian.org/debian-devel-announce/2014/08/msg00000.html

如果您还在阅读,我建议您也快速浏览一下另一个库(特意地),也称为libjpeg,请在GitHub上查看。特别是查看readme文件(此处)。您会发现这个libjpeg是ITU81的完整实现(有损、无损、8/12/16bits甚至分层的全部在一个代码中,而不需要进行多次编译!)。

而且为了完整性,我发现以下链接非常有用:

  • http://fileformats.archiveteam.org/wiki/lossless_jpeg_(原始)
  • https://sourceforge.net/projects/jpeg/
 类似资料:
  • LibJPEG 是一个广泛使用的 JPEG 图像压缩库,采用 C 语言开发。

  • libjpeg-turbo 是一个专门为 x86 和 x86-64 处理器优化的高速 libjpeg 的改进版本。 It uses SIMD instructions (MMX, SSE, SSE2) to accelerate baseline JPEG compression and decompression. libjpeg-turbo is generally 2-4 times as

  • 本文向大家介绍DBMS中的无损和有损分解,包括了DBMS中的无损和有损分解的使用技巧和注意事项,需要的朋友参考一下 通过将表分为多个表,DBMS中的分解可以消除数据库中的冗余,异常和不一致。 以下是类型- 无损分解 如果可以使用Joins从分解后的表中重建关系R,则分解是无损的。这是首选。分解后,信息不会因关系而丢失。联接将导致相同的原始关系。 让我们看一个例子- <EmpInfo> Emp_ID

  • 本文向大家介绍有损压缩和无损压缩之间的区别,包括了有损压缩和无损压缩之间的区别的使用技巧和注意事项,需要的朋友参考一下 数据压缩是指将大文件缩小为较小大小的文件并可以再次将其解压缩为大文件的技术。有损压缩会将大文件恢复为原始格式,但会丢失一些数据,这是不明显的,而无损压缩会将大文件恢复为原始格式而不会丢失任何数据。 以下是有损压缩和无损压缩之间的一些重要区别。 序号 键 有损压缩 无损压缩 1 数

  • 在DICOM规范中,传输语法之一是,定义为。 是否可以在Python中读或写这种格式?查看文件中的枕头,我不清楚是否支持这种格式。 这个帖子有点相关。

  • 问题内容: 如何在Java中实现jpeg-lossess? 会抛出异常: 该只打印。 使用(版本1.1.3): 还抛出异常: 你能写个样本吗? 问题答案: 标准Java没有JPEG-LS的压缩类型。 您可以下载并使用JAI(Java高级映像)API,尽管我相信它包括这样的压缩类型。 可以从这里下载