如何使用ImageJ API向图像添加颗粒

时间:2012-09-17 15:02:08

标签: api imagej

我是ImageJ的新手,我正在寻求使用ImageJ的编程API将添加纹理(如此处定义:http://en.wikipedia.org/wiki/Film_grain)添加到图像中。

  • 有可能吗?如果是这样的话?
  • 关于添加谷物的相关文件/ Javadocs在哪里? 到使用ImageJ的图像?

2 个答案:

答案 0 :(得分:2)

我从Process > Noise开始,在ImageJ User Guide: §29.6 Noise中描述。您必须决定是否可以实现现有的实施以满足您的要求。

  

我可以在哪里找到有关如何使用实际API而不是UI 实现此目的的文档。

ImageJ Macro Language中所述,一种简单的方法是启动Plugin > Macros > Record,然后运行所需的GUI命令。这将显示宏命令名称和任何设置,例如:

run("Add Noise");
run("Add Specified Noise...", "standard=16");

您可以使用-batch命令行选项将此类宏应用于多个文件。

如果您想直接使用Java中的功能,请参阅ImageJ programming tutorials

答案 1 :(得分:0)

我看到没有语言标签,所以我选择在Scala中编写一个示例。下面的代码将读取lena.png图像的两倍,并创建两个ImagePlus对象并向其中一个添加噪声。

我有点猜测API评论与软件库ImageJ有关,而不是图形用户界面/程序ImageJ。

ImagePlus有一个处理器(类型为ij.process.ImageProcessor),您可以使用方法getProcessor()

获取对它的引用

(getProcessor()是一个方法,它作用于对象lenaWithNoise并返回对当前ImageProcessor的引用(附加到lenaWithNose))。

方法噪声作用于ImageProcessor处理的图像,并且没有返回值(void方法或scala单元)

import ij._

object Noise {
  def main(args: Array[String]): Unit = {
    val lenaNoiseFree:ImagePlus = IJ.openImage("src/test/scala/images/lena.png")
    val lenaWithNoise:ImagePlus = IJ.openImage("src/test/scala/images/lena.png")
    lenaNoiseFree.show()
    lenaWithNoise.getProcessor().noise(10.0)
    lenaWithNoise.show()
 }
}