【发布时间】:2012-09-17 15:02:07
【问题描述】:
我是 ImageJ 的新手,我正在寻求使用 ImageJ 的编程 API添加颗粒(定义如下:http://en.wikipedia.org/wiki/Film_grain)到图像中。
- 有可能吗?如果有怎么办?
- 关于添加颗粒的相关文档/Javadocs 在哪里 使用 ImageJ 到图像?
【问题讨论】:
我是 ImageJ 的新手,我正在寻求使用 ImageJ 的编程 API添加颗粒(定义如下:http://en.wikipedia.org/wiki/Film_grain)到图像中。
【问题讨论】:
我将从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。
【讨论】:
我看到没有语言标签,所以我选择用 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()
}
}
【讨论】: