读取16位灰度tiff

时间:2013-06-14 00:33:39

标签: scala tiff

我正在编写一个scala程序,需要能够读取16位灰度tiff图像并对各个像素进行一些复杂的计算。

具体来说,我希望一个库能够从tiff文件中获取所有像素强度值的Array [Int],并能够从这样的数据结构中写入图像。

我的问题是库能够做到这一点吗?

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

你可以用它 https://github.com/sksamuel/scrimage

val in = getInputStreamForImage
val tiff = TiffReader.read(in)
val pixels = tiff.pixels
val components = tiff.argb 

然后像素是Array [Int],其中每个元素是ARGB像素。组件是Array [Array [Int]],其中每个数组元素是一个四个整数数组 - 一个用于alpha,reg,green,blue

答案 1 :(得分:0)

我最终使用imageJ API来解决这个问题。这里有一篇关于API的优秀文章:http://albert.rierol.net/imagej_programming_tutorials.html#ImageJ编程基础

此块会为您提供一个ShortProcessor(http://rsb.info.nih.gov/ij/developer/api/ij/process/ShortProcessor.html),您可以使用它来查询单个像素或获取所有像素的Array [Short]转储。

val opener = new Opener()
val imp = opener openImage path
val sp = (imp.getProcessor()).convertToShort(false)

此外,这是你想要的sbt行

libraryDependencies += "gov.nih.imagej" % "imagej" % "1.46"