运行长度编码运行是否可以超越像素数据行

时间:2015-05-27 11:15:26

标签: image encoding dicom

这个问题是关于用于压缩图像的RLE算法(在这种情况下封装在DICOM文件中)

假设我的像素数据为50像素×50像素。它代表一个灰度图像,其中单个颜色分量为8位(基本上一个字节是单个8位像素......这个假设只是为了简单而实际上对问题没有影响 - 也适用于彩色图像)

为了对该图像执行行程编码,“运行”定义如下 (按照标准)

复制运行(相同字节的序列) - 编码为双字节代码< -count + 1> 哪里 count =运行中相同字节的数量(2< = count< = 128)

Literal Run(非重复字节序列) - 编码为两字节代码< count - 1> 哪里 count =序列中的字节数(1< = count< = 128)

问题:

  1. Replicate run Literal Run 是否可以超越行和列边界?我的意思是。在像素数据50X50像素的例子中 - 如果我们有前两行白色像素。是合法的RLE将前两行编码为100字节的复制运行(-99,<白色像素的值>) - 或者它们是否应分成两次50像素的运行?

  2. 是否有任何事实上的协议在每个新行开始新的运行?

1 个答案:

答案 0 :(得分:1)

根据DICOM PS 3.5 2015-b §G.3.1 The RLE Encoder,您不应跨越行边界:

  

图像的每一行应单独编码,而不是跨行   边界。

现在这是对编码器的限制,如果您要实现一般的RLE解码器,请注意某些供应商不实施此限制。这使得在流式传输RLE编码DICOM文件(=特定区域的部分解码)时处理特别痛苦。