Как создать изображение из необработанных данных изображения DICOM - PullRequest
1 голос
/ 04 апреля 2009

У меня есть необработанные данные пикселей в byte[] из изображения DICOM. Теперь я хотел бы преобразовать этот byte[] в Image объект.

Я пытался:

Image img = Image.FromStream(new MemoryStream(byteArray));

но это не работает для меня. Что еще я должен использовать?

Ответы [ 7 ]

3 голосов
/ 04 апреля 2009

Одна вещь, о которой следует знать, это то, что «изображение» dicom не обязательно просто данные изображения. Формат файла dicom содержит гораздо больше, чем необработанные данные изображения. Это может быть где вы зависаете. Подумайте о том, чтобы проверить стандарт файла dicom, который вы можете найти по ссылке на статью в википедии для dicom. Это должно помочь вам понять, как анализировать информацию, которая вам действительно интересна.

1 голос
/ 13 мая 2011

Вы должны сделать следующее

  1. Определите тег PIXEL DATA из файла. Вы можете использовать FileStream для чтения побайтно.
  2. Считать данные пикселей
  3. Преобразовать его в RGB
  4. Создание объекта BitMap из RGB
  5. Используйте класс Graphics для рисования BitMap на панели.
1 голос
/ 09 марта 2011

Существует библиотека C # под названием EvilDicom (http://rexcardan.com/evildicom/), которую можно использовать для извлечения изображения из файла DICOM. В ней есть учебное пособие о том, как это сделать на веб-сайте.

1 голос
/ 13 сентября 2010

Пиксельные данные обычно (если не всегда) заканчиваются в конце данных DICOM. Если вы можете определить ширину, высоту, шаг и глубину цвета, можно перейти к значению элемента данных (7FE0,0010) и просто получить последующие байты. Это уловка, которую используют большинство обычных зрителей, когда они показывают изображения DICOM.

1 голос
/ 04 сентября 2009

Вы должны использовать GDCM.

Массовый DiCoM - это библиотека C ++ для медицинских файлов DICOM. Он автоматически переносится в python / C # / Java (используя swig). Он поддерживает RAW, JPEG 8/12/16 бит (с потерями / без потерь), JPEG 2000, JPEG-LS, RLE и дефлированный (zlib).

Это портативное устройство, которое, как известно, работает в большинстве систем (Win32, Linux, MacOSX).

См. Например:

0 голосов
/ 24 октября 2010

DICOM - нелепая спецификация, и я искренне надеюсь, что она будет пересмотрена в ближайшем будущем. Тем не менее, у Offis есть программный пакет "DCMTK", который достаточно хорош для преобразования димов с помощью различных популярных кодировок. Попытка пропустить вперёд файл x-bytes, вероятно, подойдет для одного файла, но если у вас есть том или несколько томов, вам нужна более надежная стратегия. Я использовал код преобразования DCMTK и просто взял биты изображения, прежде чем они перешли в pnm. Файл, который вы будете искать в DCMTK, это dcm2pnm или, возможно, dcmj2pnm, в зависимости от схемы кодирования.

У меня была проблема с окном шкалы, которое я исправил одним из флагов времени выполнения. DCMTK имеет открытый исходный код и поставляется с довольно простыми инструкциями по сборке.

0 голосов
/ 15 апреля 2009

Работаете ли вы с чистым стандартным файлом DICOM? Я поддерживаю парсер DICOM более двух лет и наткнулся на несколько действительно странных файлов DICOM, которые не полностью соответствуют стандарту (компании, реализующие свои «собственные» витые стандартные файлы DICOM). сбросить ваш байтовый массив в файл и проверить, может ли его программа просмотра изображений (irfanview, picassa или что-либо еще) показать его. Если ваш код работает с обычным потоком JPEG, то, исходя из моего опыта, 99,9999% вероятности, что это просто потому, что файл каким-то странным образом аннулирует стандарт (и поверьте, медицинские компании делают это много)

Также обратите внимание, что стандарт DICOM поддерживает несколько вариантов стандарта JPEG. Возможно, класс Bitmap не поддерживает данные, которые вы получаете из файла DICOM. Можете ли вы записать синтаксис передачи?

Вы можете прислать мне файл (если он не большой) yossi1981@gmail.com, я могу его проверить. Было время, когда я полгода редактировал файл DICOM в шестнадцатеричном формате.

...