मोशन वेक्टर एमपीईजी के लिए भविष्य कहनेवाला कोडिंग में कैसे काम करते हैं?


16

एमपीईजी में, एक ऐसी प्रक्रिया है जहां एक छवि को मैक्रोब्लॉक में तोड़ दिया जाता है और एक गति वेक्टर की गणना उन प्रत्येक मैक्रो ब्लॉक के लिए की जाती है। फिर आप वीडियो अनुक्रम में अगली छवि को फिर से बनाने के लिए, भविष्यवाणी की त्रुटियों के साथ इन वैक्टर को प्रसारित करते हैं।

मैं कोशिश कर रहा हूँ कि यह कैसे काम करे। प्रत्येक macroblock के साथ एक गति वेक्टर जुड़ा होता है, जो (यदि वेक्टर [1,0] है), कहता है कि all the pixels in this block move 1 in the x direction and 0 in the y direction for the next frame. यदि सभी मोशन वैक्टर सही तरीके से संरेखित नहीं होते हैं, तो क्या यह छवि के क्षेत्रों को बेहिसाब नहीं छोड़ देगा (जैसे कि वह क्षेत्र जहां वह मैक्रोब्लॉक पहले स्थान पर था)?

उदाहरण के लिए, मेरे पास निम्नलिखित प्रश्न हैं जो मुझे मिले।

समय टी पर निम्नलिखित छवि पर विचार करें:

7   7   7   7           
7   7   5   5        
7   5   5   8         
8   8   8   8           
9   9   9   9       
9   9   9   9

इस छवि को 2x2 macroblocks में तोड़ दिया गया था और निम्नलिखित गति वैक्टर को इसे फिर से बनाने के लिए भेजा गया था:

(0,0)  (0,0)  (0,1)  (-1,1)  (0,0)  (0,0)

पिछले समय के चरण, t - 1 में छवि इस प्रकार दिखी:

7   7   7   7           
7   7   5   4        
7   7   7   7         
7   5   8   8           
8   9   8   9       
9   9   9   9   

क्या त्रुटियां प्रेषित की गईं?

आप इसे कैसे हल करेंगे?

जवाबों:


5

अपने भ्रम को आसान बनाने के लिए - दो प्रक्रियाएँ हैं:

1. मोशन आकलन
2. मोशन मुआवजा

इससे पहले कि हम अनुमान के बारे में बात करें, हमें मोशन मुआवजे के बारे में बात करनी चाहिए।

