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(3、5)
在MATLAB®,因为平方米
3 x3)。把这两个矩阵排列起来(1,1)
元素一致。这个位置对应于
.找到
,滑动平方米
往右两排。
现在平方米
在矩阵的上面M1 (1:3, 3:5)
.计算每个元素的乘积并求和。下载188bet金宝搏答案应该是
[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
任意复矩阵的二维相互关
给定一个矩阵 的大小 和一个矩阵 的大小 ,它们的二维互相关, ,是大小矩阵 与元素
是痕迹,匕首表示厄米共轭。的矩阵 而且 有大小 非零元素由
而且
调用xcorr2
对于任意大小的一般复杂矩阵,等价于此过程。
创建两个复杂矩阵, 的大小 而且 的大小 .
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;
初始化 而且 .
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]);
计算元素 通过循环 而且 .重置 每一步都归零。通过对元素乘积求和来节省时间和内存,而不是进行乘法和跟踪。下载188bet金宝搏
为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.*conj(Hkl)));结束结束max (max (abs (C-xcorr2 H (X)))))
Ans = 1.5139e-14
答案与机器精度和输出相吻合xcorr2
.
使用互相关对齐两个图像
使用相互关联来找到图像的某个部分在整个图像中的位置。相互关联使您能够找到两个信号最相似的区域。对于二维信号,如图像,使用xcorr2
.
将黑白测试图像加载到工作区中。用显示亮度图像
.
负载杜勒img = X;白色= max(max(img));显示亮度图像(img)轴图像从colormap灰色的标题(“原始”)
选择图像的矩形部分。显示缺少部分的大图。
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灰色的标题(“节”)
使用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,苏维埃社会主义共和国,“最大”)
将较小的图像放在较大的图像中。旋转较小的图像以符合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”)举行从
模板移位的互相关恢复
将模板移动一个已知的量,并使用互相关联恢复移位。
在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灰色的持有在显示亮度图像(模板)轴平等的
交叉关联两个矩阵,并找到相互关联的最大绝对值。使用最大绝对值的位置来确定模板中的位移。根据已知位移检查结果。
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加速
此示例需要并行计算工具箱™软件。指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
输入参数
一个
,b
- - - - - -输入数组
矩阵|gpuArray
对象
输入数组,指定为矩阵或gpuArray
对象。
看到在图形处理器上运行MATLAB函数(并行计算工具箱)而且GPU计算要求(并行计算工具箱)有关使用的详细资料xcorr2
与gpuArray
(并行计算工具箱)对象。
例子:罪(2 *π*(0:9)/ 10)*罪(2 *π* (0:13)/ 20)
指定一个二维正弦曲面。
例子:gpuArray (sin(2 *π*(0:9)/ 10)*罪(2 *π* (0:13)/ 20))
指定一个二维正弦曲面为
对象。gpuArray
数据类型:单
|双
复数支持:金宝app是的
输出参数
c
-二维互相关或自相关矩阵
矩阵|gpuArray
对象
二维互相关或自相关矩阵,返回为矩阵或agpuArray
对象。
更多关于
二维互相关
的二维互相关米——- - - - - -N矩阵,X,以及P——- - - - - -问矩阵,H,为矩阵,C,大小米+P1,N+问1。它的元素由
酒吧在哪里H表示复共轭。
输出矩阵,C(k, l),具有负和正的行和列索引。
负的行索引对应于的行向上移位H.
负列下标对应于的列的左移H.
正的行索引对应于的行向下移位H.
的列索引为正对应于的列向右移动H.
在MATLAB中转换指标®形成,添加大小H:元素C(k,l)对应于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/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
本功能完全支持GPU阵列。金宝app有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
R2006a之前介绍
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。