如何修复颜色问题并在使用cv2编辑后保存回pydicom

问题描述 投票:0回答:1

我在使用cv2编辑彩色dicom图像阵列并将其保存回dicom时遇到了一些问题(对于“ US-RGB-8-epicard”)。我可以使用黑白和灰度图像来做到这一点,但不能使用彩色图像,因为保存像素时像素会失真。

在此上花了2天,但似乎做对了。任何帮助或指导,我们将不胜感激。谢谢!

DICOM文件和代码:https://drive.google.com/drive/folders/15ePCY0tcu1YUxN036ShysAlRYyPLEJ76?usp=sharing

我尝试过的事情:

-将其另存为jpeg(没有问题,但我需要在.dcm中使用它]

-将其保存为.dcm图像的黑白图像(但我需要彩色显示)

#Import the packages
import pydicom
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import hashlib
import os
import cv2


#First Image (No problems with black & white)
os.chdir(r"C:\Users\\Win\\Desktop\\sample_image") 
dataset = pydicom.dcmread('OBXXXX1A.dcm') 

image = dataset.pixel_array
h, w= image.shape
ModifiedImage = cv2.rectangle(image, (0,0), (w,int(.1*h)), (0, 0, 0), -1)

dataset.PixelData = ModifiedImage.tobytes()
dataset.save_as('OBXXXX1A-edited.dcm')


#Second Image (Problems with color)
os.chdir(r"C:\Users\\Win\\Desktop\\sample_image") 
dataset = pydicom.dcmread('US-RGB-8-epicard') 

image = dataset.pixel_array
h, w, _ = image.shape
ModifiedImage = cv2.rectangle(image, (0,0), (w,int(.1*h)), (255, 255, 255), -1)
#ModifiedImage = cv2.rectangle(image[:,:,2], (0,0), (w,int(.1*h)), (255, 255, 255), -1) #Get only black & white
cv2.imshow('image',ModifiedImage) #What I want

dataset.PixelData = ModifiedImage.get().tobytes()
dataset.save_as('US-RGB-8-epicard-(edited).dcm') #What I get

原始图像:https://drive.google.com/file/d/1K1DdHh7qRGkmuP3fNv4gxacJGKun4jq_/view?usp=sharing

我想要的:https://drive.google.com/file/d/1sLPwuf_IzcTetUSzbi9N5x-CeFoGpzeB/view?usp=sharing

我得到的是:https://drive.google.com/file/d/1blbj357OAXFSQAqIxsOUoKt8DVxpNc5I/view?usp=sharing

python python-3.x opencv cv2 pydicom
1个回答
0
投票

嘿,我遇到了同样的问题。您解决了吗?

[我正在考虑仅使用dcmtk将图像转换为dicom,然后从原始文件的pydicom.dcmread复制元数据。

© www.soinside.com 2019 - 2024. All rights reserved.