كيفية تنفيذ التنعيم في مجال التردد؟
-
28-09-2019 - |
سؤال
أريد أن أقوم بالتنعيم على صورة في مجال التردد. عندما أستخدم Google لمشاهدة أي مقالات ، أعطت بعض رموز MATLAB التي لا أحتاج إليها. يمكنني القيام بـ FFT إلى صورة لكنني لا أعرف كيفية تنفيذ أي تقنيات تنعيم (ILPF ، BLPF ، IHPF ، BHPF) في مجال التردد. إذا تمكنت من تقديم أي عينات رمز لأي من التقنيات المذكورة أعلاه دون استخدام أي مكتبات معالجة الصور ، فسيكون ذلك مفيدًا حقًا ويفضل C#.
شكرًا،
المحلول
هل يمكنك تحديد ما تعنيه من خلال "التنعيم في مجال التردد"؟ يمكنك إنشاء صورة طيف باستخدام FFT وضرب الصورة بواسطة بعض الوظائف لتخفيف ترددات معينة ، ثم تحويل الطيف مرة أخرى إلى صورة باستخدام FFT العكسي. ومع ذلك ، بالنسبة لهذا النوع من التصفية (الضرب بواسطة بعض وظائف التحجيم في التردد) ، يمكنك تحقيق نفس النتيجة بسرعة أكبر من خلال التوفيق مع الوظيفة المزدوجة في المجال المكاني.
في أي حال ، إذا كنت ترغب في تنفيذ هذا بنفسك ، فاقرأ على FFT (تحويل فورييه السريع) والالتواء. يمكنك أيضًا التحقق من كتاب معالجة الإشارات ، إذا كنت مهتمًا ، لأن النظرية وراء التصفية المنفصلة تكون عميقة إلى حد ما. لن تكون الخوارزميات ذات معنى كبير بدون هذه النظرية ، على الرغم من أنه يمكنك بالتأكيد تطبيقها دون فهمها.
إذا كنت ترغب في تنفيذ خوارزميات DSP الخاصة بك ، تحقق من هذا الكتاب عبر الانترنت. على وجه الخصوص ، يصف الفصل 33 الرياضيات والخوارزمية وراء تصميم مرشح Butterworth. CH 12 يصف كيفية تنفيذ FFT.
نصائح أخرى
هناك سلسلة رائعة على مشروع التعليمات البرمجية من قبل كريستيان جروس والتي قد تجدها مفيدة ، وخاصة الجزء 2 الذي يتعامل بين الآخرين مع مرشحات تنعيم:
معالجة الصور للدمى مع C# و GDI+ الجزء 1 - لكل بكسل مرشحات
معالجة الصور للدمى مع C# و GDI+ الجزء 2 - مرشحات الالتصاق
معالجة الصور للدمى مع C# و GDI+ الجزء 3 - مرشحات اكتشاف الحافة
معالجة الصور للدمى مع C# و GDI+ الجزء 4 - مرشحات ثنائية الأذن وتغيير حجمها
معالجة الصور للدمى مع C# و GDI+ الجزء 5 - مرشحات الإزاحة ، بما في ذلك دوامة
معالجة الصور للدمى مع C# و GDI+ الجزء 6 - مساحة لون HSL
كيشان ، الأمر بسيط. تخيل أن FFT هي صورتان أخريان حيث تقع الترددات المنخفضة في الترددات الوسطى والعالية بعيدًا عن الوسط. إذا تم ترقيم وحدات البكسل من -W/2 إلى W/2 و -H/2 إلى H/2 ، يمكنك ببساطة قياس المسافة من الوسط كـ (x ، y) = sqrt (x^2+y^2) . ثم خذ بعض الوظيفة المتناقصة الرتيب التعسفي مثل f (x) = 1/(1+x) وضرب كل نقطة في FFT مع F (A (x ، y)). ثم تحويل مرة أخرى باستخدام FFT.
هناك خيارات مختلفة لـ F (x) والتي ستبدو مختلفة. على سبيل المثال وظيفة غوسية أو بيسيل أو أي شيء. لقد فعلت هذا من أجل المرحلة الجامعية الأولى وكان ممتعًا للغاية. إذا أرسلت لي بريدًا ، فسوف أرسل لك برنامجي :-).
تحذير واحد بت واحد هو الترتيب في إخراج FFT. يمكن طلب المصفوفات التي تنشئها بطرق غريبة. من المهم أن تكتشف أي فهرس الصفيف الذي يتوافق مع الموضع x/y في تحويل فورييه "التحليلي"!
لجميع معالجة الصور/الإشارة أوصي OpenCV.
هذا لديه غلاف C# المدير: EMGU.