首页 > 其他分享 >通过光流法检测运动物体,得到图像运动场

通过光流法检测运动物体,得到图像运动场

时间:2023-03-22 20:01:00浏览次数:39  
标签:Xn hm5 wm5 运动场 Xnp1 图像 光流法 运动

1.算法描述 1950年,Gibson首先提出了光流的概念,所谓光流就是指图像表现运动的速度。物体在运动的时候之所以能被人眼发现,就是因为当物体运动时,会在人的视网膜上形成一系列的连续变化的图像,这些变化信息在不同时间,不断的流过眼睛视网膜,就好像一种光流过一样,故称之为光流。光流法检测运动物体的原理:首先给图像中每个像素点赋予一个速度矢量(光流),这样就形成了光流场。如果图像中没有运动物体,光流场连续均匀,如果有运动物体,运动物体的光流和图像的光流不同,光流场不再连续均匀。从而可以检测出运动物体及位置。

应用背景:

   根据图像前景和背景的运动,检测视频的变化,空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。可以用来检测运动抖动物体

关键技术:

   当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的信息不断“流过”视网膜(即图像平面),好像一种光的“流”,故称之为光流(optical flow)。

   光流法(Optical flow or optic flow)是关于视域中的物体运动检测中的概念。用来描述相对于观察者的运动所造成的观测目标、表面或边缘的运动。光流法在样型识别、计算机视觉以及其他影像处理领域中非常有用,可用于运动检测、物件切割、碰撞时间与物体膨胀的计算、运动补偿编码,或者通过物体表面与边缘进行立体的测量等等。

光流场,它是指图像中所有像素点构成的一种二维(2D)瞬时速度场,其中的二维速度矢量是景物中可见点的三维速度矢量在成像表面的投影。

所以光流不仅包含了被观察物体的运动信息,而且还包含有关景物三维结构的丰富信息"

    下面是针孔相机模型,随着3D点在空间中运动,相应的图像点也在移动.运动场由图像中所有图像点的运动矢量组成

1.png

这样,我们回想SLAM14讲的内容:Puv=KPc

2.png

假设相机描绘的是动态场景,现在将上式对时间求导,可以得到:

3.png

这里

4.png

就是我们说的运动场,向量u取决于图像上的2d坐标和时间t.

这里

5.png

是相应的3D运动,其与运动场的关系是: 其中,M是一个2*3的矩阵.

6.png

这就代表着,对于一个特定的图像点上, 运动场 相对于 位于M的零空间中的3D运动 是不变的.

运动场是理想的构造,描述了2D-3D之间的运动关系.

但实际上,只能基于对图像数据的测量来近似真实的运动场.

问题在于,在大多数情况下,每个图像点都有一个单独的运动,因此必须通过对图像数据的邻域操作来局部测量。结果,无法为某些类型的邻域确定正确的运动场,而是通常被称为光流的近似值

总之,不能正确测量所有像点的运动场,故光流是运动场的近似值。

有几种不同的方法可以根据应如何进行光学估算的不同标准来计算光流。

2.仿真效果预览 matlab2022a仿真结果如下:

7.png8.png9.png

3.MATLAB核心程序

fr_f40=rgb2gray(f40);     
Xn=double(fr_f1);
Xnp1=double(fr_f40);
 
%get image size and adjust for border  获取图像对边界进行调整
[h,w]=size(fr_f1);  
hm5=h-5; wm5=w-5;
z=zeros(h,w); v1=z; v2=z;
 
%initialize        初始化
dsx2=v1; dsx1=v1; dst=v1;
alpha2=625;
imax=20;
 
