车流检测之halcon光流法算法实现

* This example program shows how to use optical_flow_mg to compute the optical flow in an image sequence and how to segment the optical flow.

*这个示例程序显示了如何使用._flow_mg来计算图像序列中的光流,以及如何分割光流。

dev_update_off ()

dev_close_window ()

* Initialize the image sequence.

初始化图像序列

read_image (Image1, 'xing/xing000')

dev_open_window_fit_image (Image1, 0, 0, -1, -1, WindowHandle)

* Set the display parameters for the vector field.

设置现实的矢量场参数

dev_set_paint (['vector_field',6,1,2])

定义灰度值输出模型,

dev_set_draw ('margin')

for I := 1 to 587 by 1

    * Read the current image of the image sequence.

     读连续的图像序列

    read_image (Image2, 'xing/xing'+I$'03')

    * Compute the optical flow.

      计算光流

    optical_flow_mg (Image1, Image2, VectorField, 'fdrig', 0.8, 1, 8, 5, 'default_parameters', 'accurate')

*计算两幅图片的光流场。

参数:1&2是输入的两个单色图片序列的连续图片,

            3为输出的光流结果

           4是求取光流三种算法的选取其中的一种

           5高斯平滑初始偏差初始值

           6积分滤波偏差初始值

           7平滑项在数据项中的权重

           8梯度恒定性相对于灰度值恒定性的权重

           9多栅算法的名字

          10多栅算法的变量 

    * Segment the optical flow vector field.

    分割矢量场

    threshold (VectorField, Region, 1, 10000)

    * Display the current image of the sequence.  Note that this means that the optical flow vectors will also be displayed at the "end" of the movementof the objects in the image.

    显示序列的当前图像。注意,这意味着光流矢量也将显示在图像中物体运动的“末端”。

    dev_display (Image2)

    * Display the optical flow.

    dev_set_color ('yellow')

    dev_set_line_width (1)

    dev_display (VectorField)

    * Display the segmented optical flow.

    dev_set_color ('green')

    dev_set_line_width (3)

    dev_display (Region)

    * Copy the current image to the previous image of the sequence.

    *将当前图像复制到序列的前一个图像。

    copy_obj (Image2, Image1, 1, 1)

endfor

 

背景介绍

 

光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。

当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的信息不断“流过”视网膜(即图像平面),好像一种光的“流”,故称之为光流(optical flow)。光流表达了图像的变化,由于它包含了目标运动的信息,因此可被观察者用来确定目标的运动情况。

研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。运动场,其实就是物体在三维真实世界中的运动;光流场,是运动场在二维图像平面上(人的眼睛或者摄像头)的投影。

那通俗的讲就是通过一个图片序列,把每张图像中每个像素的运动速度和运动方向找出来就是光流场。那怎么找呢?咱们直观理解肯定是:第t帧的时候A点的位置是(x1, y1),那么我们在第t+1帧的时候再找到A点,假如它的位置是(x2,y2),那么我们就可以确定A点的运动了:(ux, vy) = (x2, y2) - (x1,y1)。

        那怎么知道第t+1帧的时候A点的位置呢? 这就存在很多的光流计算方法了。

1981年,Horn和Schunck创造性地将二维速度场与灰度相联系,引入光流约束方程,得到光流计算的基本算法。人们基于不同的理论基础提出各种光流计算方法,算法性能各有不同。Barron等人对多种光流计算技术进行了总结,按照理论基础与数学方法的区别把它们分成四种:基于梯度的方法、基于匹配的方法、基于能量的方法、基于相位的方法。近年来神经动力学方法也颇受学者重视。



作者:来套煎饼果子
链接:https://www.jianshu.com/p/f91a8a519a50
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用光学流跟踪关键点---30

原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 关键点:是多个方向上亮度变化强的区域。 opencv:版本是2.4. 光学流函数:calcOpticalFlowPyrLK()。(关键点侦测器使用goodFeaturesToTrack())二者结合。 相应的启动文…

基于Redis、Storm的实时数据查询实践

通过算法小组给出的聚合文件,我们需要实现一种业务场景,通过用户的消费地点的商户ID与posId,查询出他所在的商圈,并通过商圈地点查询出与该区域的做活动的商户,并与之进行消息匹配,推送相应活动信息到用户手…

从离散值中把值相近的放在一起

//30根细条得到30个长度值&#xff0c;选择出现值相近且出现次数最多的&#xff0c;算其均值作为输出 #include <iostream> using namespace std;int main() {double dRawdata[5] {1.1,1.2,1.3,2.5,3.2};//先升序排序double dSort[5][5] {0};double* p dRawdata;int a…

register_globals(全局变量注册开关)

register_globals&#xff0c;是php.ini文件里面的一个配置选项&#xff0c;接下来&#xff0c;我们可以通过例程来分析一下&#xff0c;当register_globals on 与 register_globals off 的时候&#xff0c;对php语言的一些安全影响。测试源代码如下&#xff1a;index.html 源…

精述IBM的MQTT协议和MQTT-S协议

一&#xff0e;MQTT简介 MQTT (Message Queuing Telemetry Transport) 是由IBM研发的构建在TCP/IP之上的简单轻量的消息协议&#xff0c;目标使用场景为受限制环境&#xff0c;如低带宽、高延迟、不可靠网络&#xff0c;很适用于M2M和IoT中。它的竞争协议包括XMPP协议和IETF的C…

20150103--SQL连接查询+视图-02

