2016-02-19 2 views
2

Я пишу работу, которая преобразует ДХМЫ в JPG изображений, используя DICOM каменьLoadError: не может загрузить такой файл - RMagick с DICOM жемчужиной

здесь код

require 'RMagick' 
require 'dicom' 
include Magick 
include DICOM 


class DicomtojpgJob < ActiveJob::Base 
    queue_as :dicom 

    def perform(*args) 
    puts "were are here" 
    dcm_filename = args[0] 
    dcm = DObject.read(dcm_filename) 
    puts dcm.summary 
    dcm_image = dcm.image 
    name = dcm_filename.split('.') 
    dcm_image.normalize.write(name[0]+".jpg") 

    # img = ImageList.new("IM-0004-0044.jpg") 
    # img.display 
    # args[0].update_attributes(:asset_path_url) 
    puts args[0] 

    exit 
    end 

end 

вот что я получаю на консоли

DICOM Object Properties:Byte Order (CPU):  Little Endian 
------------------------------------------- 
Source:    File (successfully read): /home/aditya/orthoweb/public/patient-summary-assets/56c6b0b943fe4728c8000007_photo_20160219_122843.dcm 

DICOM Object Properties: 

Modality:    MR Image Storage------------------------------------------- 

Source:    File (successfully read): /home/aditya/orthoweb/public/patient-summary-assets/56c6b0b943fe4728c8000007_photo_20160219_151307.dcm 
Modality:    MR Image Storage 
Meta Header:   Yes 
Value Representation: Explicit 
Byte Order (File): Little Endian 
Pixel Data:   Yes 
Image Size:   512*288 
Number of frames:  1 
Meta Header:   YesPhotometry:   MONOCHROME2 
Compression:   JPEG 2000 Image Compression 

Value Representation: ExplicitBits per Pixel:  16 

Byte Order (File): Little Endian------------------------------------------- 

Pixel Data:   Yes 
Source:    File (successfully read): /home/aditya/orthoweb/public/patient-summary-assets/56c6b0b943fe4728c8000007_photo_20160219_151307.dcm 
Modality:    MR Image Storage 
Image Size:   512*288Meta Header:   Yes 
Value Representation: Explicit 

Number of frames:  1Byte Order (File): Little Endian 

Photometry:   MONOCHROME2Pixel Data:   Yes 
Image Size:   512*288 

Number of frames:  1Compression:   JPEG 2000 Image Compression 

Bits per Pixel:  16Photometry:   MONOCHROME2 

-------------------------------------------Compression:   JPEG 2000 Image Compression 

Source:    File (successfully read): /home/aditya/orthoweb/public/patient-summary-assets/56c6b0b943fe4728c8000007_photo_20160219_122843.dcmBits per Pixel:  16 

Modality:    MR Image Storage 
Meta Header:   Yes 
Value Representation: Explicit 
Byte Order (File): Little Endian 
Pixel Data:   Yes 
Image Size:   512*288 
Number of frames:  1 
2016-02-19T10:07:18.291Z 17868 TID-1ho0x0 DicomtojpgJob JID-4fc6a66b41be878a632b7d9e INFO: fail: 0.014 sec 
2016-02-19T10:07:18.291Z 17868 TID-1ho0x0 WARN: {"class"=>"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper", "wrapped"=>"DicomtojpgJob", "queue"=>"dicom", "args"=>[{"job_class"=>"DicomtojpgJob", "job_id"=>"345b5c25-82fb-49e7-a59d-b4a5eaf971b6", "queue_name"=>"dicom", "arguments"=>["/home/aditya/orthoweb/public/patient-summary-assets/56c6b0b943fe4728c8000007_photo_20160219_151307.dcm"]}], "retry"=>true, "jid"=>"4fc6a66b41be878a632b7d9e", "created_at"=>1455874987.2288666, "enqueued_at"=>1455876438.270517, "error_message"=>"cannot load such file -- rmagick", "error_class"=>"LoadError", "failed_at"=>1455874987.2376463, "retry_count"=>6, "retried_at"=>1455876438.2907836} 
Photometry:   MONOCHROME2 
Compression:   JPEG 2000 Image Compression 
Bits per Pixel:  162016-02-19T10:07:18.291Z 17868 TID-1ho0x0 WARN: LoadError: cannot load such file -- rmagick 

