【发布时间】:2013-06-28 22:03:35
【问题描述】:
我需要将灰度图像的像素强度数据的二维数组转换回图像。我试过这个:
BufferedImage img = new BufferedImage(
regen.length, regen[0].length, BufferedImage.TYPE_BYTE_GRAY);
for(int x = 0; x < regen.length; x++){
for(int y = 0; y<regen[x].length; y++){
img.setRGB(x, y, (int)Math.round(regen[x][y]));
}
}
File imageFile = new File("D:\\img\\conv.bmp");
ImageIO.write(img, "bmp", imageFile);
其中“regen”是一个二维双精度数组。我得到一个相似但不准确的输出。很少有像素与它必须是完全相反的(对于值为 255 的像素,我得到黑色)。很少有灰色阴影也被视为白色。你能告诉我我做错了什么吗?
【问题讨论】:
-
黑暗中的一枪:从 double 到 int 可能存在舍入问题?
-
不,我猜这不是问题..大多数像素已经是整数。它们只是在一个双数组中。同样对于剩下的几个,像素值太接近整数了。例如:我有 254.9999999999 为 255,所以它必须四舍五入到 255。
标签: java image image-processing