适用于DICOM JPEG(RGB)的像素处理逻辑,以应用窗宽和水平滤波器

3

我正在尝试对从DICOM文件中提取的JPEG图像应用窗宽和级别过滤器。

以下是我用于处理每个RGB图像通道的逻辑,例如我在安卓中的Render-Script中操作红色通道的代码如下所示:

这是一个示例代码,其中我展示了如何操作图像的红色通道。 (我也会对绿色和蓝色通道进行同样的操作)

它确实可以操作JPEG图像的窗宽和级别,但不确定是否是正确的方法来操作DICOM JPEGS。如果有人知道使用正确的像素处理数学方法来操作RGB JPEGS窗宽和级别的正确方法,请帮助我,因为它的结果与基于Windows的DicomViewers略有不同(我知道窗位和窗宽仅适用于单色图像,但某些DicomViewers如“ShowCase”会在RGB上应用此类滤镜)。)

    displayMin = (windowLevel- windowWidth/2);
    displayMax = (windowLevel+ windowWidth/2);

    /*Manipulate Red Channel */
    if(current.r < displayMin)
    {
      current.r = 0;
    }
    else if(current.r > displayMax)
    {
       current.r = 1;
    } 
1个回答

3
您目前的方法只是将输入数据截断以适应窗口,这当然很有用。但是,它并不能真正让您看到窗口/级别的好处,特别是在大于8bpp的图像上,因为它没有增强任何细节。
通常,您需要以某种方式重新映射窗口化的输入范围(displayMin到displayMax)到输出范围(0到1)。我认为没有明确的“正确”方法,不过这里有一个简单的线性映射,我觉得很有用:
if (current.r <= displayMin || displayMin == displayMax)
{
    current.r = 0;
}
else if (current.r >= displayMax)
{
    current.r = 1;
}
else
{
    current.r = (current.r - displayMin) / (displayMax - displayMin);
}

这个操作的作用就是把你的受限窗口扩展到使用整个色彩空间。你可以把它看作是对细节进行放大。

(displayMin == displayMax 这个条件只是为了防止除以零。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接