0

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

详细信息:
我目前正在使用 Processing 制作狭缝扫描程序。本质上,我使用灰度图像从动画中挑选帧,并使用这些帧中的像素来制作新图像。

例如,如果灰度图像有一个黑色像素,它会在第一帧中获取相同的像素,并将其添加到图像中。如果它是一个白色像素,它对最后一帧做同样的事情。
中间的任何东西,自然会选择中间的帧。

要点是,如果提供水平渐变和日落视频,那么您将在左侧看到日落的开始,然后慢慢过渡到右侧的结尾。

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

这将我限制为仅使用 256 帧作为源动画,或者忍受像素化、不平滑的最终图像。

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

有没有可以做到这一点的Java库?比如说,我可以提供一个 HDR Tiff 或 TGA 图像文件,并且能够从中读取全范围的颜色吗?

谢谢,

4

1 回答 1

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 的全彩色图像。

于 2013-09-29T11:13:50.253 回答