主要内容

xcorr2

二维互相关

描述

例子

c= xcorr2 (一个b返回矩阵的相互关系一个而且b没有缩放。xcorr2是二维版的xcorr

c= xcorr2 (一个输入矩阵是自相关矩阵吗一个.这个语法等价于xcorr2(一个)

例子

全部折叠

创建两个矩阵,M1而且平方米

M1 = [17 24 1 8 15;23 5 7 14 16;4 6 13 20 22;10 12 19 21 3;11 18 25 2 9];M2 = [8 1 6;3 5 7;4 9 2];

M1是5乘5和平方米是3乘3,所以它们的相互关系是(5+3-1)-by-(5+3-1)或者7乘7。就滞后而言,得到的矩阵为

C c - 2 - 2 c - 2 - 1 c - 2 0 c - 2 1 c - 2 2 c - 2 3. c - 2 4 c - 1 - 2 c - 1 - 1 c - 1 0 c - 1 1 c - 1 2 c - 1 3. c - 1 4 c 0 - 2 c 0 - 1 c 0 0 c 0 1 c 0 2 c 0 3. c 0 4 c 1 - 2 c 1 - 1 c 1 0 c 1 1 c 1 2 c 1 3. c 1 4 c 2 - 2 c 2 - 1 c 2 0 c 2 1 c 2 2 c 2 3. c 2 4 c 3. - 2 c 3. - 1 c 3. 0 c 3. 1 c 3. 2 c 3. 3. c 3. 4 c 4 - 2 c 4 - 1 c 4 0 c 4 1 c 4 2 c 4 3. c 4 4

作为一个例子,计算元素 c 0 2 (或C(3、5)在MATLAB®,因为平方米3 x3)。把这两个矩阵排列起来(1,1)元素一致。这个位置对应于 c 0 0 .找到 c 0 2 ,滑动平方米往右两排。

现在平方米在矩阵的上面M1 (1:3, 3:5).计算每个元素的乘积并求和。下载188bet金宝搏答案应该是

1 × 8 + 7 × 3. + 1 3. × 4 + 8 × 1 + 1 4 × 5 + 2 0 × 9 + 1 5 × 6 + 1 6 × 7 + 2 2 × 2 5 8 5

[r2,c2] = size(M2);CC = sum(M1(0+(1:r2),2+(1:c2)).*M2)
Cc = 585

使用以下命令验证结果xcorr2

D = xcorr2(M1,M2);DD = D(0+r2,2+c2)
Dd = 585

给定一个矩阵 X 的大小 × N 和一个矩阵 H 的大小 P × ,它们的二维互相关, C X H ,是大小矩阵 + P - 1 × N + - 1 与元素

C k l T r X H k l __ 1 k + P - 1 1 l N + - 1

T r 是痕迹,匕首表示厄米共轭。的矩阵 X 而且 H k l 有大小 + 2 P - 1 × N + 2 - 1 非零元素由

X n X - P + 1 n - + 1 P + P - 1 n N + - 1

而且

H k l p H p - k + 1 - l + 1 k p P + k - 1 l + l - 1

调用xcorr2对于任意大小的一般复杂矩阵,等价于此过程。

创建两个复杂矩阵, X 的大小 7 × 2 2 而且 H 的大小 6 × 1 7

X = randn([7 22])+1j*randn([7 22]);H = randn([6 17])+1j*randn([6 17]);[M,N] = size(X);m = 1: m;n = 1: n;[P,Q] = size(H);p = 1: p;q = 1: q;

初始化 X 而且 C

Xt = 0 ([M+2*(P-1) N+2*(Q-1)]);Xt(m+P-1,n+Q-1) = X;C = 0 ([M+P-1 N+Q-1]);

计算元素 C 通过循环 k 而且 l .重置 H k l 每一步都归零。通过对元素乘积求和来节省时间和内存,而不是进行乘法和跟踪。下载188bet金宝搏

k = 1:M+P-1l = 1:N+Q-1 Hkl =零([M+2*(P-1) N+2*(Q-1)]);Hkl(p+k-1,q+l-1) = H;C(k,l) = sum(sum(Xt.*conj(Hkl)));结束结束max (max (abs (C-xcorr2 H (X)))))
Ans = 1.5139e-14

答案与机器精度和输出相吻合xcorr2

使用相互关联来找到图像的某个部分在整个图像中的位置。相互关联使您能够找到两个信号最相似的区域。对于二维信号,如图像,使用xcorr2

将黑白测试图像加载到工作区中。用显示亮度图像

负载杜勒img = X;白色= max(max(img));显示亮度图像(img)轴图像colormap灰色的标题(“原始”

图中包含一个轴对象。标题为Original的axes对象包含一个image类型的对象。

选择图像的矩形部分。显示缺少部分的大图。

X = 435;X = 535;szx = x: x;Y = 62;Y = 182;szy = y: y;Sect = img(szx,szy);Kimg = img;kimg(szx,szy) =白色;kumg =白色*ones(大小(img)); kumg(szx,szy) = Sect; subplot(1,2,1) imagesc(kimg) axis图像colormap灰色的标题(“图像”) subplot(1,2,2) imagesc(kumg)轴图像colormap灰色的标题(“节”

图中包含2个轴对象。标题为Image的坐标轴对象1包含一个Image类型的对象。带有标题Section的Axes对象2包含一个image类型的对象。

使用xcorr2找出小图像在大图像中的位置。减去平均值,使负数和正数大致相等。

Nimg = img-mean(平均值(img));nSec = nimg(szx,szy);crr = xcorr2(nimg,nSec);

互相关的最大值对应于剖面右下角的估计位置。使用ind2sub将最大值的一维位置转换为二维坐标。

[ssr,snd] = max(crr(:));[ij,ji] = ind2sub(size(crr),snd);图(crr(:))互相关的)举行情节(先期苏维埃社会主义共和国,”或“)举行文本(snd * 1.05,苏维埃社会主义共和国,“最大”

图中包含一个轴对象。标题为Cross-Correlation的axis对象包含3个类型为line, text的对象。一行或多行仅使用标记显示其值

将较小的图像放在较大的图像中。旋转较小的图像以符合MATLAB®用于显示图像的约定。在它周围画一个矩形。

img (ij: 1: ij-size(教派,1)+ 1,霁:1:ji-size(教派,2)+ 1)= rot90(教派,2);显示亮度图像(img)轴图像colormap灰色的标题(“重建”)举行plot([y y y y y y y y],[x x x x x],“r”)举行

图中包含一个轴对象。标题为“重构”的坐标轴对象包含2个image、line类型的对象。

将模板移动一个已知的量,并使用互相关联恢复移位。

在11 × 11矩阵中创建模板。创建一个22 × 22的矩阵,并将原始模板沿行维数移动8,沿列维数移动6。

模板= 0.2*ones(11);模板(6,3:9)= 0.6;模板(3:9,6)= 0.6;offsetTemplate = 0.2*ones(22);Offset = [8 6];offsetTemplate((1:尺寸(模板,1))+偏移量(1)...(1:size(template,2))+offset(2)) = template;

绘制原始模板和移位模板。

显示亮度图像(offsetTemplate) colormap灰色的持有显示亮度图像(模板)轴平等的

图中包含一个轴对象。axis对象包含2个image类型的对象。

交叉关联两个矩阵,并找到相互关联的最大绝对值。使用最大绝对值的位置来确定模板中的位移。根据已知位移检查结果。

cc = xcorr2(offsetTemplate,template);[max_cc, imax] = max(abs(cc(:)));[ypeak, xpeak] = ind2sub(size(cc),imax(1));Corr_offset = [(ypeak-size(template,1))) (xpeak-size(template,2))];isequal (corr_offset抵消)
ans =逻辑1

从互相关联中得到的位移等于已知模板在行和列维度上的位移。

此示例需要并行计算工具箱™软件。指GPU计算要求(并行计算工具箱)看看支持哪些图形处理器。金宝app

将模板移动一个已知的量,并使用互相关联恢复移位。

在11 × 11矩阵中创建模板。创建一个22 × 22的矩阵,并将原始模板沿行维数移动8,沿列维数移动6。

模板= 0.2*ones(11);模板(6,3:9)= 0.6;模板(3:9,6)= 0.6;offsetTemplate = 0.2*ones(22);Offset = [8 6];offsetTemplate((1:尺寸(模板,1))+偏移量(1)...(1:size(template,2))+offset(2)) = template;

把原来的和移动的模板矩阵在你的GPU使用gpuArray对象。

template = gpuArray(template);offsetTemplate = gpuArray(offsetTemplate);

在GPU上计算互相关。

cc = xcorr2(offsetTemplate,template);

返回结果到MATLAB®工作区使用收集.使用互相关的最大绝对值来确定位移,并将结果与已知的位移进行比较。

Cc = gather(Cc);[max_cc,imax] = max(abs(cc(:)));[ypeak,xpeak] = ind2sub(size(cc),imax(1));Corr_offset = [(ypeak-size(template,1))) (xpeak-size(template,2))];isequal (corr_offset抵消)
ans =逻辑1

输入参数

全部折叠

输入数组,指定为矩阵或gpuArray对象。

看到在图形处理器上运行MATLAB函数(并行计算工具箱)而且GPU计算要求(并行计算工具箱)有关使用的详细资料xcorr2gpuArray(并行计算工具箱)对象。

例子:罪(2 *π*(0:9)/ 10)*罪(2 *π* (0:13)/ 20)指定一个二维正弦曲面。

例子:gpuArray (sin(2 *π*(0:9)/ 10)*罪(2 *π* (0:13)/ 20))指定一个二维正弦曲面为gpuArray对象。

数据类型:|
复数支持:金宝app是的

输出参数

全部折叠

二维互相关或自相关矩阵,返回为矩阵或agpuArray对象。

更多关于

全部折叠

二维互相关

的二维互相关——- - - - - -N矩阵,X,以及P——- - - - - -矩阵,H,为矩阵,C,大小+P1,N+1。它的元素由

C k l 0 1 n 0 N 1 X n H ¯ k n l P 1 k 1 1 l N 1

酒吧在哪里H表示复共轭。

输出矩阵,Ck, l),具有负和正的行和列索引。

  • 负的行索引对应于的行向上移位H

  • 负列下标对应于的列的左移H

  • 正的行索引对应于的行向下移位H

  • 的列索引为正对应于的列向右移动H

在MATLAB中转换指标®形成,添加大小H:元素Ckl)对应于C (k + P、l + Q)在工作空间中。

例如,考虑这个二维相互关系:

X = ones(2,3);H = [1 2;3 4;5 6];% H是3 × 2C = xcorr2(X,H)
C = 6 11 11 5 10 18 18 8 6 10 10 4 2 3 3 1

C (1)元素的输出中对应的C(1 - 3、1 - 2)=C(-2, -1)在定义方程中,它使用从零开始的索引。计算C (1)元素,转变H向上两行,向左一列。相应的,互相关和中唯一的乘积是X(1,1)* h (3,2) = 6.利用定义方程,得到

C 2 1 0 1 n 0 2 X n H ¯ + 2 n + 1 X 0 0 H ¯ 2 1 1 × 6 6

二重和中的其他项都等于零。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

R2006a之前介绍

另请参阅

||