Write code to design an image of a face that is parameterized by at least three dimensions of variability, but preferably more. For example, you might have variables that specify the size, position, color, or other visual characteristics of the eyes, nose, and mouth. The variations in these features may be used to alter the face's expression (happy, sad, angry); the face's identity (John, Maria); and/or the face's species (cat, monkey, zombie, alien). Give special consideration to controlling the precise shape of face parts, such as the curves of the nose, chin, ears, and jowls, as well as characteristics like skin color, stubble, hairstyle, blemishes, interpupillary distance, facial asymmetry, cephalic index, and prognathism. Differentiate continuous parameters (such as size and position of features) and discrete parameters (such as the presence of piercings, or the number of eyeballs). Will your faces be 2D or 3D? Will they be shown in a frontal, profile, or three-quarters view? Your system should generate a new face whenever the user presses a button.
Humans are equipped with an exquisite sensitivity to faces. From infancy, we easily recognize faces and can detect very subtle shifts in expressions, often being able to discern the slightest change in mood and sincerity in ways that remain impossible for computers. Faces also allow us to readily identify family resemblances or recognize friends in crowds. Faces are so central to visual perception that “the impairment of our face-processing ability is seen as a disorder, called prosopagnosia, while unconsciously seeing faces where there are none is an almost universal kind of pareidolia.” i
This assignment draws inspiration from the “Chernoff face” data visualization technique, which leverages this sensitivity by using facial features to represent multivariate data. In Chernoff faces, features such as the eyes, ears, mouth, and nose represent data according to their shape, size, placement, and orientation. Whereas Herman Chernoff used 18 variables to synthesize a face, Paul Ekman and Wallace Friesen's Facial Action Coding System analyzes faces with 46, each variable corresponding to the action of a different facial muscle.
Works that generate faces present the conceptual opportunity to devise a possibility space or an imaginative context for portraits—like a family album, high school yearbook, or tradeable card deck.