【图像处理】人眼区域分割(2)之梯度积分投影曲线

2024-03-07 16:59

本文主要是介绍【图像处理】人眼区域分割(2)之梯度积分投影曲线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

## 人眼区域分割(2)

在人眼区域分割(1)中,对人脸图片求水平投影曲线(也叫IPF),其反映的是每行像素和的变化曲线,即反应了整体的灰度变化,并没有反映眼睛局部灰度变化明显的特点,所以在曲线中不能唯一而又准确的显示眼睛的位置,若想找到眼睛,则必须要良好的滤波。对于此,采用了其他的投影方法,并通过该曲线来截取人眼区域。

目录:

  • 梯度积分投影
  • 分析投影曲线
  • 人眼区域分割
  • 总结

一、梯度积分投影

其实我们用sobel算子计算人脸水平梯度图像,很容易发现,眼睛这一区域局部灰度变化明显。这也从侧面验证了计算梯度图的投影曲线的正确性。首先我们生成尺度不变行梯度算子,用该算子与图像进行卷积运算,再对图像进行水平投影计算。
  1. 生成尺度不变梯度算子

L = r o u n d ( n / 100 ) ∗ 2 + 1 L=round(n/100)*2+1 L=round(n/100)2+1

其中n是图像的宽度,L为该算子的长度,该算子的形式为下:

 ![这里写图片描述](https://img-blog.csdn.net/20171130205543668?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1bGluemh1bGlubGlu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

尺度不变梯度算子长度应该跟随图片的宽度而变化,即图片宽度除以的数字是可以改变的,例如图片宽度不足100,则可除以10,再乘以2加1。

  1. 卷积运算

用该算子与图片进行卷积运算,注意遍历图像进行计算时行列的初始值

代码:

//卷积,卷积后的梯度图片保存到test中int border = len / 2;//len为尺度不变行梯度算子的长度Mat test(Gauss.size(), Gauss.type(), Scalar(0));uchar *t = test.data;uchar *g = Gauss.data;int step = Gauss.step[0];double sum = 0; for (int i = 0; i < rows; i++){for (int j = border; j < cols - border; j++){sum = 0;for (int k = -border; k <= border; k++){sum += Scale[border+k] * g[i*step + j+k];}//一定要做饱和处理if (sum > 255)sum = 255;if (sum < 0)sum = 0;t[i*step + j] = sum;}}

结果图:从图片也可以看出,水平方向上眼睛梯度值较大而且滤去了眉毛的影响。

这里写图片描述

3 计算水平灰度曲线

	// 这里计算了上半张图的投影曲线(rows/2)vector<int>curve(rows / 2);for (int i = 0; i < rows / 2; i++){curve[i] = 0;for (int j = 0; j < cols; j++){uchar *p = test.data + i*test.step[0] + j;curve[i] += *p;}}

二、分析投影曲线

  1. 画出该投影曲线

其实曲线的最大值点就为眼睛所在的行标eyePos

三、人眼区域分割

  1. 对eyePos向前向后求波谷,可以确定人眼区域的上下部分,如下图

这里写图片描述

note:求波谷前可对曲线进行滤波
同时注意曲线波谷的求法,因为曲线显示在图片时经过缩放了,但实则曲线可能在波谷是尖锐的点,即用一阶导为0,二阶导为正的方法不能正确的找到我们期待的波谷,因为在尖锐处的点是没有导数的。

//利用简单的数值比较方法寻找波谷
for (int i = eyePosx; i < curve.size()-1; i++){if (curve[i - 1]>curve[i] && curve[i + 1]>curve[i]){range2 = i;break;}}

2.区域分割
若所获得人脸图片大部分包含人脸,则只需要截取上图中绿色横线包含的区域,若图像中不包含大部分人脸,可以对图片求取肤色部分,然后进行二值化求取轮廓,其中最大的轮廓就为人脸的轮廓,如下图其中红色方框与绿色坐标的相交部分即为人眼区域。如下图所示:

总结

利用尺度不变梯度算子进行卷积从而计算梯度投影曲线发现曲线中的最大值点就为眼睛所在的行坐标。利用眼睛局部灰度变化明显的特征从而将眼睛区域分割开,为下一步精准定位去除更多干扰,同时这一中方法抗噪性强并不依赖于滤波。

这篇关于【图像处理】人眼区域分割(2)之梯度积分投影曲线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784216

相关文章

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

微积分-积分应用5.4(功)

术语“功”在日常语言中用来表示完成一项任务所需的总努力量。在物理学中,它有一个依赖于“力”概念的技术含义。直观上,你可以将力理解为对物体的推或拉——例如,一个书本在桌面上的水平推动,或者地球对球的向下拉力。一般来说,如果一个物体沿着一条直线运动,位置函数为 s ( t ) s(t) s(t),那么物体上的力 F F F(与运动方向相同)由牛顿第二运动定律给出,等于物体的质量 m m m 与其

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^

AI学习指南深度学习篇-带动量的随机梯度下降法的基本原理

AI学习指南深度学习篇——带动量的随机梯度下降法的基本原理 引言 在深度学习中,优化算法被广泛应用于训练神经网络模型。随机梯度下降法(SGD)是最常用的优化算法之一,但单独使用SGD在收敛速度和稳定性方面存在一些问题。为了应对这些挑战,动量法应运而生。本文将详细介绍动量法的原理,包括动量的概念、指数加权移动平均、参数更新等内容,最后通过实际示例展示动量如何帮助SGD在参数更新过程中平稳地前进。

参会邀请 | 第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)将于2024年9月13日-15日在中国张家口召开。 MVIPIT 2024聚焦机器视觉、图像处理与影像技术,旨在为专家、学者和研究人员提供一个国际平台,分享研究成果,讨论问题和挑战,探索前沿技术。诚邀高校、科研院所、企业等有关方面的专家学者参加会议。 9月13日(周五):签到日 9月14日(周六):会议日 9月15日(周日

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中,优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率,还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化,传统的优化算法在许多领域逐渐暴露出其不足之处。带动量的随机梯度下降法(Momentum SGD)应运而生,并被广泛应用于各类深度学习模型中。 在本篇文章中,我们将深入探讨带动量的随

常见的投影类型及详细解释

常见的地图投影根据保留地球的不同几何特性(形状、面积、距离等)可以分为几大类。以下是常见的投影类型及详细解释: 一、正形投影(保持形状) 1. 墨卡托投影(Mercator Projection) 特点:保持形状,但严重扭曲面积,尤其在高纬度地区。应用:海洋导航、在线地图(如 Google Maps 在小比例尺下使用)。原理:投影将地球表面展开成矩形,经线垂直,纬线等距。优点:航线在图上为直

Matlab中BaseZoom()函数实现曲线和图片的局部放大

BaseZoom工具下载链接: 链接:https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd=9dyl 提取码:9dyl 下载完之后将工具包放置合适的路径下,并在matlab中“设置路径”中添加相应的路径; 注:可以先运行如下图片中的语句,看看是否报错;如果报如下错误,说明matlab未安装“Image Processing Toolbox”工

什么是GPT-3的自回归架构?为什么GPT-3无需梯度更新和微调

文章目录 知识回顾GPT-3的自回归架构何为自回归架构为什么架构会影响任务表现自回归架构的局限性与双向模型的对比小结 为何无需梯度更新和微调为什么不需要怎么做到不需要 🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习 🦅个人主页:@逐梦苍穹 📕所属专栏:人工智能 🌻gitee地址:x

08_Tensorflow2图像处理秘籍:让图片‘听话’,AI也能成艺术家!

1. 图像数据处理 图像处理是指图像在神经网络训练之前的预处理,是人工智能视觉领域的重要组成部分。通过图像处理技术对图像数据集进行处理有两方面的作用:(1)将原始数据集处理成合格的、规范是数据集;(2)通过图像处理技术实现对原始数据集的增广。 # 库引入import matplotlib.pyplot as pltimport tensorflow as tf# 图像读取image_