Файл DICOM содержит серию изображений сканирования CAT. Есть ли реализация библиотеки DICOM на Java, которая может читать файлы и извлекать изображения, хранящиеся в них? Я хотел бы сохранить эти изображения в тип данных BufferedImage.Как читать содержимое файла DICOM в Java?
ответ
В Java:
Один из лучших статей для DICOM чтения в JAVA этой ссылки
Еще одна вещи, вам нужно дополнительное программное обеспечение, чтобы извлечь изображение без этой программы вы можете» t читать изображение и содержимое.
Jai-1_1_2_01-Lib-окон-i586-jdk.exe
jai_imageio-1_0_01-Lib-окна-i586-jre.exe
Поскольку DICOM изображения так высоко от разрешения.
Вам также нужен бит JDK32.
В веб-проекте: настроен путь Jre Path, установленный в пути JDK.
Вы, ребята, практически, как читать файл dicom, я работал с файлом diocm, а затем пишу этот ответ. –
Вы можете использовать dcm4che-3.3.X. Эта новая переработка сказочной структуры поставляется с полностью интегрированной библиотекой jai-imageio, и вам больше не нужно ее загружать и настраивать.
Чтение метаинформации файла Dicom является создателем файла org.dcm4che3.io.DicomInputStream
из файла dicom и синтаксического анализа потока с классом, реализующим интерфейс org.dcm4che3.io.DicomInputHandler
. Вы должны реализующий эти методы:
void readValue(DicomInputStream dis, Attributes attrs) throws IOException;
void readValue(DicomInputStream dis, Sequence seq) throws IOException;
void readValue(DicomInputStream dis, Fragments frags) throws IOException;
void startDataset(DicomInputStream dis) throws IOException;
void endDataset(DicomInputStream dis) throws IOException;
startDataset
и endDataset
методы запускаются, когда поток открыт/закрыт. Методы чтения вызываются при обнаружении атрибутов, последовательности или фрагментов. Вы можете увидеть полную реализацию выборки в dcm4che/dcm4che-tool/dcm4che-tool-dcmdump.
Для чтения DICOM изображения в java.awt.image.BufferedImage
вы должны получить javax.imageio.stream.ImageInputStream
из файла DICOM таким образом javax.imageio.ImageIO.createImageInputStream(dicomFile)
где dicomFile
является java.io.File
.
Если вам интересно, как работает этот простой код, это из-за плагина dcm4che-imageio
.
Снова вы можете увидеть полный пример реализации в dcm4che/dcm4che-tool/dcm4che-tool-dcm2jpg.
Очевидно, что вам необходим правильно настроить Maven pom.xml
со всеми зависимостями вам нужно, по крайней мере:
<dependencies>
<dependency>
<groupId>org.dcm4che</groupId>
<artifactId>dcm4che-imageio</artifactId>
<version>3.3.7</version>
</dependency>
<dependency>
<groupId>org.dcm4che</groupId>
<artifactId>dcm4che-imageio-rle</artifactId>
<version>3.3.7</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai_imageio</artifactId>
<version>1.2-pre-dr-b04</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.dcm4che.tool</groupId>
<artifactId>dcm4che-tool-common</artifactId>
<version>3.3.7</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>
, а также dcm4che Maven репо
<repositories>
<repository>
<id>www.dcm4che.org</id>
<name>dcm4che Repository</name>
<url>http://www.dcm4che.org/maven2</url>
</repository>
Надеется, что это помогает.
Я написал некоторое время назад некоторый код, который разрешил мне читать файлы «.dcm» и экспортировать их в массив типа данных BufferedImage.
Я использовал библиотеку dcm4che, что вы можете найти здесь: http://www.dcm4che.org/
В коде я написал я использовал эти классы:
import org.dcm4che3.imageio.plugins.dcm.*;
import org.dcm4che3.data.Tag;
import org.dcm4che3.io.DicomOutputStream;
Во-первых, я использовал метод, чтобы прочитать файл DICOM и получить его данные пикселя в растре:
static BufferedImage createBufferedImgdFromDICOMfile(File dicomFile) {
Raster raster = null ;
System.out.println("Input: " + dicomFile.getName());
//Open the DICOM file and get its pixel data
try {
Iterator iter = ImageIO.getImageReadersByFormatName("DICOM");
ImageReader reader = (ImageReader) iter.next();
DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam();
ImageInputStream iis = ImageIO.createImageInputStream(dicomFile);
reader.setInput(iis, false);
//Returns a new Raster (rectangular array of pixels) containing the raw pixel data from the image stream
raster = reader.readRaster(0, param);
if (raster == null)
System.out.println("Error: couldn't read Dicom image!");
iis.close();
}
catch(Exception e) {
System.out.println("Error: couldn't read dicom image! "+ e.getMessage());
e.printStackTrace();
}
return get16bitBuffImage(raster);
}
Затем я использовал этот метод, чтобы получить пиксели из растра previusly, созданный из D ИКОМ файл и поместить их в BufferImage с черным в белую ColorModel:
public static BufferedImage get16bitBuffImage(Raster raster) {
short[] pixels = ((DataBufferUShort) raster.getDataBuffer()).getData();
ColorModel colorModel = new ComponentColorModel(
ColorSpace.getInstance(ColorSpace.CS_GRAY),
new int[]{16},
false,
false,
Transparency.OPAQUE,
DataBuffer.TYPE_USHORT);
DataBufferUShort db = new DataBufferUShort(pixels, pixels.length);
WritableRaster outRaster = Raster.createInterleavedRaster(
db,
raster.getWidth(),
raster.getHeight(),
raster.getWidth(),
1,
new int[1],
null);
return new BufferedImage(colorModel, outRaster, false, null);
}
Если вы хотите экспортировать BufferImage в файл JPEG Вы можете использовать этот метод:
private static void outputJpegImage(BufferedImage outputImage, String outputPath) {
try {
File outputJpegFile = new File(outputPath);
OutputStream output = new BufferedOutputStream(new FileOutputStream(outputJpegFile));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(outputImage);
output.close();
} catch (IOException e) {
System.out.println("Error: couldn't write jpeg image! "+ e.getMessage());
e.printStackTrace();
}
System.out.println("Output: " + outputPath);
}
- 1. читать теги файла dicom в C#
- 2. Как читать содержимое файла
- 3. читать содержимое файла
- 4. Python Читать содержимое файла
- 5. Camel Читать содержимое файла
- 6. Как читать сжатые файлы DICOM
- 7. Как читать содержимое файла RC
- 8. Как читать содержимое неизвестного файла
- 9. Как читать MultiFrame DICOM Image
- 10. psexec читать содержимое файла
- 11. Как читать содержимое файла из файла?
- 12. Как читать содержимое файла Zipped без извлечения в java
- 13. Как читать содержимое текстового файла в <default.package> [Java]
- 14. Чтение файла dicom в C
- 15. Как читать содержимое файла В Erlang?
- 16. Как читать содержимое MAT-файла в MATLAB
- 17. Как читать содержимое файла в PHP
- 18. Gulp: Как читать содержимое файла в переменной?
- 19. Как читать двоичное содержимое файла в flex
- 20. Как читать содержимое файла в istringstream?
- 21. Как читать содержимое pdf-файла в iphone
- 22. Как читать содержимое заархивированного файла в codeigniter?
- 23. Как читать содержимое файла в переменной javascript?
- 24. Как читать содержимое файла Word в Php?
- 25. Как читать содержимое файла .dat в javascript?
- 26. Как читать содержимое файла CERT.RSA в Grails?
- 27. Как читать содержимое файла программно в Emacs?
- 28. Как читать содержимое защищенного паролем файла?
- 29. Как читать dicom пикселей в C++
- 30. Как читать содержимое файла Microsoft Visio с помощью java?
HTTP: // WWW .dcm4che.org/может помочь вам переслать. Также доступен список различных наборов инструментов [здесь] (http://www.schoech.de/diploma/toolkits.html). –