一、图像特征码计算优化方法
上一章的图像特征码提取算法是基于像素的三色值 。有时,图像中的少量像素差异可能会干扰识别结果 。有两种算法可以更好地识别:
将人脸图像的大小设置为合适的值(通常是越小越好),这样可以使人脸的特征更加突出,并且省略很多分散注意力的项目 。此外,在提取原始特征集后,使用PCA降维技术对原始特征集进行进一步处理,生成最终特征集,以更好地表征人脸 。将权重乘以标准欧几里得距离 。计算方法有两种:为每个区域像素设置不同的权重;设置整体权重,使人脸图像矩阵的差值一致 。这里使用第二种方法 。二、变异系数
【变异系数怎么算?降维和变异系数提升识别效果】变异系数是衡量数据中每个观察值的变异程度的统计量 。在比较两个或多个数据的变异程度时,如果度量单位与平均值相同,则可以直接使用标准差进行比较 。如果单位和(或)均值不同,则不能使用标准差来比较变异程度,而应使用标准差与均值的比值(相对值)进行比较 。
离散系数指标包括:全距离(范围)系数、平均差系数、方差系数和标准差系数等 。常用的是标准差系数,用CV(of)表示 。
CV( of ):标准差与平均值的比值 。
公式为:CV=σ/μCV=σ/μ
计算公式:
其中,X'代表X的平均值 。
——百度百科
变异系数可以消除由于均值不同而导致变异程度比较的干扰 。变异系数越小,数据与均值的偏差越小;反之,变异系数越大,数据与均值的偏差越大 。
这里对变异系数进行了改进,将标准差替换为方差,然后将改进后的变异系数的倒数作为调整系数,计算欧式距离 。偏差较小的权重赋予较大的权重 。最后将标准欧式距离乘以调整权重得到平均差值,使改进后的欧式矩阵能更好地表示人脸的整体差异 。
文章插图
三、代码示例
def get_distance(img,findimg): newsize=(21,21) fimg=cv2.resize(findimg,newsize) img = cv2.resize(img,newsize) my_img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) my_fimg = cv2.cvtColor(fimg, cv2.COLOR_BGR2GRAY) # PCA降维 pcaimg = mlpy.PCA() pcaimg.learn(my_img) pca_img = pcaimg.transform(my_img,k=1) pca_img=pcaimg.transform_inv(pca_img) pcafimg = mlpy.PCA() pcafimg.learn(my_fimg) pca_fimg = pcaimg.transform(my_fimg,k=1) pca_fimg = pcafimg.transform_inv(pca_fimg) # 计算基于整体权重的欧氏距离 return get_EuclideanDistance(pca_img,pca_fimg)
其余代码同上一节 。
运行效果:
文章插图
郑重声明:本文版权归原作者所有,转载文章仅出于传播更多信息之目的 。如果作者信息标注有误,请尽快联系我们修改或删除,谢谢 。
- 宝宝张嘴睡觉怎么回事 当心这些疾病来袭
- 欢瑞世纪收三罚单怎么回事?欢瑞世纪违法案行政处罚决定书披露
- 家用地漏什么牌子好(地漏选购技巧,教你怎么
- 孕妇脾气暴躁的原因 孕妇脾气暴躁该怎么办
- 宝宝流鼻涕怎么回事 5个因素要注意
- 晚餐吃的晚有什么危害 7点后晚餐应该怎么吃
- 男子戴十多个口罩怎么回事 男子为什么戴十多个口罩原因曝光太搞笑了
- 王者荣耀名字怎么打出超过六个字的名字 王者荣耀名字可以更改吗
- 跑跑卡丁车手游前往路易的玩具屋搜寻宝藏怎么完成?任务攻略
- 怎么开通花呗收款?支付宝开通花呗收钱图文教程