アプリケーションで、de Dicom 仕様のウィンドウ幅とレベル式を実装しようとしています。現時点ではグレースケールを返していません。dicom は次のように式を指定します。
これらの属性は、次の疑似コードに従って適用されます。ここで、x は入力値、y は ymin から ymax までの範囲の出力値、c は Window Center (0028,1050)、w は Window Width (0028,1051) です。 ):
if (x <= c - 0.5 - (w-1)/2), then y = ymin
else if (x > c - 0.5 + (w-1)/2), then y = ymax,
else y = ((x - (c - 0.5)) / (w-1) + 0.5) * (ymax - ymin)+ ymin
したがって、これを次の C# 構文に変換しました。
if (pixelData[i] <= wLevel - 0.5 - (wWidth - 1) / 2)
oColor = 0;
else if (pixelData[i] > wLevel - 0.5 + (wWidth - 1) / 2)
oColor = 255;
else
oColor = (int)((pixelData[i] - (wLevel - 0.5)) / (wWidth - 1) + 0.5) * (255 - 0) + 0;
ただし、式の最後の部分
oColor = (int)((pixelData[i] - (wLevel - 0.5)) / (wWidth - 1) + 0.5) * (255 - 0) + 0;
0のみを返すようです
これがどのように可能か誰にもわかりますか?