所谓图像配准就是将同一场景的两幅或多幅图像进行对准,比如航空照片的配准,以及在很多人脸自动分析系统中的人脸归一化,即要使各张照片中的人脸具有近似的大小,尽量处于相同的位置。
一般来说,我们以基准图像为参照,并通过一些基准点(fiducial points)找到恰当的空间变换关系s和t,对输入图像进行相应的几何变换,从而实现它与基准图像在这些基准点位置上的对齐。
人脸图像配准的matlab实现:
1、读入基准图像和要配准的输入图像
>> Iin=imread('E:\表情数据库\SRC\ORL\s1_7.bmp');
>> Ibase=imread('E:\表情数据库\SRC\ORL\s1_9.bmp');
>> figure
>> subplot(1,2,1),imshow(Iin);
>> subplot(1,2,2),imshow(Ibase);
2、标准基准点对,将其保存至工作空间。
利用matlab提供的cpselect函数可以交互式地选择基准点。在命令行中按照以下方式调用cpselect启动交互工具
>> cpselect(Iin,Ibase);
在该control point select窗口中,点击tool里面的add point一项进行手工标注点,然后在file菜单里export points to workspace 即可输出表定点的坐标位置。
>> cpselect(Iin,Ibase);
Variables have been created in the current workspace.
然后在工作空间里可以找到标注点的数据信息。我标定了4个配对点如下:
>> input_points2
input_points2 =
39.3125 63.9375
49.4375 64.0625
60.3125 83.5625
29.6875 84.4375
>> base_points2
base_points2 =
40.1875 73.9375
52.1875 74.0625
59.6875 89.4375
31.4375 89.0625
注意:调用cpselect()函数要将需要配准的图像作为第一参数,将基准图像作为后一个参数。并且cpselect只接受灰度图像,如果需要处理RGB彩色图像,可以只给CPselect函数传递一个图像的层。
>>cpselect(Irgb(:,:,1),Ibase);%只传递输入图像的红色分量图