我正在编写一个scala程序,需要能够读取16位灰度tiff图像并对各个像素进行一些复杂的计算。
具体来说,我希望一个库能够从tiff文件中获取所有像素强度值的Array [Int],并能够从这样的数据结构中写入图像。
我的问题是库能够做到这一点吗?
感谢您提供的任何帮助。
答案 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"