我确切地知道我想做什么,并且可以用python,scipy和PIL来做。 我想使用imagemagick,因为它是专门为这些操作而设计的。
我无法从在线文档中弄清楚如何做到这一点。 Imagemagick文档词汇似乎是为了 图像处理专业人员,这是我的理解。
答案 0 :(得分:2)
我试图在Imagemagick中重现你的命令,但我不确定结果或T和M是否应该在范围0到1或0到Quantumrange(Q16 HDRI IM编译时为0到65535)。我使用Imagemagick 7.0.7.21 Q16 HDRI测试了Imagemagick徽标:图像。
T="65000"
sigma=5
magick logo: I.mpc
magick I.mpc -blur 0x$sigma G.mpc
magick I.mpc G.mpc +swap -compose minus -composite G.mpc +swap -compose divide -composite D.mpc
M=`magick D.mpc D.mpc -compose multiply -composite -evaluate pow 0.5 -evaluate multiply $T -format "%[fx:maxima]" info:`
M2=`magick xc: -format "%[fx:2*$M]" info:`
magick D.mpc -evaluate add $M -evaluate divide $M2 -evaluate multiply $T output.png
Line 1: Set T=65000 (range 0 to 65355)
Line 2: Set gaussian blur sigma to 5
Line 3: Read the input into I.mpc
Line 4: Apply gaussian blur to I.mpc to create G.mpc
Line 5: Create D=(I-G)/G (requires HDRI IM 7 compile to keep negative values)
Line 6: Compute M=T*Max(sqrt(D*D)) as a single number variable in the range 0 to 65535 (Quantumrange for 16-bit IM compile)
Line 7: Compute 2*M as variable M2
Line 8: Compute output O = T * (D + M) / (2 * M)
如果这不正确(与你的python等方法不匹配,那么请发布并输入和输出示例,然后我可能能够纠正任何错误的假设或错误并使其工作相同。
如果想要使用Imagemagick 6,那么就必须编译或获得Q16 HDRI编译的版本。然后在上面的命令中,只需将magick改为转换。
答案 1 :(得分:0)
这是一个用于处理的bash脚本 转换识别的任何0-255图像文件。 我在自己的一些示例文件上尝试过它。 它有效。
foo_2
我原本希望imagemagick命令可以 更容易阅读和更容易理解,但fmw42实现了目标。
答案 2 :(得分:0)
CORRECTION:
我在之前的帖子中犯了一个错误。当使用HDRI并且需要将负值或值保持在0到量程范围之外时,任何复合操作都将默认钳制并给出结果,就好像HDRI未启用一样。因此,需要在复合操作之前添加定义,以防止钳位(削波)到正常的非HDRI动态范围限制。所以正确的代码如下:
T="65000"
sigma=5
magick logo: I.mpc
magick I.mpc -blur 0x$sigma G.mpc
magick I.mpc G.mpc +swap -define compose:clamp=off -compose minus -composite G.mpc +swap -define compose:clamp=off -compose divide -composite D.mpc
M=`magick D.mpc D.mpc -define compose:clamp=off -compose multiply -composite -evaluate pow 0.5 -evaluate multiply $T -format "%[fx:maxima]" info:`
M2=`magick xc: -format "%[fx:2*$M]" info:`
magick D.mpc -evaluate add $M -evaluate divide $M2 -evaluate multiply $T output.png
结果与我之前的结果略有不同。
答案 3 :(得分:0)
以下是使用Imagemagick 7.0.7.21 Q16 HDRI作为一个长命令行的更正方法。
T="65000"
sigma=5
magick \
\( logo: -write mpr:imgI +delete \) \
\( mpr:imgI -blur 0x$sigma -write mpr:imgG +delete \) \
\( mpr:imgI mpr:imgG +swap -define compose:clamp=off -compose minus -composite mpr:imgG +swap -define compose:clamp=off -compose divide -composite -write mpr:imgD +delete \) \
\( mpr:imgD mpr:imgD -define compose:clamp=off -compose multiply -composite -evaluate pow 0.5 -evaluate multiply $T -write mpr:imgT +delete \) \
mpr:imgT -set option:mm "%[fx:maxima]" -set option:nn "%[fx:2*maxima]" +delete mpr:imgD -evaluate add "%[mm]" -evaluate divide "%[nn]" -evaluate multiply $T output3.png