ฉันพยายามที่จะทำลงทะเบียนภาพโดยใช้ความสัมพันธ์ขั้นตอนที่อธิบายไว้ในกระดาษเรดดี้ Chatterji ในกรณีของฉันรูปภาพอาจถูกปรับขนาดและแปลให้สัมพันธ์กัน
อัลกอริทึมสำหรับการค้นหาสเกลสัมพัทธ์ตามที่ฉันเข้าใจคือ (ดู: แผนผังลำดับงานจากกระดาษ ):
F1 = DFT(I1)
F2 = DFT(I2)
H1 = Highpass(F1)
H2 = Highpass(F2)
L1 = LogPolar(Magnitude(H1))
L2 = LogPolar(Magnitude(H2))
PC = PhaseCorrelate(L1,L2)
PM = norm(PC)
R = IDFT(PhaseCorr/PM)
P = Peak(R)
Scale = LogBase^P[1]
สเกลให้ค่าที่ดูไร้สาระ (แตกต่างจากภาพต่อภาพและไม่ถูกต้อง)
แต่ไม่สนใจสเกลวิธีการสหสัมพันธ์เฟสเดียวกันนั้นใช้ได้ผลดีสำหรับการแปล และฉันก็สงสัยว่าฉันมีปัญหากับการแปลงขั้ว - นี่คือตัวอย่างที่ฉันแก้ไขสำหรับการแปล - รูปภาพด้านซ้ายเป็นต้นฉบับและด้านขวาถูกตัดและแปล - วิธีแก้ไขจะปรากฏที่ด้านบนของ orignal:
สำหรับการแปลงล็อก - โพลาร์ฉันเปลี่ยนเป็นพื้นที่ขั้ว: ที่เป็นภาพดั้งเดิมคือ รัศมีภาพ (ความกว้างครึ่งหนึ่ง) และคือจำนวนตัวอย่างในทิศทางจากนั้นฉันจะสุ่มตัวอย่างจากสิ่งนี้เพื่อแปลงเป็นพื้นที่ขั้วโลกบันทึก: โดยที่ตามที่อธิบายไว้ใน1เพื่อให้ครอบคลุมพื้นที่ขั้วโลกทั้งหมด
นี่คือภาพตัวอย่างในพื้นที่บันทึกโดยมี (ในกรณีที่มีบางอย่างผิดปกติอย่างเห็นได้ชัด):
สุดท้ายนี้แสดงให้เห็นถึงการเปลี่ยนแปลงที่เกิดขึ้นจริงของภาพก่อนขั้นตอนความสัมพันธ์ของเฟส (ด้านบนคือ DFT ขนาดโพสต์ตัวกรอง highpass ด้านล่างคือในพื้นที่ขั้วโลกบันทึก):
ฉันใช้ OpenCV ซึ่งมีวิธี LogPolar และ PhaseCorrelate ในขณะที่ PhaseCorrelate เช่นเดียวกับการติดตั้งด้วยตนเองของฉันให้คำตอบที่ถูกต้องสำหรับการแปล เนื่องจากการใช้ OpenCV LogPolar หรือของฉันเองไม่ส่งผลกระทบต่อความถูกต้องฉันจะต้องหายไปบางสิ่งบางอย่าง
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม