我试图在 Imagemagick 中重现您的命令,但我不确定结果或 T 和 M 是否应该在 0 到 1 或 0 到 Quantumrange 范围内(Q16 HDRI IM 编译为 0 到 65535)。我在 Imagemagick 徽标上进行了测试:使用 Imagemagick 7.0.7.21 Q16 HDRI 的图像。
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改成convert即可。