Innovative Face-Mixing App Development

Job ID: 38427429

Budget: $750 – $1,500 USD

I would like to ask anyone interested in this project to Google "averageness" and read Wikipedia's essay on the subject; also, the essay's first reference, "Attractive faces are only average", by J.H Langlois and L Roggman.
Also, it would be helpful to download a copy Sqirlz Morph and average a few facial pictures on it. Sqirlz Morph is free, but does not have all the bells and whistles of FantaMorph, which could also be used..
These programs work by using dots to align the features, e.g.; the pupils of the eyes, the corners of the mouth, etc, in two pictures of faces; and then averaging the numerical values of the pixels of the two pictures.
I am proposing a program that would use the exact same code, or similar code, as Sqirlz Morph to align the features, but instead of averaging the numerical values of the pixels to produce an average face, use an algorithm which would produce a third face which, when averaged with first face would produce the second.
Or, put more simply, given facial pictures a and b, Sqirlz Morph would use the equation c = (a + b)/2 to obtain c, the average of a and b. But our new program would assume that the two facial pictures given were not a and b in the above equation but a and c. Solving the equation for b gives b = 2c - a where b is the face that would have to be averaged with a to give c.
I have written a very simple program in Python to combine the pixels of two pictures in this way and would be happy to send the code along if that would be helpful.
So why don't I just use my Python program for my purposes? Because, of course, manipulating the pixels is the easy part. The code behind using the user-supplied dots to align the features of the faces is way beyond my pay grade. Before running my Python program, I had to align the features (as best I could) using Photoshop elements. I also had to resize the pixel matrices to the same dimensions as each other.
I am enclosing four pictures, Amy, Jeana, Ugly_Amy and Ugly_Jeana. Ugly_Amy is the face that has to be mixed with Jeana to get Amy, Ugly_Jeana is the face that has to mixed with Amy to get Jeana. Anyone interested can try these out in Sqirlz Morph or FantaMorph.
I think an app that would do this has enormous possibilities. If this has piqued anyone's interest, I will be glad to share my thoughts on possible uses for such an app.

I have plenty of characters left here, so I will send a copy of my little Python program:

#produce opposite of Amy WRT Jeana
import numpy as np
import skimage.io
import matplotlib.pyplot as plt
skimage.io.imread('Amy.jpg')
image1 = skimage.io.imread('Amy.jpg')
halfimage = np.int_(image1/2)
skimage.io.imread('Jeana.jpg')
imageAvg = skimage.io.imread('Jeana.jpg')
halfimage2 = imageAvg - halfimage
image2 = halfimage2 * 2
plt.imshow(image2)
plt.show()
#Save image after it pops up


John Dupre
Related categories: C Programming Image Processing