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

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

मूर्ति प्रोद्योगिकी में, बाइक्यूबिक प्रक्षेप को अक्सर रीसैंपलिंग (बिटमैप) में बिलिनियर या निकटतम-पड़ोसी प्रक्षेप पर चुना जाता है, जब गति कोई समस्या नहीं होती है। बिलिनियर प्रक्षेप के विपरीत जो केवल 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,$$

फिर हल करना $$\alpha=A^{-1}x$$ साथ $$A$$ पहले जैसा। अगला, सामान्यीकृत इंटरपोलिंग चर की गणना इस प्रकार की जाती है
 * $$\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_y$$ उन मूल्यों पर प्रक्रिया (सामान्य रूप से, के मूल्यों के बजाय $$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