web-dev-qa-db-ja.com

Python .dcmを.pngに変換、画像が明るすぎる

デフォルトで.dcmとなるいくつかのファイルを.pngに変換する必要があります。これを実現するためのコードサンプルをいくつか見つけましたが、最終的な結果が明るすぎます。誰かこれを見てもらえませんか?

 def convert_to_png(file):
    ds = pydicom.dcmread(file)

    shape = ds.pixel_array.shape

    # Convert to float to avoid overflow or underflow losses.
    image_2d = ds.pixel_array.astype(float)

    # Rescaling grey scale between 0-255
    image_2d_scaled = (np.maximum(image_2d,0) / image_2d.max()) * 255.0

    # Convert to uint
    image_2d_scaled = np.uint8(image_2d_scaled)

    # Write the PNG file
    with open(f'{file.strip(".dcm")}.png', 'wb') as png_file:
        w = png.Writer(shape[1], shape[0], greyscale=True)
        w.write(png_file, image_2d_scaled)

コードを微調整しましたが、何も機能しないようです。

これは実際のものがdicomのように見え、右側にこのコードを実行した結果です enter image description here

3
Terchila Marian

A .dcm特定の画像を分析すると、画像に明るさとコントラストの両方の範囲があるように見えます。あなたの場合、それが少し明るく見えるかもしれない理由は、あなたがイメージの特定のビューだけを選択したということです。

画像を暗くするには、分母の値を増やす必要があるようです。

threshold = 500 # Adjust as needed
image_2d_scaled = (np.maximum(image_2d, 0) / (np.amax(image_2d) + threshold)) * 255.0

これにより、一部のピクセルが明るくなりません。

0
Josh