बाइबिक प्रक्षेप

गणित में द्वि-आयामी नियमित ग्रिड पर डेटा बिंदुओं को प्रक्षेपित करने के लिए बाइबिक प्रक्षेप, क्यूबिक प्रक्षेप का विस्तार है (क्यूबिक स्पलाइन प्रक्षेप के साथ भ्रमित नहीं होना, डेटा सेट में क्यूबिक प्रक्षेप लागू करने की एक विधि)। प्रक्षेपित सतह (अर्थात कर्नेल आकार, छवि नहीं) द्विरेखीय प्रक्षेप या निकटतम-पड़ोसी प्रक्षेप द्वारा प्राप्त संबंधित सतहों की तुलना में सरल कार्य है। बाइक्यूबिक प्रक्षेप लैग्रेंज बहुपद, घनीय पट्टी  या बाइक्यूबिक कनवल्शन एल्गोरिथम का उपयोग करके पूरा किया जा सकता है।

छवि प्रसंस्करण में बाइक्यूबिक प्रक्षेप को अधिकतर रीसैंपलिंग (बिटमैप) में बिलिनियर या निकटतम-पड़ोसी प्रक्षेप पर चुना जाता है जब गति कोई समस्या नहीं होती है। बिलिनियर प्रक्षेप के विपरीत जो केवल 4 पिक्सेल (2×2) को ध्यान में रखता है, बाइक्यूबिक प्रक्षेप 16 पिक्सल (4×4) पर विचार करता है। बाइबिक प्रक्षेप के साथ प्रतिदर्श किए गए चित्रण में अलग-अलग प्रक्षेप स्थानिक विरोधी अलियासिंग हो सकते हैं जो चुने गए बी और सी मानों पर निर्भर करता है।

संगणना
मान लीजिए फ़ंक्शन मान $$f$$ और डेरिवेटिव $$f_x$$, $$f_y$$ और $$f_{xy}$$ चार कोनों पर $$(0,0)$$, $$(1,0)$$, $$(0,1)$$, और $$(1,1)$$ इकाई वर्ग जाना जाता है। तब प्रक्षेपित सतह को लिखा जा सकता है:
 * $$p(x,y) = \sum\limits_{i=0}^3 \sum_{j=0}^3 a_{ij} x^i y^j.$$

प्रक्षेप समस्या में 16 गुणांक निर्धारित करना सम्मिलित है $$a_{ij}$$ मिलान $$p(x,y)$$ फ़ंक्शन मानों के साथ चार समीकरण प्राप्त होते हैं: इसी तरह $$x$$ और $$y$$ डेरिवेटिव के लिए आठ समीकरण निर्देश: और $$xy$$ मिश्रित आंशिक व्युत्पन्न के लिए चार समीकरण: ऊपर दिए गए भावों में निम्नलिखित सर्वसमिकाओं का उपयोग किया गया है:
 * 1) $$f(0,0)      = p(0,0)   = a_{00},$$
 * 2) $$f(1,0)      = p(1,0)   = a_{00} + a_{10} + a_{20} + a_{30},$$
 * 3) $$f(0,1)      = p(0,1)   = a_{00} + a_{01} + a_{02} + a_{03},$$
 * 4) $$f(1,1)      = p(1,1)   = \textstyle \sum\limits_{i=0}^3 \sum\limits_{j=0}^3 a_{ij}.$$
 * 1) $$f_x(0,0)    = p_x(0,0) = a_{10},$$
 * 2) $$f_x(1,0)    = p_x(1,0) =  a_{10} + 2a_{20} + 3a_{30},$$
 * 3) $$f_x(0,1)    = p_x(0,1) = a_{10} + a_{11} + a_{12} + a_{13},$$
 * 4) $$f_x(1,1)    = p_x(1,1) = \textstyle \sum\limits_{i=1}^3 \sum\limits_{j=0}^3 a_{ij} i,$$
 * 5) $$f_y(0,0)    = p_y(0,0) = a_{01},$$
 * 6) $$f_y(1,0)    = p_y(1,0) = a_{01} + a_{11} + a_{21} + a_{31},$$
 * 7) $$f_y(0,1)    = p_y(0,1) = a_{01} + 2a_{02} + 3a_{03},$$
 * 8) $$f_y(1,1)    = p_y(1,1) = \textstyle \sum\limits_{i=0}^3 \sum\limits_{j=1}^3 a_{ij} j.$$
 * 1) $$f_{xy}(0,0) = p_{xy}(0,0) = a_{11},$$
 * 2) $$f_{xy}(1,0) = p_{xy}(1,0) = a_{11} + 2a_{21} + 3a_{31},$$
 * 3) $$f_{xy}(0,1) = p_{xy}(0,1) = a_{11} + 2a_{12} + 3a_{13},$$
 * 4) $$f_{xy}(1,1) = p_{xy}(1,1) = \textstyle \sum\limits_{i=1}^3 \sum\limits_{j=1}^3 a_{ij} i j.$$
 * $$p_x(x,y) = \textstyle \sum\limits_{i=1}^3 \sum\limits_{j=0}^3 a_{ij} i x^{i-1} y^j,$$
 * $$p_y(x,y) = \textstyle \sum\limits_{i=0}^3 \sum\limits_{j=1}^3 a_{ij} x^i j y^{j-1},$$
 * $$p_{xy}(x,y) = \textstyle \sum\limits_{i=1}^3 \sum\limits_{j=1}^3 a_{ij} i x^{i-1} j y^{j-1}.$$