20150103--SQL连接查询视图-02 子查询 一条查询语句出现在另外一条查询语句的内部&#xff0c;这条语句就被称之为子查询语句。 子查询分类 子查询可以根据子查询返回的结果以及子查询出现的位置两种方式进行分类 按结果分类&#xff1a; 标量子查询&#xff1a;子查询返回的结…

QtQuick controls和controls2 自定义样式

2019独角兽企业重金招聘Python工程师标准>>> controls import QtQuick 2.7 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4Rectangle {color: "green"Button {id:buttontext: qsTr("Second page")anchors.centerIn: parentpr…

电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...

上门维修电脑已经非常普及了&#xff0c;上门维修电脑费用要比送修(送到维修店)费用高&#xff0c;送修电脑只有一项维修费用&#xff0c;上门维修电脑比送修多了一项费用&#xff0c;这项费用就是上门费。有人说维修电脑收取上门费用不合理&#xff0c;其实这样的说法非常自私…

jQuery属性筛选选择器

2019独角兽企业重金招聘Python工程师标准>>> 代码一 <h2>属性筛选选择器</h2><h3>[attval]、[att]、[att|val]、[att~val]</h3><div class"left" testattr"true" ><div class"div" testattr"t…

java 代码优化

Java程序中的内存管理机制是通过GC完成的&#xff0c;“一个对象创建后被放置在JVM的堆内存中&#xff0c;当永远不在应用这个对象的时候将会被JVM在堆内存中回收。被创建的对象不能再生&#xff0c;同时也没有办法通过程序语句释放”&#xff08;这个是《Java的GC机制》中提到…

Halcon中OCR的实现及关键函数解析

OCR的实现共分为两步&#xff0c;1是使用字符数据来训练OCR。2是使用OCR进行字符的识别。 训练分类器 训练分类器共分为4步&#xff1a; 1是使用阈值来分割字符区域&#xff1b; 2是调用append_ocr_trainf函数将字符加入训练集&#xff1b; 3是创建分类器&#xff1b; 4是…

MATLAB 长度和像素_Matlab中短时傅里叶变换 spectrogram和stft的用法

在Matlab中&#xff0c;做短时傅里叶变换需要使用函数spectrogram&#xff0c;而在Matlab2019中&#xff0c;引入了一个新的函数stft&#xff0c;下面我们就来看下这两个函数都如何使用。短时傅里叶变换的基本原理就是将数据分段加窗&#xff0c;做fft&#xff0c;在分段时会有…

Qt 【关于控件样式,鼠标进入、离开、点击】

比如举以下这个例子: QPushButton * okBtn; okBtn->setstylesheet("QPushButton{border-image:url(:/image/hello);}"); //这个是最常规的样式 okBtn->setstylesheet("QPushButton{border-image:url(:/image/hello);}" //…

图像处理基础——灰度共生矩阵

标准定义如下&#xff1a;对于取定的方向θ 和距离 d, 在方向为θ的直线上, 一个像元灰度为 i, 另一个与其相距为 d 像元的灰度为 j 的点对出现的频数即为灰度共生矩阵第(i, j)阵元的值。 怎样理解呢&#xff1f;看起来好复杂呀 呜呜呜 小白理解&#xff1a;灰度共生矩阵就…

iphone查看删除的短信_iPhone12发布!刚买的苹果手机短信全部消失了怎么办?

原标题&#xff1a;iPhone12发布&#xff01;刚买的苹果手机短信全部消失了怎么办&#xff1f;目前&#xff0c;人们的社交除了面对面交谈&#xff0c;用的最多的就是通过手机进行聊天&#xff0c;比如用QQ、微信和短信、邮件等方式&#xff0c;虽然短信不会用来一般的聊天&…

[唐诗]182宫中行乐词(其一)-李白

宫中行乐词(其一)-李白 小小生金屋&#xff0c; 盈盈在紫微。 山花插宝髻&#xff0c; 石竹绣罗衣。 每出深宫里&#xff0c; 常随步辇归。 只愁歌舞散&#xff0c; 化作彩云飞。

python基础之01数据类型-变量-运算浅解

python的数据类型 1 数字 数字分为整型&#xff08;int&#xff09;&#xff0c;长整型&#xff08;long&#xff09;&#xff0c;浮点型&#xff08;float&#xff09;&#xff0c;复数&#xff08;complex&#xff09; 整型较为常用的功能&#xff1a; >>> a-4 >…

使用Caffe进行手写数字识别执行流程解析

之前在 http://blog.csdn.net/fengbingchun/article/details/50987185 中仿照Caffe中的examples实现对手写数字进行识别&#xff0c;这里详细介绍下其执行流程并精简了实现代码&#xff0c;使用Caffe对MNIST数据集进行train的文章可以参考 http://blog.csdn.net/fengbingchun/…

obs可以装手机吗?_原神PC和手机数据互通吗 PC和手机可以一起玩吗

在原神中&#xff0c;很多玩家都在PC端创建了角色&#xff0c;那么疑问来了&#xff0c;PC端与手机端的账号会是互通的吗&#xff1f;下面小编就为大家带来原神PC和手机数据互通吗的相关内容&#xff0c;一起来看看吧&#xff01;更多攻略&#xff1a;原神攻略大全PC和手机数据…

学习linux第二周作业

第二周作业&#xff1a;本周作业内容&#xff1a;1、Linux上的文件管理类命令都有哪些&#xff0c;其常用的使用方法及其相关示例演示。touch,rm,mv,cp,file,ls,chmod,chown,ln,rename,touch 修改文件atime&#xff0c;如果文件不存在&#xff0c;那么创建该文件。rm&#xff1…