光流法的例子1

#coding = utf-8
import cv2
import numpy as np
from pylab import *
import matplotlib.pyplot as plt
import pdb
frame1 =cv2.imread(r"tes1t.png")
# cap = cv2.VideoCapture(‘GOPR1745.avi‘)
# ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)

# ret, frame2 = cap.read()
frame2 =cv2.imread(r"tes2t.png")
next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
flow = cv2.calcOpticalFlowFarneback(prvs,next, 0.5, 3, 15, 3, 10, 1.2, 0)

size = flow.shape
print size
delta_x = flow[:,:,0]
delta_y = flow[:,:,1]
u = delta_x
v = delta_y
print ‘u‘,u ,‘v‘,v
contourf(u)
colorbar()
show()
contourf(v)
colorbar()
show()
plt.figure()
Q = plt.quiver(u, v)
qk = plt.quiverkey(Q, 0.5, 0.98, 2, r‘$2 \frac{m}{s}$‘, labelpos=‘W‘,
                   fontproperties={‘weight‘: ‘bold‘})
l, r, b, t = plt.axis()
dx, dy = r - l, t - b
plt.axis([l - 0.05*dx, r + 0.05*dx, b - 0.05*dy, t + 0.05*dy])

plt.title(‘flow picture‘)
xx = np.arange(size[1])
yy = np.arange(size[0])
g_xx,g_yy = np.meshgrid(xx,yy)
print ‘xx.shape‘,xx.shape,‘yy.shape‘,yy.shape
print ‘g_xx.shape‘,g_xx.shape,‘g_yy.shape‘,g_yy.shape
new_image = frame1.copy()
for i in range(size[0]):
    for j in range(size[1]):
        try:
            new_image[i,j,:]=frame1[i+int(round(delta_x[i,j])),j+int(round(delta_y[i,j])),:]
        except:
            new_image[i,j,:] = [0,0,0]

# # pdb.set_trace()
# ng_xx = g_xx + delta_x
# ng_yy = g_yy + delta_y

# ng_xx[ng_xx <0] = 0
# ng_xx[ng_xx>size[0]-1]=size[0]-1
# ng_yy[ng_yy <0] = 0
# ng_yy[ng_yy>size[1]-1]=size[1]-1

# ng_xx = np.asarray(ng_xx,dtype="int64")
# ng_yy = np.asarray(ng_yy,dtype="int64")
# new_image = frame1.copy()

# new_image[g_yy,g_xx,:] = frame1[ng_yy,ng_xx,:]

fig, axes = plt.subplots(nrows=2, ncols=2)
ax0, ax1, ax2, ax3 = axes.flat

ax0.imshow(frame1)

ax1.imshow(frame2)

ax2.imshow(new_image)

ax3.imshow(new_image-frame1)
show()

# plt.figure()
# Q = plt.quiver(u[::20,::20],v[::-20,::-20])
# qk = plt.quiverkey(Q, 0.5, 0.92, 2, r‘$2 \frac{m}{s}$‘, labelpos=‘W‘,
#                    fontproperties={‘weight‘: ‘bold‘})
# imshow(v)
# colorbar()

#

时间: 2024-11-08 16:41:32

光流法的例子1的相关文章

OpenCv_Image与光流法中设置ROI区域