यह प्रक्रिया $$p(x,y)$$ इकाई वर्ग पर सतह $$[0,1] \times [0,1]$$ उत्पन्न करती है जो निरंतर और निरंतर डेरिवेटिव है। मनमाने आकार के नियमित ग्रिड पर बाइबिक प्रक्षेप तब ऐसी बाइबिक सतहों को एक साथ पैच करके पूरा किया जा सकता है यह सुनिश्चित करते हुए कि डेरिवेटिव सीमाओं पर मेल खाते हैं।

अज्ञात मापदंडों $$a_{ij}$$ को वेक्टर में समूहीकृत करना
 * $$\alpha=\left[\begin{smallmatrix}a_{00}&a_{10}&a_{20}&a_{30}&a_{01}&a_{11}&a_{21}&a_{31}&a_{02}&a_{12}&a_{22}&a_{32}&a_{03}&a_{13}&a_{23}&a_{33}\end{smallmatrix}\right]^T$$

और
 * $$x=\left[\begin{smallmatrix}f(0,0)&f(1,0)&f(0,1)&f(1,1)&f_x(0,0)&f_x(1,0)&f_x(0,1)&f_x(1,1)&f_y(0,0)&f_y(1,0)&f_y(0,1)&f_y(1,1)&f_{xy}(0,0)&f_{xy}(1,0)&f_{xy}(0,1)&f_{xy}(1,1)\end{smallmatrix}\right]^T,$$

समीकरणों की उपरोक्त प्रणाली को रैखिक समीकरण $$A\alpha=x$$ के लिए मैट्रिक्स में सुधारा जा सकता है।

आव्यूह का उल्टा करने से अधिक उपयोगी रेखीय समीकरण $$A^{-1}x=\alpha$$ प्राप्त होता है जहाँ
 * $$A^{-1}=\left[\begin{smallmatrix}

1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ -3 & 3 & 0 & 0 & -2 & -1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 2 & -2 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -3 & 3 & 0 & 0 & -2 & -1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 2 & -2 & 0 & 0 & 1 & 1 & 0 & 0 \\ -3 & 0 & 3 & 0 & 0 & 0 & 0 & 0 & -2 & 0 & -1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & -3 & 0 & 3 & 0 & 0 & 0 & 0 & 0 & -2 & 0 & -1 & 0 \\ 9 & -9 & -9 & 9 & 6 & 3 & -6 & -3 & 6 & -6 & 3 & -3 & 4 & 2 & 2 & 1 \\ -6 & 6 & 6 & -6 & -3 & -3 & 3 & 3 & -4 & 4 & -2 & 2 & -2 & -2 & -1 & -1 \\ 2 & 0 & -2 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 2 & 0 & -2 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 0 \\ -6 & 6 & 6 & -6 & -4 & -2 & 4 & 2 & -3 & 3 & -3 & 3 & -2 & -1 & -2 & -1 \\ 4 & -4 & -4 & 4 & 2 & 2 & -2 & -2 & 2 & -2 & 2 & -2 & 1 & 1 & 1 & 1 \end{smallmatrix}\right],$$ जो कि $$\alpha$$ को शीघ्र और सुगमता से गणना करने के लिए अनुमति प्रदान करता है।

