如何从复杂的研究论文中找到写作算法

时间:2012-08-21 00:00:12

标签: java c++ algorithm image-processing

我想过编写一个Alpha Compositing的软件。我不想从互联网上准备好代码,所以我试图找到研究论文和其他来源来理解数学算法,并开始实施。

但是,我很快就迷路了。所以我的问题是,

我应如何处理这些文件以从中提取必要的细节,以便根据它编写算法。任何特定的步骤都能很好地运作?

期望的答案:

  1. 阅读......
  2. 提取......
  3. 了解......
  4. 实施......

  5. 注意:此问题不仅限于Alpha Compositing,因此更通用的方法会有所帮助。我已标记JavaC++,因为这是我实现图像处理所需的语言。

    到目前为止我做了什么?

    这不是一个家庭作业问题,但当然更好地说出我所知道的。我已经阅读了Alpha合成的维基,以及几乎没有密切相关的图像合成研究论文。但是,我坚持下一步,从理解到实施。

    1. Wikipedia
    2. Technical Memo, Image compositing

6 个答案:

答案 0 :(得分:4)

我建议用铅笔和纸阅读复杂公式的文章。完成数学工作,直到你掌握好它。然后,您将准备好编码。

首先确定在某些图像数据上执行算法所需的步骤。包括将图像本身加载到内存中的所有步骤,直到您可能需要执行的复杂计算。然后将列表结构化为伪代码。一旦你有了它,它应该很容易编码。

答案 1 :(得分:4)

写伪代码。理想情况下,研究论文的作者会这样做,但往往他们没有。为一些简单的语言(如Matlab或Python)编写伪代码,并且根据伪代码编写一个有效的实现。

如果您理解算法的某些部分而不理解其他部分,那么将您的伪代码实现为您理解的部分的真实代码,并为您不理解的部分留下评论。

The Pragmatic Programmer关于“Tracer Bullets”的部分基本上描述了这个想法。您希望快速破解将数据转换为某种形式的输出的内容,然后迭代代码的主体,使其慢慢类似于您尝试生成的算法。

我的回答有点含糊不清。对于像这样的东西,没有灵丹妙药。

答案 2 :(得分:3)

您是否实施过任何图像处理算法?也许从一些稍微简单的东西开始,比如去饱和/颜色增强,反转(从一边到另一边),旋转,缩放和通过面具合成图像。

一旦你想到这些,你将处于一个很好的位置来做一个alpha复合。

我同意学术论文似乎不遗余力地使实施细节变得模糊不清。我发现开始执行实际实现需要对所写内容进行大量简化。作为一般的匆忙,作家过度参数化每个方面。要构建有用,可靠的软件,有必要从实际工作的简单开始,以便它可以成为添加功能的框架。要做到这一点,有必要抛弃80-90%的学术普遍性。通常可以使用大量的符号常量来完成很多工作,但放弃普遍性(例如四维和五维图像)并不会在实践中失去任何东西。

答案 3 :(得分:1)

我的建议是首先使用Matlab编写算法,以确保您了解所有步骤,然后尝试使用C ++或java实现。

答案 4 :(得分:1)

为了添加上面的好建议,尝试用简单的模块(面向对象的样式)编写伪代码,因此必须深入了解代码的每个部分,同时不要失去大局。以程序的方式编写所有内容都是一个良好的开端,但随着代码的增长,可能会变得很难跟上你想要做的所有事情。

答案 5 :(得分:1)

example引用了有关该主题的开创性作品之一:Compositing Digital Images作者:Porter&达夫。类java.awt.AlphaComposite实现了相同的规则。