使用matlab通过图像亮度差异进行图像识别

文章描述了一个使用Matlab的脚本,通过读取已知和未知图片文件,对未知图片中的人脸进行特征提取并与已知人物图片进行比较,找出最相似的脸并显示匹配结果。
摘要由CSDN通过智能技术生成
clear;clc
currentDir2 = pwd; %获取当前路径
srcDir=[currentDir2 '\Known\*.jpg'];
files = dir(srcDir); % 获取当前目录下所有扩展名为.jpg的文件
num_files = length(files); % 计算文件数量
names2={'Amelia Vega','Andre Agassi','Angelina Jolie','Ann Veneman'};
figure('Name','已知图片');
for i = 1:num_files
    filename = [currentDir2 '\Known\' files(i).name]; % 获取文件名
    img22{i} = imread(filename); % 读取文件
    subplot(2,2,i);
    imshow(img22{i});
    title(names2{i});
end
currentDir1 = pwd; %获取当前路径
srcDir2=[currentDir1 '\Unknown\*.jpg'];
files2= dir(srcDir2); % 获取当前目录下所有扩展名为.jpg的文件
num_files = length(files2); % 计算文件数量
names1={'face01','face02','face03','face04'};
figure('Name','未知图片');
for i = 1:num_files
    filename = [currentDir2 '\Unknown\' files2(i).name]; % 获取文件名
    img11{i} = imread(filename); % 读取文件
    subplot(2,2,i);
    imshow(img11{i});
    title(names1{i});
end
figure('Name','识别图片');
for i = 1:num_files
    filename1 = [currentDir1 '\Unknown\' files2(i).name]; % 获取文件名
    img1{i} = imread(filename1); % 读取文件
    nums = zeros(4, 1);
    for j=1:1:4
        filename2 = [currentDir2 '\Known\' files(j).name]; % 获取文件名
        img2{j} = imread(filename2); % 读取文件
        img_height = size(img1{i}, 2);%获取图像的高
        img_width = size(img1{i}, 1);%获取图像的宽
        center_x = img_width / 2;
        center_y = img_height / 2;
        
        % 截取中间部分作为人脸区域
        face_center1 = img1{i}(center_y - img_height/4:center_y + img_height/4, center_x - img_width/4:center_x + img_width/4);
        face_center2 = img2{j}(center_y - img_height/4:center_y + img_height/4, center_x - img_width/4:center_x + img_width/4);

        % 计算差异均值
        diff=abs(double(face_center1)- double(face_center2));
        averge=mean(diff(:));
        nums(j)=averge;
    end
    [minValue,minIndex]=min(nums);
    subplot(2,2,i);
    imshow(img1{i});
    disp(minIndex)
    title(names2{minIndex});
end
hold off;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值