ตัดผลลัพธ์ความสัมพันธ์อัตโนมัติใน MATLAB

ฉันใช้ xcorr2(A,A) เพื่อคำนวณความสัมพันธ์อัตโนมัติ แต่เอาต์พุตมีขนาดใหญ่กว่า A ฉันควรตัดเอาต์พุตเพื่อค้นหาเมทริกซ์ความสัมพันธ์อัตโนมัติที่ถูกต้องได้อย่างไร ตัวอย่างเช่น เมทริกซ์ A ของฉันคือ 51x51 และผลลัพธ์จะเป็น 101x101 เห็นได้ชัดว่าจุดศูนย์กลางมีความสัมพันธ์กันสูงสุดกับตัวมันเอง ซึ่งในกรณีนี้จะอยู่ที่ (26,26) แต่ในแผนที่ความสัมพันธ์อัตโนมัติใหม่นั้นจะอยู่ที่ (51,51) ฉันต้องการวิธีทั่วไปในการตัดเอาต์พุตสุดท้าย


person Nicole    schedule 10.09.2012    source แหล่งที่มา


คำตอบ (1)


โดยทั่วไป คุณจะต้องใช้คะแนน M จาก M/2 ถึง 3M/2 ในมิติที่ 1st และคะแนน N จาก N/2 ถึง 3N/2 ในมิติที่ 2nd มิติ สมมติว่า A เป็นเมทริกซ์ M-by-N:

[M, N] = size(A);
cor = xcorr2(A);  %# Shorter form of xcorr(A, A)
C = cor(ceil(M / 2):floor(3 * M / 2), ceil(N / 2):floor(3 * N / 2))

ที่นี่ C จะเป็นเอาต์พุตที่ถูกตัดแต่ง

แก้ไข:
สำหรับเมทริกซ์สองตัวใดๆ A และ B ผลลัพธ์ของ xcorr2(A, B) จะเป็น (MA+MB-1 )×(NA+NB-1) เมทริกซ์ อย่างไรก็ตาม ในที่นี้ คุณจะต้องตัดสินใจด้วยตัวเองว่าต้องการแยกส่วนใด หากเมทริกซ์มีขนาดไม่เท่ากัน หากคุณต้องการแยกส่วนสำคัญออกจากส่วนกลาง คุณสามารถทำได้ดังนี้:

[MA, NA] = size(A);
[MB, NB] = size(B);
v = [MA + MB, NA + NB] / 4; %# Just a temporary vector
cor = xcorr2(A, B);
C = cor(ceil(v(1)):floor(3 * v(1)), ceil(v(2)):floor(3 * v(2))
person Eitan T    schedule 11.09.2012
comment
@ Eitan: แล้วความสัมพันธ์ข้ามของ A และ B ล่ะ? ฉันหมายถึงในกรณีที่ A และ B มีขนาดต่างกัน? - person Nicole; 11.09.2012