Matlab版本的特征提取实验过程

首先把人脸库中的图片进行标准化,根据两个眼睛来切割出人脸区域,形如下图所示:

matlab程序如下

%函数介绍:  人脸的大小归一化 手工点击自动切割图片为规定大小

function  Unitery(Height,Width,M)  %Wdith为切割后图像的宽度。Height为切割后图像的长度。M为图像的个数。  
    clear;close all;
    Height=490;%set Image size
    Width=640;
    M=12;%set numbers of Image
    %set path of Image
    mydir = 'H:\CMU表情库\cohn-kanade\cohn-kanade\cohn-kanade\S010\001\';
    %set suffix
    DIRS = dir([mydir,'*.png']);
  for i=1:M
       str=[mydir,DIRS(i).name];   
       eval('OriImg=imread(str);');  %执行字符串每次循环读入img  %读入图像
       figure,imshow(OriImg),[x,y]=ginput(2); %手工获取人眼E1,E2坐标
       d=x(2,1)-x(1,1);  %计算两眼之间的宽度d
       Ox=sum(x)/2;
       Oy=sum(y)/2;  %求E1,E2的中心O(Ox,Oy)
       I1=imcrop(OriImg,[Ox-0.9*d Oy-0.5*d 1.8*d 2*d]); %切割人脸
       str=strcat('H:\CMU表情库\cohn-kanade\cohn-kanade\cohn-kanade\S010\001\Standard\',int2str(i),'.bmp');                       
       eval('imwrite(I1,str);'); %执行字符串 每次循环读入img  %读入图像  %保存归一化后的人脸图像
       close all;
   end

 

标准化之后的任务就是上下分块,平均分割开。

形如:

matlab程序如下:

function ShangXiaFenKuai

    mydir = 'C:\Users\user\Desktop\Database\CMU\test_test\';
    DIRS = dir([mydir,'*bmp']);
    for i=1:18
    if ~DIRS(i).isdir
        filename = [mydir,DIRS(i).name];
        disp(filename)
        I = imread(filename);
        ImageUp = I(1:50,:);
        ImageDown = I(51:100,:);
        savefileUp = [mydir,'Up\',DIRS(i).name];
        imwrite(ImageUp,savefileUp);
        savefileDown = [mydir,'Down\',DIRS(i).name];
        imwrite(ImageDown,savefileDown);
    end
    i = i 
  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
车牌识别是计算机视觉领域中的一个重要应用,其主要分为两个部分:车牌检测和车牌识别。其中,车牌检测是指在复杂的背景下,自动检测出车辆图像中的车牌,并将其从背景中分离出来;车牌识别是指对分离出的车牌图像进行字符分割和识别,最终得到车牌信息。 在 MATLAB 中,提取车牌的基本原理如下: 1. 车牌检测:对车辆图像进行预处理,例如去噪、增强对比度等操作,然后使用车牌检测算法(如基于颜色、形状、纹理等特征的算法)来检测车牌的位置和大小。常用的车牌检测算法包括 Sobel 算子、Canny 算子、Hough 变换等。 2. 车牌识别:对检测出的车牌图像进行预处理,例如灰度化、二值化、字符分割等操作,然后使用字符识别算法(如神经网络、支持向量机、卷积神经网络等)来识别车牌中的字符。常用的字符识别算法包括 BP 神经网络、SVM 算法、卷积神经网络等。 下面是一个简单的 MATLAB 代码实现车牌提取的过程: ```matlab % 读入车辆图像 img = imread('car.jpg'); % 预处理,去噪声和增强对比度 img = denoise(img); img = enhance_edge(img); % 车牌检测,得到车牌位置 plate_pos = locate_plate(img); % 车牌识别,得到车牌号码 plate_img = img(plate_pos(2):plate_pos(4), plate_pos(1):plate_pos(3)); plate_num = recognize_plate(plate_img); % 显示结果 figure; subplot(1, 2, 1); imshow(img); title('原始图像'); subplot(1, 2, 2); imshow(plate_img); title(['车牌号码:', plate_num]); ``` 其中,`denoise` 函数和 `enhance_edge` 函数是用来进行图像去噪和边缘增强的操作。`locate_plate` 函数是用来检测车牌位置的函数,可以采用 Sobel 算子、Canny 算子、Hough 变换等方法实现。`recognize_plate` 函数是用来识别车牌字符的函数,可以采用 BP 神经网络、SVM 算法、卷积神经网络等方法实现。 需要注意的是,车牌提取的效果受到很多因素的影响,如车牌倾斜、遮挡、光照等因素,因此需要针对不同的情况进行调整和优化,才能得到较高的识别准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值