我正在尝试将寡妇宽度和级别过滤器应用于从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条件只是为了防止被零除.)