2015-01-06 132 views
1

我正在尋找一種方法來讀取Java中的壓縮DICOM文件。 DICOM使用Jpeg2000進行壓縮。 Java高級映像IO在MAC OS中沒有庫,所以我在使用DCM4CHE時遇到了麻煩。 ImageJ也不支持壓縮的DICOM文件。如何讀取壓縮的DICOM文件

File myDicomFile = new File("IM-0001-0001.dcm"); 
    try { 
     DicomInputStream dis = new DicomInputStream(myDicomFile); 
     Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM"); 
     ImageReader reader = (ImageReader) iter.next(); 
     DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam(); 
     ImageInputStream iis = ImageIO.createImageInputStream(myDicomFile); 
     reader.setInput(iis, false); 
     BufferedImage bi = reader.read(0, param); 

     File myJpegFile = new File("IM-0001-0001.jpg"); 
     OutputStream output = new BufferedOutputStream(new FileOutputStream(myJpegFile)); 
     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output); 
     encoder.encode(bi); 
     output.close(); 
    } catch (Exception e) { 
     System.out.println(e.getStackTrace()); 
    } 

上面的代碼可與未壓縮DICOMs但壓縮DICOMs它提供了以下錯誤:

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.sun.medialib.codec.jp2k.Decoder.decode_init(Ljavax/imageio/stream/ImageInputStream;J)J 
at com.sun.medialib.codec.jp2k.Decoder.decode_init(Native Method) 
at com.sun.medialib.codec.jp2k.Decoder.<init>(Decoder.java:53) 
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KRenderedImageCodecLib.<init>(J2KRenderedImageCodecLib.java:158) 
at com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderCodecLib.read(J2KImageReaderCodecLib.java:367) 
at org.dcm4che3.imageio.plugins.dcm.DicomImageReader.read(DicomImageReader.java:284) 
at Main.main(Main.java:31) 

任何建議,將不勝感激。

回答

1

您可以使用GDCM/java綁定。請參閱以下example以供參考。