Matlab图像处理:类内、类间测试的次数控制
2013-05-14 20:37
246 查看
现在假设,有10个人的人脸,每个人有10幅人脸样本,一共100幅人脸。
类内测试:
如果采用1:1认证的方式,那么类内,也就是同类进行认证测试,每个人最多可以测试(9+8+7...1)=(9*(9+1))/2. 可以这么理解,第一个人脸和后面9个依次认证依次,然后第二个人脸和后面8个依次认证,最后求和。【等差数列的求和:(n*(n+1)*d)/2 】 因为是10个人,所以类内一共可以测试10*9*(9+1)/2次。
总结如下:
有N类志愿者,每类志愿者有M个样本,则采样1:1认证的方式,一共可以类内测试次数Leinei = N*(M-1)*M/2次。
类间测试:
如果还是1:1的认证方式。那么对于第一号志愿者,10幅样本里的任意一幅都可以和下面的9个人的90幅人脸一一测试,总共认证10*90,第二类志愿者共认证10*80。倒数第二个志愿者,可以和最后一个志愿者认证10*10.
总认证次数是900+800+。。。+100 = 9*10*100/2
总结如下:
有N类志愿者,每类志愿者有M个样本,则采样1:1认证的方式,一共可以类间测试次数Leijian= M*M*N*(N-1)/2次。
至于类内测试,很好弄,一般取最大测试次数就可以了。至于类间测试,由于次数很大,是个平方级别的。如果不需要取嫩大,可以假定次数为500次,或1000次,利用matlab生成随机数的方法进行测试。下面我给一个demo,程序的输入参数是有多少个志愿者及类间测试的次数。输出为测试出的类间海明距离。
注释:
1,这里用randperm(n)生成一个从1到n的随机矩阵,选取矩阵的第一个元素为训练样本,第二个元素为测试人的ID。
2,找到测试人的ID后,因为这个人有10个照片,再生成一个1到10的随机矩阵,选取第3个元素作为图片的id。ID和id就定位出了测试图片的绝对路径
3,两者进行匹配的函数是YanPiPei这里,因为项目需要,我这里训练样本只需要告诉是哪个人就可以了。剩下的工作由YanPiPei函数进行。大家根据需要,可以灵活修改。
-----------------------本文系原创,转载请注明作者:yanzi1225627
类内测试:
如果采用1:1认证的方式,那么类内,也就是同类进行认证测试,每个人最多可以测试(9+8+7...1)=(9*(9+1))/2. 可以这么理解,第一个人脸和后面9个依次认证依次,然后第二个人脸和后面8个依次认证,最后求和。【等差数列的求和:(n*(n+1)*d)/2 】 因为是10个人,所以类内一共可以测试10*9*(9+1)/2次。
总结如下:
有N类志愿者,每类志愿者有M个样本,则采样1:1认证的方式,一共可以类内测试次数Leinei = N*(M-1)*M/2次。
类间测试:
如果还是1:1的认证方式。那么对于第一号志愿者,10幅样本里的任意一幅都可以和下面的9个人的90幅人脸一一测试,总共认证10*90,第二类志愿者共认证10*80。倒数第二个志愿者,可以和最后一个志愿者认证10*10.
总认证次数是900+800+。。。+100 = 9*10*100/2
总结如下:
有N类志愿者,每类志愿者有M个样本,则采样1:1认证的方式,一共可以类间测试次数Leijian= M*M*N*(N-1)/2次。
至于类内测试,很好弄,一般取最大测试次数就可以了。至于类间测试,由于次数很大,是个平方级别的。如果不需要取嫩大,可以假定次数为500次,或1000次,利用matlab生成随机数的方法进行测试。下面我给一个demo,程序的输入参数是有多少个志愿者及类间测试的次数。输出为测试出的类间海明距离。
%% %########################################################################## %求类间海明距离的函数 %1,第一个参数n表示有多少个志愿者,这里假定每个人10个样本 %2,第二个参数表示作多少次计算 %########################################################################## function out = YanLeiJian(n, cnt) p = 'E:\ROI\0101.jpg'; testP = p; Rate = []; for i=1:cnt randPerson = randperm(n); trainPerson = randPerson(1); %%找到训练的那个人 testPerson = randPerson(2); %%%找到测试的那个人 %%%%%%%%找到训练的person if trainPerson<10 person = ['0' int2str(trainPerson)]; else person = int2str(trainPerson); end disp(['待认证的志愿者编号:' person]); %%%%%%%%找到测试的person if testPerson<10 person2 = ['0' int2str(testPerson)]; else person2 = int2str(testPerson); end %%%%%%%%%%%%%找到测试的那个人的那个随机的照片 randId = randperm(10); if randId(3)<10 id = ['0' int2str(randId(3))]; else id = int2str(randId(3)); end %%%%%%%%%%%%%%%%%定位测试图片路径 testP(8:9) = person2; testP(10:11) = id; disp(['测试样本:' testP]); rate = YanPiPei(person, testP); Rate = [Rate rate]; end out = Rate; save('E:\类间\leijian.mat', 'Rate'); disp('类间数据生成完毕!');
注释:
1,这里用randperm(n)生成一个从1到n的随机矩阵,选取矩阵的第一个元素为训练样本,第二个元素为测试人的ID。
2,找到测试人的ID后,因为这个人有10个照片,再生成一个1到10的随机矩阵,选取第3个元素作为图片的id。ID和id就定位出了测试图片的绝对路径
3,两者进行匹配的函数是YanPiPei这里,因为项目需要,我这里训练样本只需要告诉是哪个人就可以了。剩下的工作由YanPiPei函数进行。大家根据需要,可以灵活修改。
-----------------------本文系原创,转载请注明作者:yanzi1225627
相关文章推荐
- 形态学图像处理(matlab代码测试)
- MATLAB中图像处理的函数
- Matlab图像处理学习笔记(一):二值化、开操作、连通区域提取、重心、ROI
- Matlab图像处理之均值滤波
- 基于MATLAB GUI的图像处理软件平台的开发(转自深寒的博客)
- 第121课: Spark Streaming性能优化:通过摄像头图像处理案例来说明Spark流处理性能评估新方法及性能调优参数测试
- Matlab数字图像处理基础【7】
- Matlab图像处理常用函数归类总结
- MATLAB图像处理基础知识
- matlab图像处理
- MATLAB图像处理命令
- MATLAB 图像处理-线性变换和直方图均衡
- matlab图像处理基础
- MATLAB图像处理
- 【Matlab图像处理】截取图像中的矩形区域(可不平行于坐标轴)并保存为图片
- 【图像处理】MATLAB:表示与描述
- 图像处理 估计退化函数之运动模糊和矩阵matlab运算的一些实验情况
- Matlab 图像处理 形态学 腐蚀 膨胀 开闭运算 连通分量
- Matlab图像处理笔记(一)
- Camera 图像处理原理分析- 亮度及曝光控制