主要内容

愿景。BlockMatcher

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

描述

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

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

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

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

例子

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

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

属性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放函数打开它们。

如果一个属性是可调,您可以随时更改它的值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象进行系统设计

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

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

最佳匹配搜索方法,指定为“详尽”“三步走”.指定如何在帧中定位像素块k最匹配帧中的像素块的+1k.如果将此属性设置为“详尽”,块匹配器对象选择像素块在帧中的位置k+ 1。块匹配器每次将块移动一个像素到搜索区域,这在计算上非常昂贵。

如果将此属性设置为“三步走”,块匹配器对象在帧中搜索像素块k最匹配帧中的像素块的+1k使用逐步减小的步长。对象开始时的步长大约等于最大搜索范围的一半。在每一步中,对象将搜索区域的中心点与区域边界上的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 blender对象。

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个类型为image, quiver的对象。

介绍了R2012a