如何设置 Window 宽度和 Window 中心同时将 dicom 文件转换为 jpg 文件
how to set Window Width and Window Center while convert a dicom file to a jpg file
我不知道如何在将 dicom 文件转换为 jpg 文件时设置 Window 宽度 Window 中心。
我完成了一个转换器应用程序,它可以通过 python 和 opencv 将 dicom 文件转换为 jpg 文件。
但是dicom文件和jpg文件有很大区别,因为我没有设置Window宽度和Window Center.However我不知道怎么设置它。
Window 中心为 -400,Window 宽度为 1500。
这是我的代码
# -*- coding: utf-8 -*-
#!/usr/bin/python
import os
import cv2
import dicom
def convert_file(dcm_file_path, jpg_file_path):
dicom_img = dicom.read_file(dcm_file_path)
img = dicom_img.pixel_array
cv2.imwrite(jpg_file_path, img)
if __name__ == '__main__':
rootdir = "D:\CT\A7"
for parent, dirnames, filenames in os.walk(rootdir):
for filename in filenames:
if '.dcm' in filename.lower():
dicom_path = os.path.join(parent, filename)
name = dicom_path.replace('\', '_')[3:]
jpg_path = "d:\CT_JPG\%s.jpg" % name
print (jpg_path)
convert_file(dicom_path, jpg_path)
如果你真的想将 DICOM 图像保存为 jpg,而不是玩弄 Window 宽度和 Window 中心参数,如评论中所建议的,是为了便于查看时,我建议简单地将图像的比例(在 int16
中)标准化为 uint8
(这是正常 jpg/png/gif 图像的比例)。但是请注意,这会导致分辨率下降。
要将其保存为 jpg,一种可能的方法是进行以下修改:
def convert_file(dcm_file_path, jpg_file_path):
dicom_img = dicom.read_file(dcm_file_path)
img = dicom_img.pixel_array
scaled_img = cv2.convertScaleAbs(img-np.min(img), alpha=(255.0 / min(np.max(img)-np.min(img), 10000)))
cv2.imwrite(jpg_file_path, scaled_img)
如果您想围绕固定的 Window 中心和 Window 宽度执行此操作,则
def convert_file(dcm_file_path, jpg_file_path):
dicom_img = dicom.read_file(dcm_file_path)
img = dicom_img.pixel_array
scaled_img = cv2.convertScaleAbs(img-window_center, alpha=(255.0 /window_width)
cv2.imwrite(jpg_file_path, scaled_img)
我不知道如何在将 dicom 文件转换为 jpg 文件时设置 Window 宽度 Window 中心。
我完成了一个转换器应用程序,它可以通过 python 和 opencv 将 dicom 文件转换为 jpg 文件。
但是dicom文件和jpg文件有很大区别,因为我没有设置Window宽度和Window Center.However我不知道怎么设置它。
Window 中心为 -400,Window 宽度为 1500。
这是我的代码
# -*- coding: utf-8 -*-
#!/usr/bin/python
import os
import cv2
import dicom
def convert_file(dcm_file_path, jpg_file_path):
dicom_img = dicom.read_file(dcm_file_path)
img = dicom_img.pixel_array
cv2.imwrite(jpg_file_path, img)
if __name__ == '__main__':
rootdir = "D:\CT\A7"
for parent, dirnames, filenames in os.walk(rootdir):
for filename in filenames:
if '.dcm' in filename.lower():
dicom_path = os.path.join(parent, filename)
name = dicom_path.replace('\', '_')[3:]
jpg_path = "d:\CT_JPG\%s.jpg" % name
print (jpg_path)
convert_file(dicom_path, jpg_path)
如果你真的想将 DICOM 图像保存为 jpg,而不是玩弄 Window 宽度和 Window 中心参数,如评论中所建议的,是为了便于查看时,我建议简单地将图像的比例(在 int16
中)标准化为 uint8
(这是正常 jpg/png/gif 图像的比例)。但是请注意,这会导致分辨率下降。
要将其保存为 jpg,一种可能的方法是进行以下修改:
def convert_file(dcm_file_path, jpg_file_path):
dicom_img = dicom.read_file(dcm_file_path)
img = dicom_img.pixel_array
scaled_img = cv2.convertScaleAbs(img-np.min(img), alpha=(255.0 / min(np.max(img)-np.min(img), 10000)))
cv2.imwrite(jpg_file_path, scaled_img)
如果您想围绕固定的 Window 中心和 Window 宽度执行此操作,则
def convert_file(dcm_file_path, jpg_file_path):
dicom_img = dicom.read_file(dcm_file_path)
img = dicom_img.pixel_array
scaled_img = cv2.convertScaleAbs(img-window_center, alpha=(255.0 /window_width)
cv2.imwrite(jpg_file_path, scaled_img)