image processing - Changing exposure of jpeg -
given jpeg, formula change exposure of jpeg +/-1 stop or known 1 ev? want simulate exposure change. there formula/ method so?
i can demonstrate using imagemagick, included in linux distros , available osx , windows here.
first, @ terminal command line create image:
convert -size 512x512 gradient:black-yellow gradient.png now, way effect +1 stop exposure increase composite image using screen blending mode - available in photoshop , imagemagick , described here.
so, formula composite image a image b is:
1-stop brighter image = 1-(1-a)(1-b) but compositing image itself, a , b same, have
1-(1-a)(1-a) imagemagick refers pixels of image using p rather a, can 1-stop increase this:
convert gradient.png -colorspace rgb -fx "(1-(1-p)(1-p))" result.png note wikipedia article, , imagemagick's -fx both assume pixel intensities vary between 0 , 1.0. if using 8-bit images, should calculate 255 in place of 1, namely
+1 stop brighter image = 255-(255-a)(255-a) or if using 16-bit values
+1 stop brighter image = 65535-(65535-a)(65535-a) the above fx-based method however, slow because -fx interpreted rather compiled, faster way is:
convert gradient.png gradient.png -colorspace rgb -compose screen -composite screen.png just fun, way of looking @ take inverse of a, 1-a, , square it, , take inverse, can done this:
convert gradient.png -colorspace rgb -negate -evaluate pow 2 -negate result.png the equivalent of -1 stop exposure decrease composite image using multiply blend mode, formula being
1-stop darker image = x b which faster with
convert gradient.png gradient.png -colorspace rgb -compose multiply -composite result.png or faster, using memory-to-memory cloning rather reading disk twice, with
convert gradient.png -colorspace rgb +clone -compose multiply -composite result.png but equally with
convert gradient.png -colorspace rgb -evaluate pow 2 result.png 


Comments
Post a Comment