はじめに
UCLA が、ライブラリを出しているので、使ってみた。http://www.rip.ucla.edu/~shah/dicom/
を、動かした。とりあえず、動いてるっぽい。 なお、データは、以下のDICOMデータを使った。http://members.tripod.com/~clunis_immensus/free3d/sample_data.htm
でも、次に、DICOMをJPEGに変換しようとしているのだが、画像が真っ黒になる...原因は何だろう...
サンプル
dicomTool.java
package dicom; import java.util.*; import javax.imageio.*; import javax.imageio.stream.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; import edu.ucla.rip.imageio.*; public class dicomTool { public dicomTool() { } public int getDicomWidth(String inputFilePath) throws Exception { BufferedImage image = ImageIO.read(new File(inputFilePath)); return image.getWidth(); } public int getInstance(String inputFilePath) throws Exception { File file = new File(inputFilePath); Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("dcm" ); ImageReader reader = (ImageReader)readers.next(); reader.setInput(new FileImageInputStream(file), true); // get the header as a hashtable Hashtable<?, ?> header = ((DICOMImageReader)reader).getDICOMHashtable(); int instance = Integer.parseInt( (String)DICOMElement.getValueFromHash(header, 0x00200013)); return instance; } public boolean convertDicomToJpeg( String inputFilePath, String outputFilePath) throws Exception { // DICOM読み込み File inputFile = new File(inputFilePath); Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("dcm" ); ImageReader reader = (ImageReader)readers.next(); reader.setInput(new FileImageInputStream(inputFile), true); BufferedImage image = ((DICOMImageReader)reader).read(0, null); reader.dispose(); // JPEG書き込み // Open output file. FileOutputStream out = new FileOutputStream(outputFilePath); // Create jpeg encoder. JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); // Set Parameter. JPEGEncodeParam encodeParam = encoder.getDefaultJPEGEncodeParam(image); // Encode. encoder.encode(image, encodeParam); // Close output file. out.close(); return true; } }
参考資料
http://www.sol.dti.ne.jp/~yoshinor/japplication/japp1007.htmlhttp://www.cappuccino.jp/keisuken/java/com_sun_image_jpeg.html
http://www.javainthebox.net/laboratory/JDK1.4/Graphics/ImageIO/ImageIO.html
http://samucs.blogspot.com/2008/03/converting-dicom-to-jpeg-using-dcm4che.html