【问题标题】:How do I add grain to an image using the ImageJ API如何使用 ImageJ API 向图像添加颗粒
【发布时间】:2012-09-17 15:02:07
【问题描述】:

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

  • 有可能吗?如果有怎么办?
  • 关于添加颗粒的相关文档/Javadocs 在哪里 使用 ImageJ 到图像?

【问题讨论】:

    标签: api imagej


    【解决方案1】:

    我将从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。

    【讨论】:

    • 谢谢。您知道我在哪里可以找到有关如何使用实际 API 而不是 UI 来实现此目的的文档吗?
    • 不确定你的意思;我在上面建议了两条路径。
    【解决方案2】:

    我看到没有语言标签,所以我选择用 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()
     }
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 2016-12-10
      • 2022-11-05
      相关资源
      最近更新 更多