image-processing - 用于 Clojure 图像合成的 DSL

标签 image-processing clojure dsl

我正在尝试在 Clojure 中创建一个用于图像合成的小型库/DSL。基本上这个想法是允许库的用户组合数学函数集来程序化地创建有趣的图像。

这些函数需要对 double 值进行操作,并采用将位置向量转换为颜色值的形式,例如(x,y,z) -> (r,g,b,a)

但是,我面临着一些有趣的设计决策:

  • 输入可能有 1、2、3 甚至 4 个维度(x、y、z 加上时间)
  • 最好提供向量数学运算(点积、加法、乘法等)
  • 将具有旋转、缩放等操作的函数组合起来会很有值(value)。
  • 出于性能原因,在整个过程中使用原始 double 数很重要(即避免特别创建盒装 double 数)。所以一个需要返回红色、绿色和蓝色分量的函数可能需要变成三个独立的函数,分别返回原始的红色、绿色和蓝色值。

  • 关于如何在 Clojure (1.4 beta) 中合理实现这种 DSL 的任何想法?

    最佳答案

    看看很棒的 ImageMagick 工具 http://www.imagemagick.org可以让您了解此类库会进行什么样的操作。

    也许您会发现,如果您复制默认的 IM 工具集,则无需下拉到矢量数学。

    关于image-processing - 用于 Clojure 图像合成的 DSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596130/

    相关文章:

    具有构建器模式的 Java 泛型类型 DSL

    python - 如何根据目标像素替换 Numpy 图像数组中的所有 RGB 值

    Python Opencv 利用霍夫圆变换从二值图像中检测圆

    python - 使图像具有曲线感

    c++ - Boost.原型(prototype) : Is it possible for Proto transforms to evaluate a mixture expression of matrix & vector?

    database - 对基于集合的 sql 数据操作操作的代码列表进行建模

    image-processing - 滤镜在图像处理中如何工作?

    clojure - 如何在 Clojure 中的传入类指针上调用静态方法?

    clojure - 您如何使用 Reitit 在 Clojure 中设置中间件以启用主体参数的强制转换?

    clojure - 如何用clojure做一个简单的try/catch?