主要内容

愿景。BlockMatcher

估计图像或视频帧之间的运动

描述

估计图像或视频帧之间的运动。

  1. 创建愿景。BlockMatcher对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

例子

blkMatcher=愿景。BlockMatcher返回一个对象,blkMatcher它可以估计两幅图像或两帧视频帧之间的运动。对象通过在搜索区域上移动像素块来使用块匹配方法来执行这个估计。

blkMatcher=愿景。BlockMatcher (名称,值使用一个或多个名称-值对设置属性。将每个属性名用引号括起来。例如,blkMatcher =视觉。BlockMatcher (“ReferenceFrameSource”,输入端口的)

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

参考系源,指定为输入端口的“属性”.当你设置ReferenceFrameSource财产输入端口的时,必须指定参考系输入一步块匹配器对象的方法。

参考帧和当前帧之间的帧数,指定为大于或等于零的标量整数。属性时应用此属性ReferenceFrameSource财产“属性”

最佳匹配搜索方法,指定为“详尽”“三步走”.指定如何在帧中定位像素块k+1,与帧中的像素块最匹配k.如果将此属性设置为“详尽”,块匹配器对象选择像素块在帧中的位置k+ 1。块匹配器通过在搜索区域上一次一个像素移动块来实现这一点,这需要大量的计算。

如果将此属性设置为“三步走”,块匹配器对象在帧中搜索像素块k+1,与帧中的像素块最匹配k使用稳定减小的步长。对象开始时的步长大约等于最大搜索范围的一半。在每一步中,对象将搜索区域的中心点与区域边界上的8个搜索点进行比较,并将中心点移动到与中心点值最近的搜索点。然后该对象将步长减少一半,并再次开始该过程。这个选项计算成本较低,尽管有时它不能找到最优解。

块的大小,以像素为单位指定为两元素向量。

最大位移搜索,指定为两个元素向量。指定像素块中任何中心像素可以移动的最大像素数,从一个图像到另一个图像或从一帧到另一帧。块匹配器对象使用此属性来确定搜索区域的大小。

块之间的匹配条件,指定为均方误差(MSE)“平均绝对差”(MAD)

运动输出形式,指定为“平方”“复杂形式的水平和垂直分量”

输入图像的细分重叠,以像素为单位指定为二元矢量。

定点属性

定点运算的舍入方法,指定为“地板”“天花板”“收敛”“最近的”“圆”“简单”,或“零”

整数输入超出范围时要采取的操作,指定为“包装”“饱和”

产品数据类型,指定为“与输入相同”“自定义”

产品字和分数长度,指定为一个比例numerictype(定点设计师)对象。属性时才应用此属性AccumulatorDataType财产“自定义”

累加器的数据类型指定为“与产品相同”“与输入相同”,或“自定义”

累加器字和分数长度,指定为缩放numerictype(定点设计师)对象。属性时才应用此属性AccumulatorDataType财产“自定义”

使用

描述

例子

V= blkMatcher (计算输入图像的运动从一个视频帧到另一个视频帧,然后返回V作为速度大小的矩阵。

C= blkMatcher (计算输入图像的运动从一个视频帧到另一个视频帧,然后返回C作为水平和垂直分量的复矩阵,当你设置OutputValue财产复杂形式的水平和垂直分量

Y= blkMatcher (iref计算输入图像之间的运动和参考图像iref当你设置ReferenceFrameSource财产输入端口

输入参数

全部展开

输入数据,指定为强度值的标量、矢量或矩阵。

输入参考数据,指定为强度值的标量、矢量或矩阵。

输出参数

全部展开

速度大小,以矩阵形式返回。

水平和垂直分量,作为复矩阵返回。

图像和参考图像之间的运动,作为矩阵返回。

对象的功能

要使用对象函数,请指定System对象™作为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

读取并转换RGB图像到灰度。

Img1 = im2double(im2gray(imread(“onion.png”)));

创建一个块匹配器和alpha搅拌机对象。

HBM =视觉。BlockMatcher (“ReferenceFrameSource”...输入端口的“BlockSize”35 [35]);hbm。OutputValue =“复杂形式的水平和垂直分量”;halphablend = vision.AlphaBlender;

偏移第一张图像[5 5]像素以创建第二张图像。

Img2 = imtranslate(img1,[5,5]);

计算两个图像的运动。

运动= hbm(img1,img2);

混合这两个图像。

Img12 = halphablend(img2,img1);

使用颤振图来显示图像上的运动方向。

(X, Y) = meshgrid(1时35:抵达大小(img1, 2), 1时35:抵达大小(img1, 1));imshow (img12)箭袋(X (:), Y(:),真正的(运动(:)),图像放大(运动(:)),0)

图中包含一个轴对象。axis对象包含图像、抖动类型的2个对象。

版本历史

在R2012a中引入