无论是在图片显示中或者是在光流法寻找角点的过程中,我们都会遇到ROI这个东西.它的作用就是让我们能够专注于图像或者当前视频帧中的某一块区域(我们称之为感兴趣区域) 进行处理,而不是对整个图像或者是整个视频帧进行处理,这不仅能够排除掉一些不必要的误差干扰,还能减少运算量.接下来分别说明来图像和光流法视频中如何设置ROI. 图像设置ROI 代码如下: /* * Description : setting ROI in image * Author : Liulongpo * Date : 2015年

【图像处理】openCV光流法追踪运动物体

openCV光流法追踪运动物体 email:[email protected] 一.光流简单介绍 摘自:zouxy09 光流的概念是Gibson在1950年首先提出来的.它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的相应关系.从而计算出相邻帧之间物体的运动信息的一种方法.一般而言,光流是因为场景中前景目标本身的移动.相机的运动,或者两者的共同运动所产生的. 研究光流场的目的就是为了从图片序列中近似得到

光流法optical flow

光流是图像亮度的运动信息描述.光流法计算最初是由Horn和Schunck于1981年提出的,创造性地将二维速度场与灰度相联系,引入光流约束方程,得到光流计算的基本算法.光流计算基于物体移动的光学特性提出了2个假设: ①运动物体的灰度在很短的间隔时间内保持不变: ②给定邻域内的速度向量场变化是缓慢的. 算法原理 假设图像上一个像素点(x,y),在t时刻的亮度为E(x+Δx,y+Δy,t+Δt),同时用u(x,y0和v(x,y)来表示该点光流在水平和垂直方向上的移动分量: u=dx/dt v=dy/

运动物体检测——光流法(摄像机固定)

前面的一篇文章谈了高斯背景模型在运动物体检测中的应用.本文主要讨论另一种方法——光流法.与高斯背景模型的方法不同,光流法可以用于摄像机固定和摄像机运动的情形,但本文只就摄像机固定的情况进行讨论,即不涉及摄像机运动预测问题. 光流法的介绍 在空间中,运动可以用运动场描述.而在一个图像平面上,物体的运动往往是通过图像序列中不同图象灰度分布的不同体现的.从而,空间中的运动场转移到图像上就表示为光流场,光流场反映了图像上每一点灰度的变化趋势. 光流可以看作带有灰度的像素点在图像平面运动产生的瞬时速度场.

LK 光流法简介

前言 若假定一个局部区域的像素运动是一致的,则可以用这个新的约束条件替代前文中提到的全局速度平滑约束条件.这种光流算法就叫做 LK 光流法. LK 光流法的推导 首先,需要推导出光流约束方程. 这一步和前文 HS 光流法中的光流约束方程推导是一样的. 分析某像素点附近 n x n 区域,假定局部区域的像素运动是一致的,则可以建立类似如下形式的 n * n 个方程: (1) 如果在这个窗口内包含两条或以上边缘,则可以求解此系统方程. 下面将此系统方程写成向量式: (2) 这里的 u 是速度向量.

光流法

原文:http://blog.csdn.net/crzy_sparrow/article/details/7407604 本文目录: 一.基于特征点的目标跟踪的一般方法 二.光流法 三.opencv中的光流法函数 四.用类封装基于光流法的目标跟踪方法 五.完整代码 六.参考文献 一.基于特征点的目标跟踪的一般方法 基于特征点的跟踪算法大致可以分为两个步骤: 1)探测当前帧的特征点: 2)通过当前帧和下一帧灰度比较,估计当前帧特征点在下一帧的位置: 3)过滤位置不变的特征点,余下的点就是目标了.

Horn&ndash;Schunck 光流法与其算法理解(gup cuda)

1. 基于Horn-Schunck模型的光流算法 1.1     光流的约束条件 光流 的假设条件认为图像序列,在时间t 的某一像素点与在时间t+1的这一像素点的偏移量保持不变,即 .这就是灰度值守恒假设,通过Taylor展开,就能得到光流的约束条件(OFC): ,其中下标表示图像的梯度. 1.2     Horn-Schunck 模型 1981年,Horn和Schunck根据同一个运动物体的光流场具有连续.平滑的特点, 提出一个附加约束条件,将光流场的整体平滑约束转换为一个变分的问题.它的能量

L-K光流法---视频追踪

光流法基本概念介绍如下:https://chunqiu.blog.ustc.edu.cn/?p=661 原文作者阐述的十分详细,按照我一个行外人的理解来说就是一个运动模糊轨迹实时检测.视频光流检测所有代码如下: % 光流法测试--视频 clc clear close all % 读取文件对象 videoReader = vision.VideoFileReader('D:\桌面\图像处理\00-1- 1.avi','ImageColorSpace','Intensity','VideoOutpu

HS 光流法详解

前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像信息不断 "流过" 视网膜,好像是一种光的  "流",所以被称为光流. 光流是基于像素点定义的,所有光流的集合称为光流场.通过对光流场进行分析,可以得到物体相对观察者的运动场.在这过程中分析的算法称为光流法. HS 光流法的推导 HS光流计算基于物体移动的光学特性的两个假设: 1. 运动