Я хотел бы отобразить изображение DICOM в моей программе java. Я использую pixelmed. Однако я обнаружил, что я не могу правильно отобразить правильный контраст. Контраст слишком низкий.Dicom bufferedImage from pixelmed имеет низкий контраст
Вот мой код:
(SourceImage класс обеспечивается PixelMed, chosenImageFile.getPath() только путь к DICOM файла.)
SourceImage dimg = new SourceImage(chosenImageFile.getPath());
BufferedImage image = dimg.getBufferedImage();
BufferedImage source = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = source.createGraphics();
g2d.drawImage(image, 0, 0, null);
dicomImgDisplayer1.setImage(source);
dicomImgDisplayer1 является классом расширения JPanel , setImage() этого класса JPanel вызовет setImage() класса JFrame.
setImage Класс JFrame (в) код:
public void setImage(BufferedImage image) {
this.image = image;
setPreferredSize(new Dimension(image.getWidth(), image.getHeight()));
repaint();
revalidate();
}
public void paint(Graphics graphics) {
Graphics2D g2d = (Graphics2D) graphics;
g2d.drawImage(image, null, 0, 0);
}
Это что-то неправильно с моделью цвета? Пожалуйста помоги. Благодарю.
Означает ли изображение другое в другом приложении или вы предполагаете, что контраст неправильный? Какова цветовая модель исходного изображения? – Nanhydrin
@ Нангидрин, я не знаю цветовую модель. Но это выглядит по-другому, когда я открываю его в другом приложении. – user3241775
Вы всегда можете попробовать напечатать цветовую модель (например: 'System.out.println (source.getColorModel())'), чтобы узнать, дает ли это нам некоторые подсказки. И, может быть, после некоторых снимков экрана, сравнивая «другое приложение» с вашим? Вы пытались использовать 'ColorConvertOp' вместо того, чтобы просто рисовать на RGB' BufferedImage'? Это может быть более точным в цветовых преобразованиях ICC. – haraldK