C言語を使って、顔の画像(png)を入力して、元の顔の画像と比較したい。
しかし、入力した画像が傾いていたり全体の大きさが元の画像と違っている場合がある。
この画像のずれを[拡大、縮小、回転](アフィン変換?)を使って、元の画像と比較できるようにしたい。(規格化?)
しかし、その前に、画像がずれていることをどのように認識すればいいのかがわからない?
エッジ検出で肌色でないところを見つけて、ずれを見つけられるかな?

質問は2つです。
[質問1]
 画像がずれていることを知る方法を教えてください。
[質問2]
 画像のずれを直す方法(プログラムやアルゴリズム)を教えてください。

プログラムやアルゴリズムが乗ってるページや、関連する書籍などがあったらおしえてください。
お願いいたします。