|
||||||||||||||||||
ImageAdjuster |
||||||||||||||||||
|
Description ImageAdjuster is a library for Processing. It's purpose is to perform brightness, contrast, gamma and other such adjustments on images. It contains both high-level and low-level routines, and can be extended via user-defined transformations. The high-level routines allow for simple basic adjustments, while the low-level routines allow for complex and high-performance adjustments. The low-level routines are particularly well-suited to video applications where a constant adjustment is to be applied to every frame. Various adjustments may be concatenated, in much the same way that a 3-D transform matrix is, and applied in a single operation. Adjustments can be performed on an entire image or limited to a rectangular region within the image. Download Version 0.04: imageadjuster004.zip (280K) Contains precompiled library, installation instructions, java docs, source code for all demos and the library itself. Demo Applets Intended to be studied as examples in order of increasing complexity: Lookup Table "Recipes" For those using the low-level lookup table routines -- A few handy formulae to accomplish some other common image processing routines. (Negate and Posterize are already shown above in demos 7 & 8, in case you missed them) This collection is likely to change, but here's what's available so far: Extending The Base Class Once you have a "recipe" that you find yourself using often, it may be beneficial to extend the base class with that operation rather than manually recreating the lookup table each time you wish to use it. Here's a quick demo of extending the base class to support the posterize() operation. The same concepts could be used to implement any of the above "recipes" or your own user-defined adjustments. (of course you could also just recompile the library source with your new functionality, but I figure that those who would take that approach are probably advanced enough to not need need a demo) FAQ Q: Can't I already do this sort of stuff by manipulating the pixels array? Q: Can't I already do invert/posterize like demos 7/8 with filter()? Q: Why aren't posterize/negate/threshold/solarize or any of the other "recipes"
included in the base class? Q: Why are brightness values specified from [0..1] instead of [0..255] or the
current colorMode range? Q: Why did the code blow up when I passed it a null image?
|
||||||||||||||||||
|
||||||||||||||||||
© 2006 Dave Bollinger | ||||||||||||||||||