这个问题是关于用于压缩图像的RLE算法(在这种情况下封装在DICOM文件中)
假设我的像素数据为50像素×50像素。它代表一个灰度图像,其中单个颜色分量为8位(基本上一个字节是单个8位像素......这个假设只是为了简单而实际上对问题没有影响 - 也适用于彩色图像)
为了对该图像执行行程编码,“运行”定义如下 (按照标准)
复制运行(相同字节的序列) - 编码为双字节代码< -count + 1> 哪里 count =运行中相同字节的数量(2< = count< = 128)
Literal Run(非重复字节序列) - 编码为两字节代码< count - 1> 哪里 count =序列中的字节数(1< = count< = 128)
问题:
Replicate run 和 Literal Run 是否可以超越行和列边界?我的意思是。在像素数据50X50像素的例子中 - 如果我们有前两行白色像素。是合法的RLE将前两行编码为100字节的复制运行(-99,<白色像素的值>) - 或者它们是否应分成两次50像素的运行?
是否有任何事实上的协议在每个新行开始新的运行?
答案 0 :(得分:1)
根据DICOM PS 3.5 2015-b §G.3.1 The RLE Encoder,您不应跨越行边界:
图像的每一行应单独编码,而不是跨行 边界。
现在这是对编码器的限制,如果您要实现一般的RLE解码器,请注意某些供应商不实施此限制。这使得在流式传输RLE编码DICOM文件(=特定区域的部分解码)时处理特别痛苦。