用于加载HDR /高位图像并访问其像素值的库/方法?

时间:2013-09-23 14:20:33

标签: java processing hdrimages hdr

短;
我需要从提供的高色深图像中获取特定像素的值。

详细说明:
我目前正在使用Processing来制作Slit扫描程序。 基本上,我使用灰度图像从动画中选取帧,并使用这些帧中的像素来制作新图像。

例如,如果灰度图像具有黑色像素,则它在第一帧中采用相同的像素,并将其添加到图像中。 如果它是一个白色像素,它与最后一帧相同。
当然,任何介于两者之间的东西都会在中间选择框架。

要点是,如果提供水平渐变和日落的视频,那么左边的日落开始,慢慢过渡到右边的结尾。

我的问题是,当使用Processing时,我似乎只能获得灰度值 0-255使用默认库。
黑色= 0
白= 255

这限制了我只使用256帧进行源动画,或者使用像素,不平滑的结束图像。

我真的需要能够提供更大范围内的像素值,从而获得像素值。 说,
黑色= 0
白= 65025

有没有可以执行此操作的Java库?我可以提供一个HDR Tiff或TGA图像文件,并能够从中读取全部颜色吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

好的,为此找到了一个很棒的图书馆; https://code.google.com/p/pngj/

支持完整的PNG功能集 - 包括16位灰度或全彩色图像。 允许我从图像中检索行,然后从这些行中检索像素。

PngReader pngr = new PngReader(new File(filename));
tmrows = pngr.readRows();
ImageLineInt neededline = (ImageLineInt)tmrows.getImageLine(y);

if (neededline.imgInfo.greyscale==true){

   //get the right pixel for greyscale
     value = neededline.getScanline()[x];

} else {          

   //get the right pixel for RGB
     value  = neededline.getScanline()[x*3];
}

您只需乘以3,因为扫描线由RGBRGBRGB(等)组成,用于没有alpha的全彩色图像。