MATLAB:与corr2()的图像水平/垂直自相关

时间:2017-03-27 05:16:34

标签: matlab image-processing correlation

我有一张图片,我试图计算corr2()的水平和垂直自相关函数估计值。我听说我可以使用 private void On_Wm_NcCalcSize(ref Message m) { NativePaint.RECT rect = new NativePaint.RECT(); NativePaint.GetWindowRect((int)this.Handle, ref rect); rect.top += CaptionHeight; rect.left += borderWidth; rect.right -= borderWidth; rect.bottom -= borderWidth; Marshal.StructureToPtr(rect, m.LParam, true); } 来完成此任务,但我不知道如何做到这一点。

2 个答案:

答案 0 :(得分:1)

您可以使用circshift(通过某些安装来偏移图像)和corr2的组合来计算原始图像与偏移图像之间的相关性。您只需要遍历要检查的值。例如:

img = peaks(100);  % Sample data
x = -50:50;   % Desired offsets
output = zeros(1,101); %preallocate space for the result

for i=x   % loop over the offsets
    img2=circshift(img,[i 0]);   % Shift the image by the desired lag
    output(i+51)=corr2(img,img2);   % Calculate the correlation between the offset image and the original
end

plot(x,output)

enter image description here

我认为你可以从这里获取它并为其他维度获得相同的图形,甚至可以获得水平和垂直维度中移位组合的矩阵。

答案 1 :(得分:0)

您可以查看corr2() documentation 基本上这样做:

mInputImage1 = randn([200, 200]);
mInputImage2 = medfilt2(randn([200, 200]));

mCorrImage = corr2(mInputImage1, mInputImage2);