Isoluminant Image Filtering

By Dan Snyder
 

Two colors are considered isoluminant if they have equivalent grayscale values. As explained by Prof. Klein, color is used in art to evoke emotion and symbolism, while luminance is used to define texture and shape. Isoluminant colors create perceptual tension, as they are of the same intensity, but often very different hues. Pointillists use this phenomenon for effect, as evident in the works of Pierre Seuraut, Chuck Close, and many more.

The purpose of this program is to allow users to apply a non-photorealist filter to their custom photos. Users may filter their images based on the following parameters:
     - Pixilation (this allows the user to modify the size of the 'dot' in which the isoluminant color is drawn)
     - Isolumination (this allows the user to specify how close to the original color each 'dot' must be.)

 

The application shows the inputted image on the left, and the filtered image on the right.

  

Setting the pixilation to more than one pixel modifies the size of the 'dot' to be drawn.  This mimics a pointillist painter that has the ability to choose larger or smaller brushes to vary the size of the points to be applied to the image.

Users may set the pixilation to be applied.

 

Each filtered 'dot' is calculated based on the original luminant value of that 'dot'. If a user sets the hue variance to anything but 100%, the filter randomly varies each point's hue as specified while maintaining isoluminance.

The example below shows a tropical image that has been set to a pixelation of 5x5 pixels, and a hue integrity of 90%. The filter creates the image on the right by the following procedure for each 5x5 pixel group:
     - Calculate the average luminance over the 25 pixels
     - Calculate a new color that is isoluminant with the average luminance for the 25 pixels
     - Change all 25 pixels from the 5x5 pixel group to the new color

Users may set the amount of the original hue that must be

 

Users may toggle a grayscale viewing mode to verify that the images are isoluminant.

 

 

 

 

References:
I use OglExt to tell OpenGL where to draw images.
DevIL is an open source image library that I use to load images into OpenGL.
Special thanks to Prof. Klein for her inspiring talk on NPR filtering and isoluminance.
Prof. Wood taught me all that I know about graphics :)