opj_image_comp 结构的 bpp 和 prec 记录到底是啥
Posted
技术标签:
【中文标题】opj_image_comp 结构的 bpp 和 prec 记录到底是啥【英文标题】:What exactly are bpp and prec records of opj_image_comp structureopj_image_comp 结构的 bpp 和 prec 记录到底是什么 【发布时间】:2021-02-26 13:13:04 【问题描述】:根据 doxygen 文档 (http://www.openjpeg.org/doxygen/structopj__image__comp.html),opj_image_comp 结构包含两个让我感到困惑的字段:
精确度:精度 bpp:以位为单位的图像深度仅基于此信息,我假设具有 8 位像素 (0-255) 的图像的 bpp=8。但是当我解压缩一些 8 位单声道 .j2k 文件时,我发现 prec=8 和 bpp=0。
那么,prec 和 bpp 究竟包含什么?
如果这对答案有任何影响,我正在使用 OpenJPEG v2.3。
非常感谢。
【问题讨论】:
【参考方案1】:我设法通过更多挖掘找到了更多信息。
prec 字段包含用于编码图像的位数。这对应于 Image and Tile Size (SIZ) 标记段中 Ssiz 字段的低 7 位。
我还没有弄清楚 OpenJPEG 结构 opj_image_comp_t 中的 bpp 字段实际上包含什么。
【讨论】:
嗨!你不认为你对此有更多的了解吗?我注意到github.com/uclouvain/openjpeg/blob/master/tests/… 只设置了prec
并且有一条评论说“bpp 没用”,但是对于它没用的东西会很好
我能找到“使用”的 bpp 的唯一地方是 src/lib/openjp2/j2k.c。在验证图像组件是否与指定的影院或 IMF 配置文件兼容时使用它。但除此之外,我在执行压缩时找不到它们实际被使用。
已经搜索了更多,但没有找到任何东西,因此该项目存在问题:github.com/uclouvain/openjpeg/issues/1379
刚刚收到回复,bpp
正在消失:github.com/uclouvain/openjpeg/pull/1383【参考方案2】:
bpp
是一个冗余字段,不应使用。为了鼓励这一点,最近有人deprecated by the author,说:
bpp 与 prec 是多余的,并且几乎从未由库设置,除了 通过 opj_image_create()。这种变化应该不会影响现有的, 工作,API 的用户,应该已经使用 prec 来获取 工作正常。
根据问题,prec
是每个通道的位深度。因此,对于无符号通道,有效值将在 [0, 2prec-1] 中。
【讨论】:
以上是关于opj_image_comp 结构的 bpp 和 prec 记录到底是啥的主要内容,如果未能解决你的问题,请参考以下文章
lcd中像素深度bpp和像素格式(比如RGB,YUV)的关系