16 गुणांकों के लिए एक और संक्षिप्त मैट्रिक्स रूप हो सकता है:
 * $$\begin{bmatrix}

f(0,0)&f(0,1)&f_y (0,0)&f_y (0,1)\\f(1,0)&f(1,1)&f_y (1,0)&f_y (1,1)\\f_x (0,0)&f_x (0,1)&f_{xy} (0,0)&f_{xy} (0,1)\\f_x (1,0)&f_x (1,1)&f_{xy} (1,0)&f_{xy} (1,1) \end{bmatrix} = \begin{bmatrix} 1&0&0&0\\1&1&1&1\\0&1&0&0\\0&1&2&3 \end{bmatrix} \begin{bmatrix} a_{00}&a_{01}&a_{02}&a_{03}\\a_{10}&a_{11}&a_{12}&a_{13}\\a_{20}&a_{21}&a_{22}&a_{23}\\a_{30}&a_{31}&a_{32}&a_{33} \end{bmatrix} \begin{bmatrix} 1&1&0&0\\0&1&1&1\\0&1&0&2\\0&1&0&3 \end{bmatrix},$$ या

\begin{bmatrix} a_{00}&a_{01}&a_{02}&a_{03}\\a_{10}&a_{11}&a_{12}&a_{13}\\a_{20}&a_{21}&a_{22}&a_{23}\\a_{30}&a_{31}&a_{32}&a_{33} \end{bmatrix} = \begin{bmatrix} 1&0&0&0\\0&0&1&0\\-3&3&-2&-1\\2&-2&1&1 \end{bmatrix} \begin{bmatrix} f(0,0)&f(0,1)&f_y (0,0)&f_y (0,1)\\f(1,0)&f(1,1)&f_y (1,0)&f_y (1,1)\\f_x (0,0)&f_x (0,1)&f_{xy} (0,0)&f_{xy} (0,1)\\f_x (1,0)&f_x (1,1)&f_{xy} (1,0)&f_{xy} (1,1) \end{bmatrix} \begin{bmatrix} 1&0&-3&2\\0&0&3&-2\\0&1&-2&1\\0&0&-1&1 \end{bmatrix}, $$ जहाँ
 * $$p(x,y)=\begin{bmatrix}1

&x&x^2&x^3\end{bmatrix} \begin{bmatrix} a_{00}&a_{01}&a_{02}&a_{03}\\a_{10}&a_{11}&a_{12}&a_{13}\\a_{20}&a_{21}&a_{22}&a_{23}\\a_{30}&a_{31}&a_{32}&a_{33} \end{bmatrix} \begin{bmatrix}1\\y\\y^2\\y^3\end{bmatrix}.$$

सरलरेखी ग्रिड का विस्तार
अधिकतर एप्लिकेशन यूनिट स्क्वायर के स्थान पर सरलरेखी ग्रिड पर डेटा का उपयोग करके बाइबिक प्रक्षेप के लिए कॉल करते हैं। इस स्थिति में  $$p_x, p_y,$$ और $$p_{xy}$$ के लिए पहचान बनना,
 * $$p_x(x,y) = \textstyle \sum\limits_{i=1}^3 \sum\limits_{j=0}^3 \frac{a_{ij} i x^{i-1} y^j}{\Delta x},$$
 * $$p_y(x,y) = \textstyle \sum\limits_{i=0}^3 \sum\limits_{j=1}^3 \frac{a_{ij} x^i j y^{j-1}}{\Delta y},$$
 * $$p_{xy}(x,y) = \textstyle \sum\limits_{i=1}^3 \sum\limits_{j=1}^3 \frac{a_{ij} i x^{i-1} j y^{j-1}}{\Delta x \Delta y},$$

जहाँ $$\Delta x$$, $$x$$ सेल की रिक्ति है जिसमें बिंदु $$(x,y)$$ है और इसी तरह $$\Delta y$$ के लिए,

इस स्थिति में गुणांक की गणना करने के लिए सबसे व्यावहारिक दृष्टिकोण $$\alpha$$ जाने देना है
 * $$x=\left[\begin{smallmatrix}f(0,0)&f(1,0)&f(0,1)&f(1,1)&\Delta x f_x(0,0)&\Delta xf_x(1,0)&\Delta x f_x(0,1)&\Delta x f_x(1,1)&\Delta y f_y(0,0)&\Delta y f_y(1,0)&\Delta y f_y(0,1)&\Delta y f_y(1,1)&\Delta x \Delta y f_{xy}(0,0)&\Delta x \Delta y f_{xy}(1,0)&\Delta x \Delta y f_{xy}(0,1)&\Delta x \Delta y f_{xy}(1,1)\end{smallmatrix}\right]^T,$$

