Imagemagick从GPUImage产生不同的结果

时间:2015-10-02 12:03:35

标签: imagemagick image-manipulation gpuimage imagemagick-convert

我目前正在使用GPUImage更改图像的颜色(RGB)通道以生成"过滤器,如#34;效果。我用于GPUImage的值是photoshop中颜色曲线工具的点的X,Y值。例如,我可能有以下几点:

  

Photoshop曲线工具 !请注意图片并不代表   当前数据点photoshop curve tool

     

Red: 0,0 0.1176,0.0196 0.2275,0.098 0.3294,0.3333 0.4392,0.549 0.7451,0.8627 1,1 Green: 0,0 0.0784,0.0196 0.1961,0.2431 0.5176,0.5882 0.7451,0.8039 1,1 Blue: 0,0.2549 0.1569,0.3529 0.3333,0.451 0.8314,0.7255 1,0.8039

GPUImage可以毫无问题地处理这些点,但是由于Imagemagick不支持直接输入这些值,我必须将每个通道点转换为曲线的表达式,如下所示:

Red: -237.407*u^6 + 634.277*u^5 - 615.934*u^4 + 261.501*u^3 - 44.054*u^2 + 2.617*u Green: -32.880*u^5 + 80.544*u^4 - 68.222*u^3 + 22.707*u^2 - 1.148*u Blue: -0.382*u^4 + 0.744*u^3 - 0.498*u^2 + 0.686*u + 0.255 我使用找到here的im_fx_curves.pl脚本将点转换为表达式。

所以我的过程通常看起来像这样:

convert test_image.png \ \( -channel Red -fx "`perl im_fx_curves.pl 0,0 0.1176,0.0196 0.2275,0.098 0.3294,0.3333 0.4392,0.549 0.7451,0.8627 1,1`" \) \ \( -channel Green -fx "`perl im_fx_curves.pl 0,0 0.0784,0.0196 0.1961,0.2431 0.5176,0.5882 0.7451,0.8039 1,1`" \) \ \( -channel Blue -fx "`perl im_fx_curves.pl 0,0.2549 0.1569,0.3529 0.3333,0.451 0.8314,0.7255 1,0.8039`" \) result.png

但结果略有不同。而且我很困惑为什么会这样。我很乐意接受任何关于我可能做错的提示!

result comparision

0 个答案:

没有答案