- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
几年前我写了一个 jpeg 压缩器/解压器,它可以处理无损和有损 jpeg 文件。它运行良好,但并不总是正确解码 DICOM 文件中的 jpeg 流。
我很了解 jpeg,但我对 DICOM 知之甚少。 DICOM 中的无损 jpeg 不可能符合 jpeg ISO 标准。必须有一些修改,要么是硬编码,要么是由 jpeg 文件流之外的 DICOM 文件中某处的参数修改。
我的代码在大多数示例 DICOM 文件 (compsamples_jpeg.tar) 上失败:
ftp://medical.nema.org/MEDICAL/Dicom/DataSets/WG04/
这是我解码此集中第一个无损 jpeg (IMAGES\JPLL\CT1_JPLL) 时发生的情况:
dicom decoded image
左边的图像是从我的代码中呈现的,右边是由在线 DICOM 阅读器呈现的:
www (dot) ofoct (dot) com (slash) viewer (slash) dicom-viewer-online (dot) html
(x)MedCon 是一种开源 DICOM 阅读器,在与我的代码完全相同的像素处失败,因此我不是唯一遇到此问题的人。
xmedcon dot sourceforge dot net
我已经逐字节阅读了这个 jpeg 流,绘制了霍夫曼树并用铅笔和纸计算了霍夫曼代码,我的代码完全按照它应该做的。以下是霍夫曼代码:
最佳答案
DICOM 指定使用 ISO 10918 就像它写的那样,所以在 DICOM 图像中使用无损 JPEG 没有什么神奇之处,除了将解码比特流的始终未签名的输出重新解释为有符号的问题(取决于像素表示)并将重新缩放斜率和截距应用于解码的“存储像素值”,使其成为观看者可能报告的任何“值”(例如,作为 Hounsfield 单位),如 Paolo 所述。或者换句话说,不要依赖观看者报告的“像素值”与解码比特流的直接输出相同。
作为引用,以下是 DICOM 中一般解决 10918 使用的部分:
http://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_8.2.html#sect_8.2.1
http://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_A.4.html#sect_A.4.1
DICOM 编码器可能会将单独的压缩帧拆分为单独的片段,就像本示例中故意使用片段来测试解码能力的情况一样。我希望您知道这一点,并且已经负责跨片段边界重新组装压缩位流(即,删除片段之间的固定长度的 Item 标签):
http://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_A.4.html
虽然有些编码器可能有问题,但我认为 NEMA 样本数据集中的 IMAGES\JPLL\CT1_JPLL 并非如此,我多年前使用斯坦福 PVRG 编解码器创建了该数据集。
我自己的解码器(最小的)在 http://www.dclunie.com/pixelmed/software/codec/没有问题。源码是可用的,所以如果你想在打开一些调试信息的情况下重新编译它以跟踪每个解码值、预测器输入值、在每行开头重新启动等,以与你自己的逻辑进行比较,请随意.
最后,由于 JPEG 无损在 DICOM 之外很少使用,您可能会发现很难获得其他样本进行测试。想到的一个这样的来源是 USF 数字化乳房 X 线摄影收藏(医疗,但不是 DICOM),位于 http://marathon.csee.usf.edu/Mammography/Database.html .
大卫
附注。我确实在 https://sourceforge.net/projects/xmedcon/ 上检查过 XMedCon 正在使用哪种编解码器它似乎使用了康奈尔无损代码的一些副本;所以它可能容易受到 BitBank 提到的帖子( https://groups.google.com/forum/#!topic/comp.protocols.dicom/Yl5GkZ8ggOE )中描述的相同错误或其他一些错误的影响。我没有试图破译源代码来查看。
关于jpeg - 在 nema.org DICOM 文件中解码无损 jpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43948479/
几年前我写了一个 jpeg 压缩器/解压器,它可以处理无损和有损 jpeg 文件。它运行良好,但并不总是正确解码 DICOM 文件中的 jpeg 流。 我很了解 jpeg,但我对 DICOM 知之甚少
我是一名优秀的程序员,十分优秀!