पहले जैसा $$A$$ के साथ पुनः $$\alpha=A^{-1}x$$ हल करना। अगले सामान्यीकृत प्रक्षेपित चर की गणना इस प्रकार की जाती है,
 * $$\overline{x} = \frac{x-x_0}{x_1-x_0}$$,
 * $$\overline{y} = \frac{y-y_0}{y_1-y_0}$$

जहाँ $$x_0, x_1, y_0,$$ और $$y_1$$, $$x$$ और $$y$$ बिंदु के आसपास के ग्रिड बिंदुओं के निर्देशांक $$(x,y)$$ हैं तब प्रक्षेपित सतह बन जाती है
 * $$p(x,y) = \sum\limits_{i=0}^3 \sum_{j=0}^3 a_{ij} {\overline{x}}^i {\overline{y}}^j.$$

फ़ंक्शन मानों से डेरिवेटिव ढूँढना
यदि डेरिवेटिव अज्ञात हैं तो वे सामान्य रूप से इकाई वर्ग के कोनों के पास के बिंदुओं पर फ़ंक्शन मानों से अनुमानित होते हैं। उदाहरण: परिमित अंतर का उपयोग करना।

एकल डेरिवेटिव $$f_x$$ या $$f_y$$ में से किसी एक को खोजने हेतु उस विधि का उपयोग करते हुए उपयुक्त अक्ष में आसपास के दो बिंदुओं के बीच की ढलान का पता लगाएं। उदाहरण के लिए गणना करने हेतु $$f_x$$ किसी एक बिंदु के लिए $$f(x,y)$$ खोजें तथा लक्ष्य बिंदु के बाएँ और दाएँ बिंदुओं के लिए और उनकी ढलान की गणना करें, और इसी तरह $$f_y$$ का भी।

