मैंने scipy.misc.resize के साथ कुछ अजीब देखा - यह परिणामस्वरूप छवि में लगभग 0x1 पिक्सेल शिफ्ट (0,0) से दूर 'निकटतम' परिणामों के अलावा किसी भी इंटरपोलेशन विधि का उपयोग करता है।SciPy छवि आकार बदलने शिफ्ट - अपेक्षित व्यवहार या बग?
यहाँ 6x6 करने के लिए एक 3x3 छवि लेने का एक पूरी तरह से सिंथेटिक उदाहरण है:
>>> src
array([[ 0., 0., 0.],
[ 0., 64., 0.],
[ 0., 0., 0.]])
>>> imresize(src, (6, 6), interp='bicubic',mode='F')
array([[ 1., 0., -5., -8., -5., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ -5., 0., 25., 40., 25., 0.],
[ -8., 0., 40., 64., 40., 0.],
[ -5., 0., 25., 40., 25., 0.],
[ 0., 0., 0., 0., 0., 0.]], dtype=float32)
>>> imresize(src, (6, 6), interp='bilinear',mode='F')
array([[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 16., 32., 16., 0.],
[ 0., 0., 32., 64., 32., 0.],
[ 0., 0., 16., 32., 16., 0.],
[ 0., 0., 0., 0., 0., 0.]], dtype=float32)
>>> imresize(src, (6, 6), interp='nearest',mode='F')
array([[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 64., 64., 0., 0.],
[ 0., 0., 64., 64., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.]], dtype=float32)
अब ऐसा लगता है कि द्विरेखीय और bicubic छेड़छाड़ के लिए बड़े पैमाने पर ले जाता है के केंद्र है, लेकिन निकटतम प्रक्षेप के लिए नहीं जाते हैं। यह अजीब और यहां तक कि गंतव्य आकार दोनों के लिए होता है।
मुझे एहसास है कि निर्देशांक की अलग-अलग परिभाषाएं पिक्सेल-केंद्र या पिक्सेल-एज या पिक्सल का इलाज बिंदु नमूने या आयताकार के रूप में अलग-अलग परिणाम देती हैं, लेकिन यह एक बड़ी समस्या की तरह प्रतीत होता है (जब तक कि मुझे कुछ याद नहीं आ रहा है) ।
यहाँ एक और उदाहरण है कि पाली अधिक स्पष्ट रूप से दर्शाता है है:
>>> imresize(src, (7, 3), interp='bilinear',mode='F')
array([[ 0. , 0. , 0. ],
[ 0. , 0. , 0. ],
[ 0. , 11.4285717, 11.4285717],
[ 0. , 25.1428566, 25.1428566],
[ 0. , 25.1428566, 25.1428566],
[ 0. , 11.4285717, 11.4285717],
[ 0. , 0. , 0. ]], dtype=float32)
के बाद से कोई क्षैतिज आकार परिवर्तन हुआ, मैं क्षैतिज बड़े पैमाने पर की मेरी केंद्र के समन्वय सब पर स्थानांतरित करने के लिए उम्मीद नहीं होगा, लेकिन यह स्पष्ट रूप से साथ लेकर चलता 1.0 से 1.5 तक।
तो, क्या यह एक बग है या क्या मुझे कुछ याद आ रहा है?
यह बहुत दिलचस्प है। मैंने 'पीआईएल' में भी इसी तरह की चीजें देखी हैं, लेकिन तत्काल स्पष्टीकरण नहीं है। "पिक्सेल-सेंटर" और "पिक्सेल-एज" के बारे में आपका तर्क एक लीड हो सकता है (हालांकि यह सुझाव देता है कि पिक्सल 0 डी अंकों के बजाय वर्ग हैं), साथ ही सीमा विचार और गैर-पूर्णांक एकाधिक आकार बदलने वाले अतिरिक्त प्रभाव। यहां प्रकाश डालने वाली किसी चीज में बहुत दिलचस्पी है। – eickenberg
यह बताता है कि वास्तव में 'पीआईएल' का उपयोग करता है (इस फ़ाइल में कहीं और 'toimage' फ़ंक्शन देखें] (https://github.com/scipy/scipy/blob/master/scipy/misc/pilutil.py#L392)) – eickenberg