AIGC背后的技术分析 | 使用光流法进行人脸追踪

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
简介: 使用光流法进行人脸追踪

640.jpg


# 01、背景知识



## 1●光流法

目前,光流(optical flow)法是运动图像分析的重要方法之一,它是由James J. Gibson于20世纪40年代首先提出的。它是像素的运动瞬时速度,即空间中的运动物体在观察平面上的像素运动的瞬时速度。光流利用图像序列中像素在时间域上的变化与相邻帧之间的相关性,找到当前帧跟上一帧之间存在的对应关系,从而计算出相邻帧之间的物体运动信息。

在计算机视觉中,Lucas–Kanade算法是一种两帧差分的光流估计算法,它是由Bruce D. Lucas和Takeo Kanade提出的。这个算法是目前最常见、最流行的。它计算两帧在时间在t~t + δt每个像素位置的移动。由于它基于图像信号的泰勒级数,这种方法称为差分,也就是对空间和时间坐标使用偏导数。Lucas-Kanade算法广泛用于图像对齐、光流法、目标追踪、图像拼接和人脸检测等课题中。
## 2●角点检测

角点检测(corner detection)是计算机视觉系统中用来获得图像特征的一种方法,也称为特征点检测。常用的角点检测算法有Harris和Shi-Tomasi,本例中用的就是Shi-Tomasi角点检测算法。

角点通常被定义为两条边的交点。例如,三角形有三个角,矩形有四个角,这些点就是角点,也叫作矩形、三角形的特征。上面所说的是严格意义上的角点,但是从广义来说,角点指的是拥有特定特征的图像点,这些特征点在图像中有具体的坐标,并具有某些数学特征(比如局部最大或最小的灰度)。
# 02、实现代码



Python实现代码如下所示(代码中的视频文件face.mp4提供下载):
js import cv2 import numpy as np feature_params = dict(maxCorners=100, qualityLevel=0.3, minDistance=7, blockSize=7) lk_params = dict(winSize=(15,15), maxLevel=2, criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03)) cap = cv2.VideoCapture('face.mp4') _, frame = cap.read() scaling_factor = 0.5 frame = cv2.resize(frame, None, fx=scaling_factor, fy=scaling_factor, interpolation=cv2.INTER_AREA) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) p0 = cv2.goodFeaturesToTrack(gray, mask=None, **feature_params) mask = np.zeros_like(frame) while True: _, frame = cap.read() frame = cv2.resize(frame, None, fx=scaling_factor, fy=scaling_factor, interpolation=cv2.INTER_AREA) frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) p1, st, err = cv2.calcOpticalFlowPyrLK(gray, frame_gray, p0, None, **lk_params) good_new = p1[st == 1] good_old = p0[st == 1] for i,(new,old) in enumerate(zip(good_new,good_old)): a,b = new.ravel() c,d = old.ravel() cv2.line(mask, (a, b),(c, d),(0, 150, 0), 1) cv2.circle(frame, (a, b), 3, (0, 255, 0), -1) gray = frame_gray.copy() p0 = good_new.reshape(-1, 1, 2) img = cv2.add(frame, mask) cv2.imshow("Output", img) k = cv2.waitKey(30) if k == 27: break cap.release() cv2.destroyAllWindows()
# 03、运行结果



运行以上代码的输出结果如图1所示。

640.jpg


■ 图1 人脸追踪结果

04、代码分析

在本程序中,首先设置了角点(特征点)检测的参数,如最大角点、质量等级、最小距离和区块大小,这些用来计算良好的特征以便进行跟踪。接着设置光流场的参数,如窗口大小、最大等级和终止标准,其中最大等级为使用图像金字塔(图像金字塔是以多个分辨率表示图像的一种有效且简单的概念,它是分辨率逐层降低的、以金字塔形状排列的、图像集合)的层数。其次加载视频,获取到视频的第一帧,调整第一帧的大小并转换为灰度图。goodFeaturesToTrack()函数是寻找好的角点。接着创建一个掩膜mask,以便后面绘制角点的光流轨迹。

在循环中使用方法calcOpticalFlowPyrLK()计算光流,该方法通过金字塔光流方法Lucas-Kanade计算特征集的光流,获取角点的新位置。接着选取好的角点,筛选出旧的角点对应的新角点,并且绘制角点的轨迹。最后,更新当前帧和当前角点的位置,并显示输出到屏幕。copy()函数创建当前帧的一个副本,cv2中的add()方法将两幅图片进行叠加。

在程序的输出中,可以在屏幕上看到显示的角点,并且随着画面的移动,角点也会随之移动。

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 自动驾驶
「AIGC」Agent AI智能体的未来:技术、伦理与经济的交汇点
Agent AI智能体融合机器学习与深度学习,推动社会效率与创新,但也引发伦理、法律及就业挑战。技术上,它们能自我优化、积累知识,如自动驾驶汽车通过学习改善驾驶。伦理上,需建立AI准则,确保透明度和责任归属,如医疗AI遵循道德原则。经济上,AI改变就业市场结构,创造新职业,如AI顾问,同时要求教育体系更新。未来,平衡技术进步与社会影响至关重要。
145 0
|
2月前
|
存储 自然语言处理 API
通义万相AIGC技术Web服务体验评测
随着人工智能技术的不断进步,图像生成技术已成为创意产业的一大助力。通义万相AIGC技术,作为阿里云推出的一项先进技术,旨在通过文本到图像、涂鸦转换、人像风格重塑及人物写真创建等功能,加速艺术家和设计师的创作流程。本文将详细评测这一技术的实际应用体验。
121 4
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
要说2024年最热的技术,还得是AIGC
要说2024年最热的技术,还得是AIGC
38 0
|
19天前
|
机器学习/深度学习 数据采集 人工智能
作为AIGC技术的一种应用-bard
8月更文挑战第22天
31 15
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
|
1月前
|
人工智能
AIGC图生视频技术下的巴黎奥运高光时刻
图生视频,Powered By「 阿里云视频云 」
86 4
|
2月前
|
机器学习/深度学习 自然语言处理 算法
AIGC技术的核心算法与发展趋势
【7月更文第27天】随着人工智能技术的迅速发展,AIGC技术已经逐渐成为内容创造领域的一个重要组成部分。这些技术不仅能够帮助人们提高工作效率,还能创造出以往难以想象的新颖内容。本文将重点介绍几种核心算法,并通过一个简单的代码示例来展示如何使用这些算法。
47 7
|
2月前
|
存储 人工智能 搜索推荐
|
2月前
|
机器学习/深度学习 人工智能 算法
AIGC技术在创意设计行业的应用与影响
【7月更文第26天】随着人工智能技术的迅速发展,AIGC(Artificial Intelligence Generated Content,人工智能生成内容)已成为创意设计行业的一个重要趋势。AIGC不仅可以提高设计效率,还能激发设计师的创造力,推动设计领域的创新。本文将探讨AIGC技术在创意设计中的具体应用,并通过一个基于Python的简单示例展示如何使用AIGC技术生成创意设计元素。
48 1

热门文章

最新文章