मैं रेड्डी चटर्जी पेपर में वर्णित चरण सहसंबंध का उपयोग करके छवि पंजीकरण करने की कोशिश कर रहा हूं । मेरे मामले में, छवियों को एक दूसरे के सापेक्ष छोटा और अनुवादित किया जा सकता है।
रिश्तेदार पैमाने को खोजने के लिए एल्गोरिथ्म, जैसा कि मैं समझता हूं, यह है (देखें: कागज से फ्लोचार्ट ):
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]
स्केल मुझे उचित रूप से निरर्थक मूल्य देता है (छवि से छवि से अलग और कभी सही नहीं)।
लेकिन पैमाने की अनदेखी, अनुवाद के लिए एक ही चरण सहसंबंध दृष्टिकोण ठीक काम करता है; और इसलिए मुझे संदेह है कि मुझे अपने लॉग-पोल परिवर्तन के साथ समस्या है। यहां एक उदाहरण दिया गया है, जहां मैंने अनुवाद के लिए हल किया है - बाईं छवि मूल है और दाईं ओर क्रॉप और अनुवाद किया गया है - समाधान को ओरिजिनल के शीर्ष पर दिखाया गया है:
लॉग-पोल परिवर्तन के लिए, मैं सबसे पहले ध्रुवीय स्थान में परिवर्तित होता हूं: जहाँ मूल चित्र है, है छवि त्रिज्या (आधी-चौड़ाई) और नमूने की संख्या है जो कि दिशा में है। मैं इसके बाद लॉग ध्रुवीय स्थान में बदलने के लिए इसका नमूना देता हूं: जहाँ जैसा कि 1 में वर्णित है ताकि यह पूरे ध्रुवीय स्थान को फैलाए।
यहाँ लॉग-पोल स्पेस में के उदाहरण के चित्र हैं (अगर इसमें कुछ गड़बड़ है)
अंत में, यह वास्तविक परिवर्तन दिखाता है कि चित्र चरण सहसंबंध चरण से पहले गुजरते हैं (शीर्ष डीएफटी परिमाण पोस्ट हाईपास फिल्टर है, नीचे लॉग इन पोलर स्पेस है):
मैं OpenCV का उपयोग कर रहा हूं, जिसमें LogPolar और PhaseCorrelate विधियां हैं। जबकि फेजक्रॉलेट, मेरे मैनुअल कार्यान्वयन की तरह, मुझे अनुवाद के लिए सही उत्तर देता है, यह पैमाने पर गलत है। OpenCV LogPolar या मेरे खुद के उपयोग से शुद्धता पर कोई असर नहीं पड़ता, मुझे कुछ याद आ रहा है।
किसी भी सहायता की सराहना की जाएगी।