3

DICOM ファイルから抽出した JPEG 画像にウィドウ幅とレベル フィルタを適用しようとしています。

これは、RGB イメージの各チャネルを処理するために使用するロジックです。たとえば、Android の Render-Script で以下のコードのように赤チャネルを操作します。

Image の Red Channel を操作する方法を示したサンプル コード。(緑と青のチャンネルも同じです)

JPEG 画像ウィンドウの幅とレベルを操作しますが、DICOM JPEG を操作する正しい方法かどうかはわかりません。RGB JPEG ウィンドウの幅とレベルを正しいピクセル処理数学で操作する正しい方法を誰かが知っている場合、その結果として私を助けてください。 %) Windows ベースの DicomViewers とは異なります (ウィンドウのレベルと幅はモノクロ画像専用ですが、「ShowCase」などの一部の DicomViewers は 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 に答える