2016-04-04 8 views
1

В настоящее время я использую DCMTK на C++. Я совершенно новичок в этом наборе инструментов, но, насколько я понимаю, я должен иметь возможность читать центр окна и ширину для целей нормализации.Dicom Toolkit (DCMTK) - Как получить Window Center и Width

У меня есть объект DicomImage DCM_image с данными Dicom. Я прочитал значения для объекта opencv Mat. Однако сейчас я хочу их нормализовать. Ниже показано, как я читаю и передаю данные в opencv Mat.

DicomImage DCM_image("test.dcm"); 
    uchar *pixelData = (uchar *)(DCM_image.getOutputData(8)); 
    cv::Mat image(int(DCM_image.getHeight()), int(DCM_image.getWidth()), CV_8U, pixelData); 

Любая помощь приветствуется. Спасибо

ответ

0

Центр и ширина окна для чтения не сложны, однако вам нужно использовать другой конструктор и передать DcmDataset на изображение.

DcmFileFormat file; 
file.loadFile("test.dcm"); 
DcmDataset* dataset = file.getDataset() 
DicomImage image(dataset); 
double windowCenter, windowWidth; 
dataset->findAndGetFloat64(DcmTagKey(0x0010, 0x1050), windowCenter); 
dataset->findAndGetFloat64(DcmTagKey(0x0010, 0x1051), windowWidth); 

Но на самом деле я не думаю, что это хорошая идея применить окно к изображению при загрузке. Окно - это то, что должно быть настраиваемо пользователем. Атрибуты Window Center и Window Width позволяют использовать несколько значений, которые можно применить для настройки окна в интересующий оттенки серого («VOI», значения, представляющие интерес).

Если вы действительно хотите создать оконное изображение, вы можете использовать свой код для создания изображения из содержимого файла и использовать один из методов createXXXImage, который предоставляет DicomImage.

HTH

+0

Я вижу. Что делать, если я хотел создать изображение Dicom с использованием оконного окна и ширины окна, найденных вышеуказанным кодом? это можно сделать? – user3126802

+0

DicomImage имеет метод setWindow, затем вы можете использовать createMonochromeImage() для получения результата. Возможно, вы захотите посмотреть исходный код dcm2pnm –

+0

Спасибо @kritzel_sw, решили проблему с вашими предложениями! – user3126802