استخدام نظام التشغيل iOS تسريع إطار لمعالجة الإشارات ثنائية الأبعاد على صور غير طاقة من نوعها؟

StackOverflow https://stackoverflow.com//questions/10708667

سؤال

و// تحرير ...

أقوم بتحرير سؤالي قليلا لمعالجة مشكلة العمل على وجه التحديد باستخدام صور غير طاقة من نوعها. لدي بنية أساسية تعمل مع صور رمادية رمادية مربعة بأحجام مثل 256x256 أو 1024x1024، ولكن لا يمكن أن نرى كيفية التعميم لصور الحجم التعسفي. يبدو أن وظائف FFT ترغب في تضمين سجل LOG2 من العرض والارتفاع، ولكن بعد ذلك غير الواضح كيفية فك البيانات الناتجة، أو إذا لم تحصل البيانات فقط. أفترض أن الشيء الواضح الذي يجب القيام به هو لتقسيط صورة NPOT داخل صورة أكبر وكلها سوداء ثم تجاهل أي قيم في تلك المواقف عند النظر إلى البيانات. ولكن أتساءل عما اذا كان هناك وسيلة أقل مربكة للعمل مع البيانات npot.

// ... End تحرير

أواجه مشكلة مع وثائق الإسراع الإطارية. أود عادة استخدام FFTW3، لكنني أواجه مشكلة في الحصول على ذلك لتجميعها على جهاز iOS الفعلي (انظر هذا السؤال ). يمكن نقطة أي شخص لي أن تطبيق بسيط السوبر باستخدام تسريع أن يفعل شيء كما يلي:

1) يتحول بيانات الصورة إلى بنية البيانات المناسبة التي يمكن أن تنتقل إلى تسريع أساليب الاتحاد الفرنسي للتنس ل.
في FFTW3، في أبسط، باستخدام صورة رمادية، ينطوي على وضع البايتات غير الموقعة في صفيف "FFTW_COMPLEX"، وهو ببساطة هيكل من علة اثنين، يحمل المرء القيمة الحقيقية والآخرين الوهمية (وحيث تكون وهمية تهيئة إلى الصفر لكل بكسل).

2) يأخذ هذا الهيكل البيانات وينفذ على الاتحاد الفرنسي للتنس على ذلك.

3) يطبع الحجم والمرحلة.

4) يؤدي ifft عليها.

5) يعيد الصورة الأصلية من البيانات الناتجة عن IFFFT.

وعلى الرغم من أن هذا هو مثال بسيط جدا، وأنا أواجه مشكلة في استخدام وثائق من موقع أبل. الجواب SO التي كتبها بي هو هنا مفيدة جدا، ولكنني ما زلت الخلط إلى حد ما حول كيفية استخدام تسريع أن تفعل هذه الوظيفة الأساسية باستخدام الرمادي (أو اللون) 2D صورة.

وعلى أية حال، أي مؤشرات أو خاصة بعض التعليمات البرمجية عمل بسيط الذي يعالج صورة 2D ستكون مفيدة للغاية!

و\\\ \\\ تحرير

حسنا، بعد اتخاذ بعض الوقت للغوص في الوثائق وبعض رمز مفيد للغاية بالإضافة إلى repo's github repo ، لدي بعض رمز العمل الذي اعتقدت أنني كنت سأنشر منذ 1) استغرق الأمر مني بعض الوقت لمعرفة ذلك و 2) منذ أن يكون لدي زوجين الأسئلة المتبقية ...

وتهيئة الاتحاد الفرنسي للتنس "خطة". على افتراض وجود صورة طاقة مربعة:

giveacodicetagpre.

وممر في صفيف بايت للحصول على صورة الرمادي مربع السلطة لطفلين وتحويله الى COMPLEX_SPLIT:

giveacodicetagpre.

قم بتشغيل FFT على بيانات الصور المحولة، ثم الاستيلاء على الحجم والمرحلة:

giveacodicetagpre.

الآن يمكنك تشغيل IFFT على بيانات Out_fft للحصول على الصورة الأصلية ...

giveacodicetagpre.

أو يمكنك تشغيل IFFT على الحجم للحصول على التصحيح التلقائي ...

giveacodicetagpre.

أخيرا، يمكنك وضع نتائج IFFT مرة أخرى في صفيف صورة:

giveacodicetagpre.

لم أحسب كيفية استخدام الإطار التسارع للتعامل مع صور غير الطاقة. إذا قمت بتخصيص الذاكرة الكافية في الإعداد، فيمكنني إجراء FFT، متبوعا ب IFFT للحصول على صورتي الأصلية. ولكن إذا حاول القيام بتصحيح التصحيح التلقائي (بحجم FFT)، فإن صورتي تحصل على نتائج متزعزع. لست متأكدا من أفضل طريقة لوحة الصورة بشكل مناسب، لذلك نأمل شخص لديه فكرة عن كيفية القيام بذلك. (أو مشاركة نسخة عمل من طريقة VDSP_CONV!)

هل كانت مفيدة؟

المحلول

أود أن أقول أنه من أجل أداء العمل على أحجام الصور التعسفية، كل ما عليك فعله هو حجم صفيف قيمة المدخلات الخاصة بك بشكل مناسب إلى القوة التالية من 2.

الجزء الصعب هو مكان وضع بيانات الصور الأصلية وما الذي يجب ملءه به. ما تحاول حقا القيام به في الصورة أو منجم البيانات من الصورة أمر حاسم.

في قوات الدفاع الشعبي المرتبطة أدناه، تولي اهتماما خاصا للفقرة فوق 12.4.2 http://www.mathcs.org/java/programs/fft /fftinfo/c12-4.pdf

بينما يتحدث أعلاه عن التلاعب بجانب محاور 2، يمكننا أداء فكرة مماثلة قبل البعد الثاني، والمتابعة بعد البعد الثاني. إذا قمت بتصحيح ذلك، فيمكن أن يتم تطبيق هذا المثال (وهذا ليس بأي حال من الأحوال خوارزمية دقيقة بعد):

أقول أن لدينا صورة 900 بحلول الساعة 900: أولا يمكننا تقسيم الصورة إلى شرائح عمودي من 512 و 256 و 128 و 4. سنقوم بعد ذلك بمعالجة 4 FFTS 1D لكل صف، واحد لأول 512 بكسل، التالي ل 256 بكسل التالية، التالي ل 128 التالي، ثم الأخير للباقي 4. منذ إخراج FFT هو شعبية في الأساس من التردد، ثم يمكن أن تضاف هذه ببساطة (من وجهة نظر التردد فقط، وليس الإزاحة الزاوي). يمكننا بعد ذلك دفع هذه التقنيات نفسها نحو البعد الثاني. في هذه المرحلة، كنا نأخذ في الاعتبار كل بكسل المدخلات دون الحاجة فعليا إلى الوسادة.

هذا هو حقا طعام فقط للفكر، لم أحاول هذا نفسي، وبالفعل يجب أن أبحث هذا بنفسي. إذا كنت تفعل ذلك حقا هذا النوع من العمل الآن، فقد يكون لديك المزيد من الوقت أكثر مما كانت عليه في هذه المرحلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top