क्रॉस डेरिवेटिव $$f_{xy}$$ खोजने के लिए एक समय में दोनों अक्षों में व्युत्पन्न लें। उदाहरण के लिए कोई पहले $$f_x$$ उपयोग कर सकता है एवं $$x$$ लक्ष्य बिंदु के ऊपर और नीचे के बिंदुओं का डेरिवेटिव खोजने की प्रक्रिया फिर उपयोग करें, उन मूल्यों पर प्रक्रिया (सामान्य रूप से, के मूल्यों के बजाय $$f$$ उन बिंदुओं के लिए) का मान प्राप्त करने के लिए $$f_{xy}(x,y)$$ लक्ष्य बिंदु के लिए। (या कोई इसे विपरीत दिशा में कर सकता है, पहले गणना कर सकता है $$f_y$$ और तब $$f_x$$ उनकी ओर से दोनों बराबर परिणाम देते हैं।

डेटासेट के किनारों पर जब कोई आस-पास के कुछ बिंदुओं को याद कर रहा है तो लापता बिंदुओं को कई तरीकों से अनुमानित किया जा सकता है। एक सरल और सामान्य विधि यह मान लेना है कि उपस्थित बिंदु से लक्ष्य बिंदु तक ढलान बिना किसी और बदलाव के जारी है और इसका उपयोग लापता बिंदु के लिए काल्पनिक मूल्य की गणना करने के लिए किया जाता है।

बाइक्यूबिक कनवल्शन एल्गोरिथम
बाइबिक पट्टी प्रक्षेप के लिए प्रत्येक ग्रिड सेल के लिए ऊपर वर्णित रैखिक प्रणाली के समाधान की आवश्यकता होती है। दोनों आयामों में निम्नलिखित कर्नेल के साथ कनवल्शन लागू करके समान गुणों वाला एक प्रक्षेपक प्राप्त किया जा सकता है:
 * $$W(x) =

\begin{cases} (a+2)|x|^3-(a+3)|x|^2+1 & \text{for } |x| \leq 1, \\ a|x|^3-5a|x|^2+8a|x|-4a & \text{for } 1 < |x| < 2, \\ 0                      & \text{otherwise}, \end{cases} $$ जहाँ $$a$$ सामान्य रूप से -0.5 या -0.75 पर सेट होता है। ध्यान दें कि $$W(0)=1$$ और $$W(n)=0$$ सभी अशून्य पूर्णांकों के लिए $$n$$.

यह दृष्टिकोण कीज़ द्वारा प्रस्तावित किया गया था जिन्होंने यह दिखाया कि मूल कार्य के नमूनाकरण अंतराल के संबंध में $$a=-0.5$$ तीसरे क्रम के अभिसरण का उत्पादन करता है।

यदि हम सामान्य स्थिति के लिए मैट्रिक्स नोटेशन का उपयोग करते हैं $$a=-0.5$$ तब हम समीकरण को अधिक अनुकूल तरीके से व्यक्त कर सकते हैं:
 * $$p(t) =

\tfrac{1}{2} \begin{bmatrix}

1 & t & t^2 & t^3 \\

\end{bmatrix} \begin{bmatrix}

0 & 2 & 0 & 0 \\ -1 & 0 & 1 & 0 \\ 2 & -5 & 4 & -1 \\ -1 & 3 & -3 & 1 \\

\end{bmatrix} \begin{bmatrix}

f_{-1} \\ f_0 \\ f_1 \\ f_2 \\

\end{bmatrix} $$ के लिए आयाम $$t$$ के लिए 0 और 1 के बीच। ध्यान दें कि 1-आयामी क्यूबिक कनवल्शन प्रक्षेप के लिए 4 नमूना बिंदुओं की आवश्यकता होती है। प्रत्येक पूछताछ के लिए दो नमूने उसके बाईं ओर और दो नमूने दाईं ओर स्थित हैं। इस पाठ में इन बिंदुओं को -1 से 2 तक अनुक्रमित किया गया है। यहाँ अनुक्रमित बिंदु 0 से जांच बिंदु तक की दूरी को $$t$$ द्वारा निरूपित किया जाता है।

दो आयामों के लिए पहली बार एक बार $$x$$ लागू किया गया और फिर $$y$$ से :


 * $$b_{-1} = p(t_x, f_{(-1,-1)}, f_{(0,-1)}, f_{(1,-1)}, f_{(2,-1)}),$$
 * $$b_{0} = p(t_x, f_{(-1,0)}, f_{(0,0)}, f_{(1,0)}, f_{(2,0)}),$$
 * $$b_{1} = p(t_x, f_{(-1,1)}, f_{(0,1)}, f_{(1,1)}, f_{(2,1)}),$$
 * $$b_{2} = p(t_x, f_{(-1,2)}, f_{(0,2)}, f_{(1,2)}, f_{(2,2)}),$$
 * $$p(x,y) = p(t_y, b_{-1}, b_{0}, b_{1}, b_{2}).$$

कंप्यूटर ग्राफिक्स में प्रयोग करें
बाइक्यूबिक एल्गोरिद्म का उपयोग अधिकतर प्रदर्शन के लिए छवियों और वीडियो को स्केल करने के लिए किया जाता है (बिटमैप रीसैंपलिंग देखें )। यह सामान्य बिलिनियर फ़िल्टरिंग एल्गोरिथम की तुलना में उत्तम विवरण को उत्तम बनाए रखता है।

जबकि कर्नेल पर नकारात्मक लोब के कारण यह ओवरशूट (संकेत) (हेलोइंग) का कारण बनता है। यह क्लिपिंग (सिग्नल प्रोसेसिंग) का कारण बन सकता है और एक आर्टिफैक्ट है (बजती हुई कलाकृतियाँ भी देखें) परन्तु यह तीक्ष्णता (स्पष्ट तीक्ष्णता) को बढ़ाता है और वांछनीय हो सकता है।

यह भी देखें

 * स्थानिक विरोधी अलियासिंग
 * बेजियर सतह
 * बिलिनियर प्रक्षेप
 * क्यूबिक हर्मिट स्पलाइन, बाइक्यूबिक स्पलाइन का एक-आयामी एनालॉग
 * लैंक्ज़ोस रीसैंपलिंग
 * प्राकृतिक पड़ोसी प्रक्षेप
 * सिंक फिल्टर
 * तख़्ता प्रक्षेप
 * ट्राइक्यूबिक प्रक्षेप
 * दिशात्मक घन कनवल्शन प्रक्षेप

बाहरी संबंध

 * Application of interpolation to elevation samples
 * Interpolation theory
 * Explanation and Java/C++ implementation of (bi)cubic interpolation
 * Excel Worksheet Function for Bicubic Lagrange Interpolation