如何使用imagemagick模拟镜头色差?

时间:2015-12-24 15:04:59

标签: image imagemagick

假设我有一个名为source.png的摄像机图像,我想分割通道,仿射扩展每个通道不同的系数,并重新组合到target.png而不创建中间文件?

我正在尝试这样的事情:

  

convert source.png -colorspace RGB -separate {expansions} -combine target.png

我尝试了几个小时尝试从imagemagick网站获取提示 以及网络上的其他来源,但我没有让它发挥作用。

有人能告诉我一个独立频道处理的简单例子吗?

Mark Setchell给了我足够的实验和成功的基础! 解答:

convert Home.png -write MPR:orig +delete \
  \( MPR:orig -separate -delete 1,2 -affine -1.00,0,0,-1.00,0,0 -transform -gravity Center -extent 180x180 \) \
  \( MPR:orig -separate -delete 0,2 -affine -1.06,0,0,-1.06,0,0 -transform -gravity Center -extent 180x180 \) \
  \( MPR:orig -separate -delete 0,1 -affine -1.31,0,0,-1.31,0,0 -transform -gravity Center -extent 180x180 \) \
  -combine Home.imaffine.png

谢谢。

1 个答案:

答案 0 :(得分:2)

更新了答案

由于我下面的原始答案似乎对您没有用,也许您会尝试这种替代方法。我将加载您的图像一次,将其保存在12:00(存储器程序寄存器)中,这是一个命名的RAM块,并重新使用它来获取每个通道:

MPR

原始答案

无需使用convert image.jpg -write MPR:orig +delete \ \( MPR:orig -separate -delete 1,2 -affine <red transform> \) \ \( MPR:orig -separate -delete 0,2 -affine <green tranform> \) \ \( MPR:orig -separate -delete 0,1 -affine <blue transform> \) \ -combine result.jpg ,只需使用-separate运算符将变换应用于所选频道:

-channel

如果在将扭曲应用于各个频道后,您希望继续将运营商应用于所有频道,则可以使用convert image.png -colorspace RGB \ -channel R -affine <RedTransform> \ -channel G -affine <GreenTransform> \ -channel B -affine <BlueTransform> \ result.png +channel确保后续运营商再次应用于所有频道。