如何使用自定义数学 2x2 矩阵转换图像?要清楚的是,数学不是问题;我已经有了我想要的矩阵。我只是想知道如何使用软件将转换应用于图像。
我在 Google 上搜索过 GIMP 插件(因为我知道它使用 3x3 矩阵来实现透视,但它不允许我输入 3x3 矩阵)。有一个名为“Mathmap”的插件,但它对我来说不起作用,因为它支持旧版本的 GIMP。我也搜索过能够做到这一点的程序,但没有找到。
该变换是几何变换,而不是过滤器变换。
如果有人能帮助我,我将不胜感激。
答案1
有一个 GIMP 过程调用,旨在由脚本和插件使用,可以直接从交互式提示中调用。
这是一个示例 Python 会话,它检索 GIMP 中打开的最后一个图像的引用,并对其应用 [2, 0, 0, 0, 2, 0, 0, 0, 1] 变换。
您可以在 GIMP 中访问 Python 控制台 filters->python-fu->console
GIMP 2.8.14 Python Console
Python 2.7.5 (default, Jun 25 2014, 10:19:55)
[GCC 4.8.2 20131212 (Red Hat 4.8.2-7)]
>>> img = gimp.image_list()[0]
>>> img
<gimp.Image '[Untitled]'>
>>> matrix = [2,0,0, 0,2,0, 0,0,1]
>>> more_parms = [True, TRANSFORM_RESIZE_ADJUST]
>>> drawable = pdb.gimp_drawable_transform_matrix_default(img.layers[0], *(matrix + more_parms))
我可以通过单击 Python 会话对话框底部的“浏览”按钮来找到“gimp_drawable_transform_matrix_default 过程”,搜索“matrix”,当我找到合适的调用时,单击“应用”:将函数调用粘贴到带有模拟参数的 Python 会话中,我想替换它。
然后,我利用 Python 的“语法糖”将序列元素作为单独的参数传递给函数调用 - 这就是“*”的作用。为了使其工作,我必须将 2 个额外参数(插值和剪辑模式)附加到矩阵系数。
这实际上与以下调用相同
pdb.gimp_drawable_transform_matrix_default(img.layers[0], matrix[0], matrix[1], matrix[2], ...., matrix[9], True, TRANSFORM_SIZE_ADJUST)
将会。
答案2
值得一提的是,我正在运行一个支持 GEGL 的 GIMP v2.9,安装并通过 Ubuntu 特有
sudo add-apt-repository ppa:otto-kesselgulasch/gimp-edge sudo apt-get 更新 sudo apt-get 安装 gimp gimp-resynthesizer
我不知道是否:
Menu: Filters > Generic > Convolution Matrix
...可能是你所追求的?