2-D交叉相关
创建两个矩阵,M1
和M2
。
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-by-5和M2
是3比3,因此它们的互相关具有(5 + 3-1) - (5 + 3-1),或7×7。就滞后而言,所得到的矩阵是
例如,计算元素
(或者C(3,5)
在Matlab®中,以来M2
是3比3)。将两个矩阵排成两个矩阵(1,1)
元素一致。这种放置对应于
。找到
, 滑动M2
两排到右边。
现在M2
位于矩阵之上M1(1:3,3:5)
。计算元素逐个元素产品并进行总和。s manbetx 845答案应该是
[R2,C2] =尺寸(M2);cc = sum(sum(m1(0+(1:R2),2 +(1:C2))。* M2))
CC = 585.
验证结果使用Xcorr2.
。
d = Xcorr2(M1,M2);DD = D(0 + R2,2 + C2)
DD = 585.
给定矩阵 大小 和一个矩阵 大小 ,他们的二维互相关, ,是一个大小的矩阵 与元素
痕迹和匕首表示赫米特氏族共轭。矩阵 和 有规模 和非零元素给出
和
打电话Xcorr2.
相当于该过程的一般复杂矩阵的任意大小。
创建两个复杂的矩阵, 大小 和 大小 。
x = randn([7 22])+ 1J * RANDN([7 22]);H = RANDN([617])+ 1J * RANDN([6 17]);[m,n] = size(x);m = 1:m;n = 1:n;[p,q] =尺寸(h);p = 1:p;q = 1:q;
初始化 和 。
xt =零([m + 2 *(p-1)n + 2 *(q-1)]);xt(m + p-1,n + q-1)= x;C =零([M + P-1 n + Q-1]);
计算元素 通过循环 和 。重启 每个步骤都归零。通过求和元素产品来节省时间和内存而不是乘以和追踪跟踪。s manbetx 845
为了k = 1:m + p-1为了l = 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。*结合(hkl)));结尾结尾max(max(abs(c-xcorr2(x,h)))))))
ans = 1.4648e-14
答案与输出的机器精度一致Xcorr2.
。
使用互相关以找到图像的一部分整体。交叉相关使您能够找到两个信号最彼此类似的区域。对于二维信号,如图像,使用Xcorr2.
。
将黑白测试图像加载到工作区中。显示它ImagesC.
。
加载杜尔img = x;white = max(max(img));ImagesC(IMG)轴图像离开COLOROMAP.灰色的标题('原来的')
选择图像的矩形部分。显示缺少的部分显示较大的图像。
x = 435;x = 535;szx = x:x;y = 62;y = 182;szy = y:y;sect = img(szx,szy);kimg = img;kimg(szx,szy)=白色;kumg = white *那些(大小(img)); kumg(szx,szy) = Sect; subplot(1,2,1) imagesc(kimg) axis图像离开COLOROMAP.灰色的标题('图像')子图(1,2,2)ImageC(Kumg)轴图像离开COLOROMAP.灰色的标题('部分')
用Xcorr2.
找到小图像在较大图像中适合的位置。减去平均值,使得具有大致相同的负值和正值。
nimg = img-incl(平均值(img));nsec = nimg(szx,szy);CRR = Xcorr2(NiMG,NSEC);
互相关的最大值对应于该部分右下角的估计位置。用Ind2sub.
将最大的一维位置转换为二维坐标。
[SSR,SND] = MAX(CRR(:));[IJ,JI] = IND2SUB(大小(CRR),SND);图绘图(CRR(:))标题('交叉相关') 抓住上Plot(SND,SSR,'或者') 抓住离开文本(SND * 1.05,SSR,'最大')
将较小的图像放在较大的图像内。旋转较小的图像以符合MATLAB®用于显示图像的惯例。在它周围画一个矩形。
IMG(IJ:-1:IJ尺寸(SECT,1)+ 1,JI:-1:ji大小(sect,2)+1)= rot90(sect,2);ImagesC(IMG)轴图像离开COLOROMAP.灰色的标题('重建') 抓住上plot([y y y y y],[x x x x],'r') 抓住离开
通过已知量移动模板并使用互相关恢复偏移。
在11×11矩阵中创建模板。创建一个22×22矩阵,并沿着列尺寸和沿列尺寸将原始模板换档8。
模板= 0.2 *那些(11);模板(6,3:9)= 0.6;模板(3:9,6)= 0.6;Offstettemplate = 0.2 *那些(22);offset = [8 6];Offsteptemplate((1:尺寸(模板,1))+偏移(1),......(1:尺寸(模板,2))+偏移(2))=模板;
绘制原始和移位的模板。
ImagesC(Oppsteptemplate)ColorMap灰色的抓住上ImagesC(模板)轴平等的
交叉关联两个矩阵并找到交叉相关的最大绝对值。使用最大绝对值的位置来确定模板中的偏移。检查结果是否掌握了已知班次。
CC = Xcorr2(Offsteptemplate,模板);[max_cc,imax] = max(abs(cc(:)));[ypeak,xpeak] = Ind2sub(尺寸(cc),imax(1));corr_offset = [(ypeak大小(模板,1))(xpeak尺寸(模板,2))];isequal(corr_offset,offset)
ans =.逻辑1
从互相关获得的偏移等于行和列维中的已知模板偏移。
此示例需要并行计算工具箱™软件。参考GPU通万博1manbetx过发布支持(并行计算工具箱)以查看支持的GPU。万博1manbetx
通过已知量移动模板并使用互相关恢复偏移。
在11×11矩阵中创建模板。创建一个22×22矩阵,并沿着列尺寸和沿列尺寸将原始模板换档8。
模板= 0.2 *那些(11);模板(6,3:9)= 0.6;模板(3:9,6)= 0.6;Offstettemplate = 0.2 *那些(22);offset = [8 6];Offsteptemplate((1:尺寸(模板,1))+偏移(1),......(1:尺寸(模板,2))+偏移(2))=模板;
使用GPU将原始和移位的模板矩阵放在GPU上GPUArray.
对象。
模板= GPUARRAY(模板);Offsettemplate = GPUArray(Oppsteptemplate);
计算GPU上的互相关。
CC = Xcorr2(Offsteptemplate,模板);
使用Matlab®工作区返回结果收集
。使用互相关的最大绝对值来确定偏移,并将结果与已知移位进行比较。
CC =聚集(CC);[max_cc,imax] = max(abs(cc(:)));[ypeak,xpeak] = Ind2sub(尺寸(cc),imax(1));corr_offset = [(ypeak大小(模板,1))(xpeak尺寸(模板,2))];isequal(corr_offset,offset)
ans =.逻辑1
一种
那B.
-输入阵列GPUArray.
对象输入阵列,指定为矩阵或GPUArray.
对象。
看在GPU上运行matlab函数(并行计算工具箱)和GPU通万博1manbetx过发布支持(并行计算工具箱)有关使用的详细信息Xcorr2.
和GPUArray.
对象。
例子:SIN(2 * PI *(0:9)'/ 10)* SIN(2 * PI *(0:13)/ 20)
指定二维正弦表面。
例子:GPUArray(SIN(2 * PI *(0:9)'/ 10)* SIN(2 * PI *(0:13)/ 20))
指定二维正弦表面作为a
目的。GPUArray.
数据类型:单身的
|双倍的
复数支持:万博1manbetx是的
C
- 2-D互相关或自相关矩阵GPUArray.
目的2-D互相关或自相关矩阵,作为矩阵返回GPUArray.
目的。
2-D的交叉相关m-经过-N矩阵,X和A.P.-经过-问:矩阵,H,是一个矩阵,C,大小m+P.-1 byN+问:-1。它的元素由
酒吧结束的地方H表示复合缀合。
输出矩阵,C(K,L.),具有负数和正行和列指数。
负行索引对应于行的向上偏移H。
负列索引对应于列的左移H。
正行索引对应于行的向下偏移H。
正柱索引对应于列的右转H。
在matlab中施放索引®表格,增加大小H:元素C(K.那L.)对应于C(k + p,l + q)
在工作区。
例如,考虑此2-D的交叉相关:
x =那些(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,1)
输出中的元素对应于C(1-3,1-2)=C(-2,-1)在定义方程中,使用零基索引。计算C(1,1)
元素,转移H
两排到左边的一列。因此,跨相关和中唯一的产品是x(1,1)* h(3,2)= 6
。使用定义方程式,您获得
所有其他术语中的所有其他术语等于零。
此功能完全支持GPU阵列。万博1manbetx有关更多信息,请参阅在GPU上运行matlab函数(并行计算工具箱)。
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。