Я последовал за эту проблему на странице GitHub here Он предположил, что если я могу преобразовать изображение в ДХМАХ JPG непосредственно с помощью комм и convert -debug module IM-0001-0001.dcm IM.jpg, тогда dicom не должен показывать никаких ошибок. я могу конвертировать его в JPG с помощью консоли, но DICOM бросает error 2016-02-19T09:24:03.960Z 14165 TID-1kcakw WARN: LoadError: cannot load such file -- rmagick

Как я могу это исправить

+0

У вас установлен делегат JPEG2000? Можете ли вы поделиться изображением DICOM для тестирования? –

+1

перейдите по этому адресу http://www.osirix-viewer.com/datasets/ и загрузите первую почтовую папку – Supertracer

+1

@Mark Setchell, как я могу проверить, что у меня установлен делегат JPEG2000? – Supertracer

ответ

0

Проблема была установлена ​​путем обновления RMagick до 2.13.4 или более поздней версии.

0

Я скачал первый файл из репозитория вы предложили и побежал следующую команду:

convert -debug module IM-0001-0001.dcm a.jpg 

Выход

2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1286/Module 
    Searching for module "DCM" using filename "dcm.la" 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/GetMagickModulePath/556/Module 
    Searching for coder module file "dcm.la" ... 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1295/Module 
    Opening module at path "/usr/local/Cellar/imagemagick/6.9.3-0_2/lib/ImageMagick//modules-Q16/coders/dcm.la" 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1322/Module 
    Method "RegisterDCMImage" in module "DCM" at address 0x1076bd758 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1336/Module 
    Method "UnregisterDCMImage" in module "DCM" at address 0x1076c0ff2 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1286/Module 
    Searching for module "JP2" using filename "jp2.la" 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/GetMagickModulePath/556/Module 
    Searching for coder module file "jp2.la" ... 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1295/Module 
    Opening module at path "/usr/local/Cellar/imagemagick/6.9.3-0_2/lib/ImageMagick//modules-Q16/coders/jp2.la" 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1322/Module 
    Method "RegisterJP2Image" in module "JP2" at address 0x1076e3a24 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1336/Module 
    Method "UnregisterJP2Image" in module "JP2" at address 0x1076e572e 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1286/Module 
    Searching for module "JPEG" using filename "jpeg.la" 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/GetMagickModulePath/556/Module 
    Searching for coder module file "jpeg.la" ... 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1295/Module 
    Opening module at path "/usr/local/Cellar/imagemagick/6.9.3-0_2/lib/ImageMagick//modules-Q16/coders/jpeg.la" 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1322/Module 
    Method "RegisterJPEGImage" in module "JPEG" at address 0x107e9ce7c 
2016-02-19T12:25:56+00:00 0:00.000 0.000u 6.9.3 Module convert[86871]: module.c/OpenModule/1336/Module 
    Method "UnregisterJPEGImage" in module "JPEG" at address 0x107ea07b3 

enter image description here

Я думаю, проблема в том, что вам не хватает модуля JPEG2000. Вы можете проверить установленные делегаты с помощью

identify -version 

Version: ImageMagick 6.9.3-0 Q16 x86_64 2016-02-19 http://www.imagemagick.org 
Copyright: Copyright (C) 1999-2016 ImageMagick Studio LLC 
License: http://www.imagemagick.org/script/license.php 
Features: Cipher DPC Modules 
Delegates (built-in): bzlib fontconfig freetype jng jp2 jpeg lcms ltdl lzma openexr png tiff webp x xml lib 

Здесь вы видите, что у меня есть jp2. Если вам не хватает этого модуля, при установке и запуске ./configure, попробуйте добавить следующее выяснить, какие переключатели вам нужно:

./configure --help | grep -Ei "JP|2000" 

Затем запустите configure и make и make install обычным способом.

+1

, это отлично работает и для меня, проблема в том, когда я пытаюсь преобразовать его, используя драгоценный камень dicom через Job in rails – Supertracer

+0

О, YIKES! Вы намного превосходите мою сферу знаний - я могу только представить, что где-то есть файл конфигурации Ruby, который должен знать путь к делегатам ImageMagick или разделяемым библиотекам. Можете ли вы получить более подробный отладочный вывод из своего Rails-проекта? Или попробуйте выполнить более простое задание, которое не требует JPEG2000 - например. 'convert image.gif image.jpg'? –

0

Он все еще не работает с RMagick. Но работает отлично с mini_magick

требуют '' mini_magick

DICOM.image_processor =: mini_magick

Смежные вопросы