gpt4 book ai didi

C#:使用 Silverlight FJCore 库以 12 位精度解码 JPEG 图像?

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:48 25 4
gpt4 key购买 nike

在我的 C# Silverlight 应用程序中,我尝试使用 FJCore 以压缩的 JPEG 传输语法解码 DICOM 图像。类库。

DICOM 图像通常以 12 位精度压缩。当尝试使用原始 FJCore 源代码解码此类图像时,我得到一个异常提示“不支持的编解码器类型”,因为在原始 FJCore 实现中只有 SOF0(基线 DCT)和 SOF2(渐进 DCT)帧开始标记是支持的。如果我将实现更改为也接受 SOF1 标记(扩展顺序 DCT)并以与 SOF0 帧相同的方式处理 SOF1 帧,图像将被解码,但只考虑 8 位。

使用修改后的 FJCore 库解码后,典型的 12 位精度图像现在看起来像这样:

12-bit precision JPEG image encoded to 8-bit precision by FJCore

理想情况下,图像应如下所示:

12-bit precision JPEG image encoded to full 12-bit precision

据我从 FJCore 实现中得知,图像精度记录在 JpegFrame 类中,但从未使用过。最初的 FJCore 实现似乎只完全支持 8 位精度的灰度图像。

我打算“不畏艰险”并尝试自己扩展 FJCore 以支持灰度图像的 12 位精度。但在我这样做之前,我想我应该在 StackOverflow 中提出这个问题,看看以前是否有人遇到并解决过这个问题?那样的话,我很乐意了解您是如何解决问题的。

非常感谢!
安德斯@Cureos

最佳答案

我刚刚更新了我自己的 JPEG 解码器来处理扩展模式,我需要改变的是我的逆 DCT。在更改代码之前,输出看起来类似于上面的示例图像。我一直存储来自熵解码的 16 位系数值,但我的 DCT 计算在进行数学运算时使用 16 位整数来保存临时值,从而破坏了较大的值。我将 DCT 代码更改为使用 32 位整数进行计算,这解决了问题。

关于C#:使用 Silverlight FJCore 库以 12 位精度解码 JPEG 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7505630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com