我正在尝试应用相似性变换来对齐面:
from skimage.transform import SimilarityTransform, ProjectiveTransform
from skimage import transform
from scipy.misc import imshow
# face image detected facial landmarks
src = np.float32([left_eye_center, right_eye_center, mouth_center, nose_center])
# face template landmarks, see second image below
dst = np.float32([template['left_eye'], template['right_eye'], template['mouth'], template['nose']])
# see result in the third image below
tf = SimilarityTransform()
tf.estimate(src, dst)
result = transform.warp(image, inverse_map=tf.inverse)
imshow(result)
为了测试其他类型的变换是否有效,我还尝试了投影变换:
# see result in the fourth image below
tf = ProjectiveTransform()
tf.estimate(src, dst)
result = transform.warp(image, inverse_map=tf.inverse)
imshow(result)
原始图像、模板、相似变换和投影变换的图像分别为:
如您所见,相似度变换有问题,但我不知道它是什么。投影变换似乎工作正常,眼睛、嘴巴和鼻子与模板中的点对齐。
这是怎么回事?我没有得到什么?