android-正确的像素处理逻辑为DICOM JPEG(RGB)应用窗口宽度和级别过滤器

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

这是我用来处理RGB图像每个通道的逻辑,例如我操纵红色通道,例如android渲染脚本中的以下代码

示例代码展示了我如何操作图像的红色通道.
(我对绿色和蓝色通道也是如此)

它确实会操纵JPEG图像寡妇的宽度和水平,但是如果有人知道正确的像素处理数学来操纵RGB JPEGS窗口宽度和水平的正确方法,则不能确定它是否正确地操纵DICOM JPEGS,请帮我,因为它的结果是什么(20 %)与基于Windows的DicomViewers不同(我知道“窗口水平和宽度”仅适用于单色图像,但某些DicomViewer(例如“ 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;
    } 

解决方法:

您当前的方法只是将输入数据截断以适合窗口,这肯定是有用的.但是,它并没有真正让您看到窗口/级别的好处,尤其是在大于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条件只是为了防止被零除.)

上一篇:【第3版emWin教程】第25章 emWin6.x的JPEG图片显示(硬件解码)


下一篇:成功解决Python中导出图片出现错误SyntaxError: (unicode error) 'unicodeescape' codec can't decode by