Проблема:
Я пытался читать медицинские изображения с расширением .dcm.Но получал ошибку как в Windows, так и в Ubuntu.Я нахожу решение, которое будет работать как на обработанном.
Ошибка, которую я получил в Ubuntu: NotImplementedError: этот синтаксис передачи JPEG 2000 Image Compression (Lossless Only) не может быть прочитан, потому что в Pillow отсутствует jpeg 2000плагин декодера
(обратите внимание, что для Windows я получил другую ошибку, но я уверен, что это из-за той же проблемы, то есть Pillow не поддерживает формат JPEG 2000)
Информация о платформе:
- Я использую: Python 3.6, Anaconda и Ubuntu, 15 ГБ ОЗУ
ОЗУ имеет важное значение:
Я применил решение, аналогичное описанному выше Али.Но я хочу добавить, что эта установка может занять некоторое время (в зависимости от используемой оперативной памяти).В Ubuntu, где я использую 15 ГБ ОЗУ, на платформе Cloud требуется меньше времени, а в Windows на локальной машине, где 4 ГБ ОЗУ заняло много времени.
Решение
Анаконда необходима.Почему? Пожалуйста, проверьте официальный документ Pydicom (https://pydicom.github.io/pydicom/dev/getting_started.html) упомянутое "Чтобы установить Pydicom вместе с обработчиками изображений для сжатых данных пикселей, мы рекомендуем вам использовать Miniconda или Anaconda" (Примечание для Windows, я получалдругая ошибка)
Если вы используете Ubuntu, откройте терминал напрямую. Если вы используете Windows, то на Anaconda Navigator перейдите в «Среда» отсюда, запустите терминал. Выполните на нем следующие команды:
pip install -U git+https://github.com/pydicom/pydicom.git
conda install pydicom --channel conda-forge
conda install -c conda-forge gdcm
Перекрестная проверка:
Сейчас используется .dcm
файл, для которого мы получили ошибку. Попробуйте использовать следующий код в записной книжке Python
filename = 'FileName.dcm'
ds = pydicom.dcmread(filename)
plt.imshow(ds.pixel_array, cmap=plt.cm.bone)
. Он должен напечатать вывод. Также попробуйте этот код:
ds.pixel_array
Это будетдать вам массив, содержащий значения.