I want to diminish backlight effect on a low-resolution video (specifically, on a bunch of face images, extracted from a video). This question adresses computer vision & image quality domain.
For example, I have the next image with backlight and blurred so that you cannot see the structure of the face. This image is fed as an input into some algorithm, which produces a set of best similar faces. These output faces should not be constrained to the ones that algorithm was trained on. It has to "come up" with some nice-looking images (for us, humans) by providing different facial structures, that fits in with the input img.
Basically, the whole algo must perform the following steps:
- Lighten up the face area on the image, if it's dark.
- Generate (rather than simply find) a set of best matches of faces. Resulted fake faces might be dissimilar with each other, but they should preserve the structure: here is how the nose might look like, here is the mouth and the eyes... They should be seen as human faces indeed rather than a skeleton.
These fake faces will be used for face recognition. Why not try to recognize the input face in the first place? - Because the quality of input faces is so bad that no deep learning model can recognize them.
- Scale up chosen faces from the step 2 by using super-resolution technique. This step is needed only if the input face image is very small.
My question is, what algorithms can do steps 1 and 2? How to google them? Where to find their implementations (like Caffe models, etc.)?