चलो कहते हैं, ब्लॉक में विभाजित है बी एल सी कश्मीर रों टी [ कश्मीर ] ( एक्स ' ,Imaget(x,y)Blockst[k](x,y)

मोशन मुआवजे की कार्य का उत्पादन होता है किसी भी क्षेत्र से की मैं हूँ एक जी टी - 1 ( एक्स , वाई )Blockst[k](x,y)Imaget1(x,y)

इसलिए एक और ब्लॉक जरूरी 16x16 सीमा पर गठबंधन नहीं है एक सबसे अच्छा संभव मैच Blockst1[k](x+mx,y+my)

इधर, mx,my को गति वैक्टर कहा जाता है।

हम लक्ष्य और संदर्भ के बीच त्रुटि की गणना कर सकते हैं

Errt[k](x,y)=Blockst[k](x,y)Blockst1[k](x+mx,y+my)

तो अब, एनकोडर मूल रूप से (DCT और परिमाणीकरण के साथ) और ( m x , m y ) [ k ] को प्रसारित करता है।Errt[k](x,y)(mx,my)[k] प्रत्येक ब्लॉक के लिए ।

तो एनकोडर के पास 2 काम करने के लिए है:

1. मोशन एस्टीमेशन प्रत्येक k के लिए m x , m y [ k ]
की प्रक्रिया या अनुमान लगाना , जैसे E r r t [ k ] ( x , y )mx,my[k]kErrt[k](x,y) को न्यूनतम किया जाता है Motion मोशन कहलाता है।

2. त्रुटि छवि की पीढ़ी मोशन मुआवजा के बाद
के निर्माण की प्रक्रिया से मैं टी छवि पिक्सल और ( मीटर एक्स , मीटर y ) [ कश्मीर ] कहा जाता है मोशन मुआवजा । त्रुटि छवि वह है जो संचरित हो जाती है।Blockst[k](x,y)It(mx,my)[k]

अंत में, डिकोडर moiton वैक्टर और त्रुटि छवि का उपयोग करके अपने स्वयं के 'मोशन मुआवजे' को फिर से कर सकता है।

अब हमें कुछ बिंदुओं का एहसास हुआ है:

  1. बेस्ट मोशन का अनुमान उस ऊर्जा को कम करने में मदद करता है जिसे प्रसारित करने की आवश्यकता होती है और इसलिए दिए गए गुणवत्ता के लिए बिट्स का अनुकूलन करता है।

  2. हालांकि, भले ही आदर्श नहीं है या अगर दृश्य में अंतिम तस्वीर पर महत्वपूर्ण बदलाव है, तो आर आर टी [ के ] ( एक्स , वाई ) हमेशा रिसीवर को प्रेषित किया जाता है - इसलिए पुनर्निर्माण हमेशा सही होता है (परिमाणीकरण द्वारा बनाई गई हानि को मापता है)। इसलिए, यहां तक ​​कि अगर आपके पास उप-मध्य गति वेक्टर या अतिरेक नहीं है, तो पुनर्निर्माण अभी भी अधिक बिट्स के साथ हमेशा सही है!(mx,my)[k]Errt[k](x,y)

  3. Blockst[k](x,y)

  4. Blockst[k](mx,my)[k]Blockst[k+1]

  5. Energy(Errt[k](x,y))>Energy(Blockst[k](x,y))

ऐसे मामलों में, अंतर भेजने के बजाय भविष्यवाणी के बिना सीधे ब्लॉक प्रसारित करना अधिक उचित हो सकता है। यह एन्कोडर में INTRA ब्लॉक नामक प्रावधान द्वारा भी संभव है।


3

नहीं, यह छिद्रों को नहीं छोड़ेगा, क्योंकि वेक्टर एक अज्ञात फ्रेम (P या B) से, ज्ञात फ्रेम (I- फ्रेम) से है। यह एक छोटे से याद दिलाता है कि ओटी एक छवि परिवर्तन की गणना कैसे करता है - आप छिद्रों से बचने के लिए एक पिछड़े परिवर्तन का उपयोग करते हैं /


3

B(i,j)i={0,1,2}j={0,1}(2i,2j)

(0,0) (0,2)
(2,0) (2,2)
(4,0) (4,2)

M(i,j)

(0,0) (0,0)
(0,1) (-1,1)
(0,0) (0,0)

बी'(मैं,जे)=बी(मैं,जे)+(मैं,जे)

(0,0) (0,2)
(2,1) (1,3)
(4,0) (4,2)

बी'(मैं,जे)बी(मैं,जे)

नोट: हम "गति में" ब्लॉक के किसी भी प्रकार के अतिव्यापी से संरक्षित नहीं हैं (दो ब्लॉकों को अतिव्यापी स्थानों पर स्थानांतरित कर दिया जाता है)। इसे संभालने के तरीके हैं, लेकिन यह इस प्रतिक्रिया के दायरे से परे है। अभी के लिए, हम किसी भी पिक्सेल को एक ब्लॉक के साथ फिर से लिखने जा रहे हैं जिसे हम उनके स्थान पर ले जा रहे हैं, ताकि अगर वहाँ पहले भी ब्लॉक हो गए थे, तो वे अधिलेखित हो जाएंगे।

बी'(मैं,जे)बी(मैं,जे)। हमें फॉलोइनफ अनुमानित फ्रेम मिलता हैएफ

7 7 7 7
7 ५ 5
7 7 7 8
५ ५ 5
९ 8 ९
९ ० ९ १ ९

त्रुटि अनुमानित फ्रेम के बीच पाया जाता है एफ और हम भविष्यवाणी करने की कोशिश कर रहे हैं एफ द्वारा पाया जाता है =एफ-एफ जिसकी हम गणना करते हैं

० ० ० ०           
0 0 0 -3        
0 0 0 -1         
० ० ३ ०           
० ० ० ०       
० ० ० ०

जबकि मुझे लगता है कि अब तक सिग्नल प्रोसेसिंग समुदाय इस सवाल को रखने के लिए एक सबसे अच्छी जगह है, हालांकि, इस तरह के विषयों और इसके आसपास गहराई से शामिल प्रौद्योगिकियों को अपने स्वयं के स्थान की आवश्यकता होती है। Q & A साइट ब्रॉडकास्ट और मीडिया टेक्नोलॉजीज का एक नया प्रस्ताव है, कृपया इसमें शामिल हों और योगदान करें।
दीपन मेहता

@DipanMehta बहुत अच्छा! =)
फोनॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.