3

我正在尝试将寡妇宽度和级别过滤器应用于从 DICOM 文件中提取的 JPEG 图像。

这是我用来处理 RGB 图像的每个通道的逻辑例如我操作红色通道就像下面的代码在 android 的 Render-Script 中

我展示了如何操作图像的红色通道的示例代码。(我对绿色和蓝色通道做同样的事情)

它确实操纵 JPEG 图像窗口宽度和水平,但不确定它是否正确操纵 DICOM JPEGS 如果有人知道正确的方法来操纵 RGB JPEGS 窗口宽度和水平与正确的像素处理数学请帮助我作为它的结果一些什么(20 %) 与基于 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;
    } 
4

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条件只是防止被零除。)

于 2013-12-17T00:02:44.827 回答