![如何使用矩阵对图像进行几何变换](https://linux22.com/image/1433877/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%9F%A9%E9%98%B5%E5%AF%B9%E5%9B%BE%E5%83%8F%E8%BF%9B%E8%A1%8C%E5%87%A0%E4%BD%95%E5%8F%98%E6%8D%A2.png)
如何使用自定义数学 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
...可能是你所追求的?