%Calculate gradients  计算梯度
dst(5:hm5,5:wm5) = ( Xnp1(6:hm5+1,6:wm5+1)-Xn(6:hm5+1,6:wm5+1) + Xnp1(6:hm5+1,5:wm5)-Xn(6:hm5+1,5:wm5)+ Xnp1(5:hm5,6:wm5+1)-Xn(5:hm5,6:wm5+1) +Xnp1(5:hm5,5:wm5)-Xn(5:hm5,5:wm5))/4;
dsx2(5:hm5,5:wm5) = ( Xnp1(6:hm5+1,6:wm5+1)-Xnp1(5:hm5,6:wm5+1) + Xnp1(6:hm5+1,5:wm5)-Xnp1(5:hm5,5:wm5)+ Xn(6:hm5+1,6:wm5+1)-Xn(5:hm5,6:wm5+1) +Xn(6:hm5+1,5:wm5)-Xn(5:hm5,5:wm5))/4;
dsx1(5:hm5,5:wm5) = ( Xnp1(6:hm5+1,6:wm5+1)-Xnp1(6:hm5+1,5:wm5) + Xnp1(5:hm5,6:wm5+1)-Xnp1(5:hm5,5:wm5)+ Xn(6:hm5+1,6:wm5+1)-Xn(6:hm5+1,5:wm5) +Xn(5:hm5,6:wm5+1)-Xn(5:hm5,5:wm5))/4;
 
 
for i=1:imax
   delta=(dsx1.*v1+dsx2.*v2+dst)./(alpha2+dsx1.^2+dsx2.^2);
   v1=v1-dsx1.*delta;
   v2=v2-dsx2.*delta;
end;

标签:Xn,hm5,wm5,运动场,Xnp1,图像,光流法,运动
From: https://blog.51cto.com/matworld/6143146

相关文章

  • 通过光流法检测运动物体,得到图像运动场
    1.算法描述       1950年,Gibson首先提出了光流的概念,所谓光流就是指图像表现运动的速度。物体在运动的时候之所以能被人眼发现,就是因为当物体运动时,会在人的视网膜......
  • 图像二值化的指令集加速例子
    以下代码基于VS2015、Qt5.9和OpenCV430,CPU型号是IntelCorei5-7400。功能是对图像进行二值化。下面直接上代码:voidmain(){Matimage(1024,1024,CV_8UC1,Scala......
  • SDL应用之YUV图像与音频输出
    1.YUV简介   YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素......
  • 人工智能肺炎图像识别模型-企业模型_科研机构应用
    什么是肺炎?肺炎是一种肺部炎症,主要影响称为肺泡的小气囊。alveoliwithfluid有液体肺泡(病态)healthalveoli健康的肺泡blockageofthebronchiole细支气管阻塞normalbro......
  • 图像处理之sobel算子
    ​​​​1sobel算子的基本概念Sobel算子是一个主要用于边缘检测的离散微分算子(discretedifferentiationoperator)。它结合了高斯平滑和微分求导,用来计算图像灰度函数的近......
  • 图像的双边滤波matlab仿真
    1.算法描述图像去噪是用于解决图像由于噪声干扰而导致其质量下降的问题,通过去噪技术可以有效地提高图像质量,增大信噪比,更好的体现原来图像所携带的信息。在我们的图像中常......
  • m基于KSVD字典训练法的图像噪声滤波matlab仿真,对比图像中值滤波,ACWMF滤波,DWMR滤波以
    1.算法描述K-SVD算法是一种新型的字典训练法,其基本原理是基于K-SVD算法改进所得到的,其主要过程是字典的训练过程,其具有非常好的自适应性能。该算法的整体流程图如下图所示:......
  • m基于KSVD字典训练法的图像噪声滤波matlab仿真,对比图像中值滤波,ACWMF滤波,DWMR滤波以
    1.算法描述       K-SVD算法是一种新型的字典训练法,其基本原理是基于K-SVD算法改进所得到的,其主要过程是字典的训练过程,其具有非常好的自适应性能。该算法的整体流......
  • 图像处理之Canny边缘检测
    ​​​​1概述本节中,我们将一起学习OpenCV中边缘检测的各种算子和滤波器Canny算子、Sobel算子、Laplacian算子以及Scharr滤波器。2边缘检测的一般步骤在具体介绍之前,先来......
  • 【Android开发】高级组件-图像切换器
    图像切换器(ImageSwitcher),用于实现类似于Windows操作系统的“Windows照片查看器”中的上一张、下一张切换图片的功能。在使用ImageSwitcher时,必须实现V......