matlab图像匹配问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 06:59:59
我想做图像匹配的毕业设计,具体的思路是从一幅图像中选取一个人脸区域,然后在另外的一幅图像中从多个人脸中找到匹配的人脸,并用方框标记,各位大虾帮帮忙,最好把code给我,我是菜鸟,所以注释也要

如果你是本科毕业建议你不要选这个题目。找人脸是很简单的,但之后匹配的算法相当复杂。

function Icorr=imcorr(a,b)
% function corr=imcorr(a,b)
%计算图像a与子模式b的相关响应,并提示最大的响应位置
%
%impute:a-原始图像
% b-子图像
%
%output: Icorr-响应图像

[m,n]=size(a);
[m0,n0]=size(b);
Icorr=zeros(m-m0+1,n-n0+1);%为响应图像分配空间
vecB=double(b(:)); %按列存储为向量
normB=norm(vecB); %模式图像对应向量的模
for ii=1:m-m0+1
for jj=1:n-n0+1
subMat=a(ii:ii+m0-1,jj:jj+n0-1);
vec=double(subMat(:));
Icorr(ii,jj)=vec'*vecB/(norm(vec)*normB+eps); %计算当前位置的相关
end
end
%找到最大响应位置
[iMaxRes,jMaxRes]=find(Icorr==max(Icorr(:)));
figure;imshow(a);
hold on
for ii=1:length(iMaxRes)
plot(jMaxRes(ii),iMaxRes(ii),'*'); %绘制最大响应点
%用矩形框标记出匹配区域
plot([jMaxRes(ii),jMaxRes(ii)+n0-1],[iMaxRes(ii),iMaxRes(ii)]);
plot([jMaxRes(ii)+n0-1,jMaxRes(ii)+n0-1],[iMaxRes(ii),iMaxRes(ii)+m0-1]);
plot([jMaxRes(