我使用NetBeans平臺在Java中製作DesktopApp。在我的應用程序中,我使用了16位,tiff,灰度圖像和對該圖像的處理。現在,我想使用16位,tiff,灰度圖像(或16位圖像的數據)製作32位,tiff,灰度圖像。那麼我怎樣才能將16位圖像轉換爲java中的32位圖像?如何將16位,TIFF,灰度圖像轉換爲32位,TIFF,在Java中的灰度圖像?
1
A
回答
0
你需要做的是通過一個圖像處理器對象,然後校準它。也許有些事情是這樣的:
import java.awt.*;
import java.awt.image.*;
import ij.*;
import ij.gui.*;
import ij.measure.*;
/** converting an ImagePlus object to a different type. */
public class ImageConverter {
private ImagePlus imp;
private int type;
private static boolean doScaling = true;
/** Construct an ImageConverter based on an ImagePlus object. */
public ImageConverter(ImagePlus imp) {
this.imp = imp;
type = imp.getType();
}
/** Convert your ImagePlus to 32-bit grayscale. */
public void convertToGray32() {
if (type==ImagePlus.GRAY32)
return;
if (!(type==ImagePlus.GRAY8||type==ImagePlus.GRAY16||type==ImagePlus.COLOR_RGB))
throw new IllegalArgumentException("Unsupported conversion");
ImageProcessor ip = imp.getProcessor();
imp.trimProcessor();
Calibration cal = imp.getCalibration();
imp.setProcessor(null, ip.convertToFloat());
imp.setCalibration(cal); //update calibration
}
/** Set true to scale to 0-255 when converting short to byte or float
to byte and to 0-65535 when converting float to short. */
public static void setDoScaling(boolean scaleConversions) {
doScaling = scaleConversions;
IJ.register(ImageConverter.class);
}
/** Returns true if scaling is enabled. */
public static boolean getDoScaling() {
return doScaling;
}
}
這樣你的校正圖像被設置爲32位,有史以來輸入可能是什麼。記得要輸入正確的罐子。
+0
感謝回覆me.But我不想使用ImageJ API。我想使用Java的API而不是第三方API。 – Jay
+0
好吧,如果您正在尋找內置的API,那麼請查找BufferedImage類。它所做的是,它將從一個圖像獲取RGB值並將值存儲在另一個圖像中。 BufferedImage類然後爲你做轉換。 –
0
如果您的TIFF加載爲一個BufferedImage,可以減少這樣說:
BufferedImage convert(BufferedImage image) {
ColorSpace colorSpace = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorModel colorModel = new ComponentColorModel(
colorSpace, false, false, Transparency.OPAQUE,
DataBuffer.TYPE_USHORT);
BufferedImageOp converter = new ColorConvertOp(colorSpace, null);
BufferedImage newImage =
converter.createCompatibleDestImage(image, colorModel);
converter.filter(image, newImage);
return newImage;
}
相關問題
- 1. 在.Net 2.0中將8位灰度tiff圖像轉換爲8位灰度jpg
- 2. 如何在Java中將16位.tiff圖像轉換爲8位.tiff圖像?
- 3. 閱讀16位灰度TIFF
- 4. 如何將16位灰度圖像轉換爲java中的RGB圖像?
- 5. Python將32位轉換爲16位tiff
- 6. iOS - 如何將png圖像轉換爲4位位圖灰度?
- 7. 在java中轉換8位灰度RAW圖像中的圖像
- 8. 將圖像轉換爲灰度圖像
- 9. 轉換8位灰度級圖像以7位灰度級圖像
- 10. 着色灰度16位圖像
- 11. cvSobel與16位灰度圖像
- 12. OpenCV - 讀取16位灰度圖像
- 13. Emgu Cv和16位灰度圖像
- 14. 如何將32位RGBA圖像轉換爲保存灰度圖的alpha
- 15. 圖像處理 - 在Matlab TIFF圖像在灰度
- 16. 將RGB圖像轉換爲灰度和灰度轉換爲RGB圖像?
- 17. 如何將16位灰度圖像寫入爲jpeg?
- 18. 讀取16位灰度TIFF文件的像素值(但只有前12位)
- 19. 位圖8位灰度圖像在C
- 20. MATLAB/Opencv:將24位RGB圖像轉換爲16位灰色
- 21. 如何在C#中將32bpp圖像轉換爲16 bpp圖像? (灰度)
- 22. 如何將捕獲的位圖轉換爲8位圖像作爲灰度?
- 23. 16位灰度
- 24. 我如何創建一個16位的灰度圖像與java
- 25. 將32bpp位圖轉換爲16bpp(灰度)
- 26. SciPy的:轉換RGB TIFF爲灰度TIFF和輸出它Matplotlib
- 27. 16位圖像轉換爲32位
- 28. 16位灰度png圖像的Python圖像處理
- 29. 將簡單圖像轉換爲灰度
- 30. 將圖像轉換爲灰度
你知道,如果你這樣做,你不會得到任何新的數據? –
http://stackoverflow.com/questions/1177059/converting-a-32bpp-image-to-a-16bpp-image-in-java這是儲備轉換 –
@NikolayKuznetsov感謝您的回覆early.Linked給你是爲ARGB圖像,但是im圖像是灰度圖像而不是ARGB或RGB。那麼我怎麼做轉換? – Jay