Как исправить проблемы с цветом и сохранить обратно pydicom после редактирования с помощью cv2 - PullRequest
0 голосов
/ 12 июня 2019

Я сталкиваюсь с некоторыми проблемами при редактировании цветного массива изображений dicom с использованием cv2 и сохранении его обратно в 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

...