У меня есть свой собственный кодер и декодер изображений. Я хочу читать изображения DICOM, извлекать пиксели несжатого изображения, сжимать их с помощью моего кодера, а затем записывать эти сжатые пиксели обратно в файл DICOM вместо несжатых пикселей. Декодер сделал бы обратное. Это возможно сделать в Imebra? Я могу читать теги и пиксели, но после их сжатия я не уверен, как вернуть их обратно (они в настоящее время находятся в буфере char *), или если это вообще возможно. Я использую Imebra в C ++.
Кроме того, было бы хорошо, если бы я мог создать совершенно новый файл DICOM, но в этом случае мне нужно было бы легко перенести все теги DICOM из старого файла.
Если это невозможно в Imebra, есть ли какая-либо другая библиотека C ++, которая позволяет это?
Редактировать:
Спасибо за ответ, Паоло. Тем не менее, исходное изображение DICOM все еще остается неизменным (используя второй вариант). Можете ли вы сказать, что я делаю что-то явно не так здесь?
std::unique_ptr<imebra::DataSet> loadedDataSet(imebra::CodecFactory::load(imgNameM));
imebra::WritingDataHandlerNumeric* dataHandler = loadedDataSet->getWritingDataHandlerRaw(imebra::TagId(imebra::tagId_t::PixelData_7FE0_0010), 0);
dataHandler->assign(buffer, size);
delete dataHandler;
Загруженный DataSet не пуст, я проверил с помощью bufferExists.
Изменить 2:
Да, я не сохранил это. Теперь я добавил эту строку и сумел изменить элемент PixelData, который решил мою первоначальную проблему. Благодарю. Однако некоторые другие части файла теперь также автоматически изменяются. В начале файла добавлено более 100 пустых байтов, хотя это меня не сильно беспокоит. Что меня беспокоит, так это то, что (0008 0005) тег «Определенный набор символов» теперь добавлен, а его значение не установлено (оно пустое), что затем вызывает CharsetConversionNoTableError при попытке прочитать теги этого измененного файла. Если я удаляю этот тег вручную и фиксирую длину группы, я могу читать теги нормально. Есть ли возможность избежать такого поведения?
Imebra уже предоставляет кодер / декодер для JPEG без потерь, базовой линии и расширенного JPEG, RLE.
Есть несколько способов добавить свой собственный кодек в Imebra:
Других решений пока нет …