यह प्रश्न का अनुवर्ती है:
तो कोड का उपयोग करके:
<प्री> बी = ब्लॉकप्रोक (ए, [1 1], @ब्लॉक_फ़न, 'सीमा आकार', [2 2], 'ट्रिम बॉर्डर', गलत, 'पैडपार्टीअल ब्लॉक', सच)
< P> मैं अपनी छवि पर ओवरलैपिंग स्लाइडिंग विंडो बनाने में सक्षम था और प्रत्येक विंडो के लिए dct2
की गणना करता था लेकिन समस्या यह है कि ब्लॉक प्रोक आउटपुट को एक तरह से संसाधित करता है जो मैं उपयोग नहीं कर सकता। उत्पादन बहुत ब्लॉक आकार पर निर्भर करता है और आउटपुट मैट्रिक्स का आकार हर बार इसकी वजह से भिन्न होता है। मेरा dct2
फ़ंक्शन एक 1 x 200 प्रत्येक ब्लॉक या विंडो के लिए वेक्टर इसलिए मैंने मान लिया है कि अगर 64 ब्लॉक हैं तो मुझे 64 x 200
या 200 x 64
आउटपुट की तरह कुछ मिलना चाहिए, लेकिन मुझे 64 x 1600 जैसा कुछ मिलता है या बड़े ब्लॉकों के मामले में मुझे 15 x 400
मिलता है।
इस समस्या को देखने के लिए blockproc
फ़ंक्शन को देख रहा है
< पूर्व> % 4 कोने ब्लॉक ख (1: ul_output_size (1), 1: ul_output_size (2), :) = ul_output; यदि ll_processed last_row_start = final_rows - आकार (ll_output, 1) + 1; Last_row_width = आकार (ll_output, 2); बी (आखिरी __उ_स्टार्टः अंत, 1: अंतिम_रो_विड्थ, :) = ll_output; अंत अगर ur_processed last_col_start = final_cols - आकार (ur_output, 2) + 1; Last_col_height = आकार (ur_output, 1); बी (1: आखिरी ___हॉइट, आखिरी ___स्टार्टः एंड, :) = ur_output; अंत अगर lr_processed last_row_start = final_rows - आकार (ll_output, 1) + 1; Last_col_start = अंतिम_cols - आकार (ur_output, 2) + 1; बी (अंतिम_ओआर_स्टार्टः एंड, आखिरी ___स्टार्टः एंड, :) = एलआर_आउटपुट; अंत में
जाहिरा तौर पर, ब्लॉकप्रोग आगे वाले ब्लाकों को ऊपरी बाएं, ऊपरी दाएं, निचले बाएं और निचले दायें में विभाजित करता है और परिणामस्वरूप संमिश्रण करता है। और यही कारण है कि मुझे ये सभी मिश्रित आउटपुट मिल रहे हैं।
प्रत्येक विंडो में प्रत्येक ब्लॉक के प्रत्येक ब्लॉक के आउटपुट की आवश्यकता है I प्रत्येक विंडो को मुझे एक 1x200
आउटपुट देना चाहिए, जिससे कि मैं अपने वर्गीकारक में फ़ीड कर सकूं।
क्या मैं blockproc
के आउटपुट को उस तरीके से बाध्य कर सकता हूँ मुझे यह चाहिए, बस प्रत्येक ब्लॉक का आउटपुट दें।
यदि नहीं, तो मैं छवि पर ओवरलैपिंग स्लाइडिंग विंडो के लिए वैकल्पिक समाधान की सराहना करता हूं।
संपादित करें : फ़ंक्शन के अंदर सेल एरे में प्रत्येक ब्लॉक के लिए block_struct.data का उपयोग करके ब्लॉकों डेटा को बचाने के लिए संभव है block_fun
और तब निकालने के लिए उस सरणी का उपयोग करें मेरी विशेषताएं?
धन्यवाद
संपादित करें:
B = blockproc (images_m {1}, [64 64] ], 'पैडपार्टीअल ब्लॉक', सही, 'पैडप्रिमेंट', 'ट्रेंडबर्ड', गलत, 'पैडपार्टीअल ब्लॉक', [10 10] ',' प्रतिकृति '); आईएमजी = {}; मैं = 1 के लिए: आकार (बी, 1) जम्मू = 1 के लिए: आकार (बी, 2) tempy = निचोड़ (बी (आई, जे, :)); Tempy2 = reshape (tempy, [84 84]); Feats {end + 1} = block_dct2 (tempy2); % ब्लॉक के लिए dct2 की गणना करता है और एक 1 * 200 वेक्टर अंत का अंत देता है
हो सकता है कि नयी आकृतियाँ तीसरे आयाम में आपके डेटा?
& gt; & gt; ए = जादू (3) ए = 8 1 6 3 5 7 4 9 2 & gt; & gt; बी = ब्लॉकप्रोक (ए, [1 1], @ (एक्स) reshape (x.data (:), [1 1 अंक (x.data)]), 'सीमा आकार', [1 1], 'ट्रिम बॉर्डर', गलत , 'पैडपार्टीअल ब्लॉक', सत्य); & Gt; & gt; Whos बी नाम आकार बाइट वर्ग गुण बी 3x3x9 648 डबल & gt; & gt; निचोड़ (बी (1,1, :)) ans = 0 0 0 0 8 3 0 1 5> और gt;
No comments:
Post a Comment