logo

إنشاء مرشح غاوسي في C++

الترشيح الغوسي يستخدم على نطاق واسع في مجال معالجة الصور. يتم استخدامه لتقليل ضوضاء الصورة. في هذه المقالة سوف نقوم بإنشاء نواة غاوسية ثنائية الأبعاد. تتبع النواة الغوسية ثنائية الأبعاد التوزيع الغوسي الموضح أدناه. 
G(x y)=فارك{1}{2pi سيجما ^{2}}e^{-فارك{x^{2}+y^{2}}{2سيجما ^{2}}}   
حيث y هي المسافة على طول المحور الرأسي من الأصل x هي المسافة على طول المحور الأفقي من الأصل و ؟ هو الانحراف المعياري.

ما هو الترشيح الغوسي؟

التصفية Gaussian هي تقنية تستخدم في معالجة الصور لتنعيم الصور وتقليل التشويش. إنه يعمل عن طريق تطبيق تأثير التمويه باستخدام وظيفة رياضية تسمى الوظيفة Gaussian والتي تعطي وزنًا أكبر لوحدات البكسل المركزية وأقل وزنًا للبكسلات المحيطة. وينتج عن ذلك مظهر ضبابي طبيعي يساعد على إزالة التفاصيل غير المرغوب فيها مثل الحبوب أو القطع الأثرية الصغيرة. يتم استخدام التصفية الغوسية على نطاق واسع كخطوة معالجة مسبقة في مهام مثل التعرف على كائن اكتشاف الحافة وتحسين الصورة مما يسهل على الخوارزميات التركيز على الميزات المهمة.



التنفيذ في C++  

C++
// C++ program to generate Gaussian filter #include  #include    #include    using namespace std; // Function to create Gaussian filter void FilterCreation(double GKernel[][5]) {  // initialising standard deviation to 1.0  double sigma = 1.0;  double r s = 2.0 * sigma * sigma;  // sum is for normalization  double sum = 0.0;  // generating 5x5 kernel  for (int x = -2; x <= 2; x++) {  for (int y = -2; y <= 2; y++) {  r = sqrt(x * x + y * y);  GKernel[x + 2][y + 2] = (exp(-(r * r) / s)) / (M_PI * s);  sum += GKernel[x + 2][y + 2];  }  }  // normalising the Kernel  for (int i = 0; i < 5; ++i)  for (int j = 0; j < 5; ++j)  GKernel[i][j] /= sum; } // Driver program to test above function int main() {  double GKernel[5][5];  FilterCreation(GKernel);  for (int i = 0; i < 5; ++i) {  for (int j = 0; j < 5; ++j)  cout << GKernel[i][j] << 't';  cout << endl;  } } 

الإخراج: 

0.00296902 0.0133062 0.0219382 0.0133062 0.00296902   
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.0219382 0.0983203 0.162103 0.0983203 0.0219382
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.00296902 0.0133062 0.0219382 0.0133062 0.00296902 

تطبيقات العالم الحقيقي للتصفية الغوسية

تُستخدم المرشحات الغوسية في العديد من التقنيات اليومية تحسين جودة الصورة و استخراج معلومات مفيدة :

  • رؤية الكمبيوتر : يساعد على اكتشاف الحواف والأشكال عن طريق تقليل الضوضاء قبل تطبيق خوارزميات الكشف.
  • التصوير الطبي : يستخدم لتسهيل عمليات التصوير بالرنين المغناطيسي أو الأشعة المقطعية مما يسهل تحديد الأنسجة والتشوهات.
  • كشف الكائنات : يقوم بإعداد الصور عن طريق إزالة عوامل التشتيت مما يسمح للنماذج بالتركيز على الميزات الرئيسية.
  • أدوات تحرير الصور : تستخدم عادة للتطبيق آثار طمس تنعيم الصور أو تقليل التحبب للحصول على مظهر أنظف.

المقارنة مع المرشحات الأخرى

وإليك كيف مرشح غاوسي تبرز من المرشحات الشائعة الأخرى:



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

الترشيح الغوسي ثنائي الأبعاد مقابل ثنائي الأبعاد

أ مرشح غاوسي ثنائي الأبعاد يمكن تقسيمها إلى مرشحان 1D - واحد أفقي والآخر عمودي. وهذا ما يسمى قابلية الانفصال وهذا يعني أننا لسنا بحاجة إلى تطبيق نواة ثنائية الأبعاد كاملة مرة واحدة.

لماذا يهم:

بدلاً من إجراء حسابات ثقيلة باستخدام نواة كبيرة ثنائية الأبعاد (على سبيل المثال 5×5)، فإننا نطبق نواة 1D أفقيا ثم نفس النواة عموديا . هذا يقلل من وقت الحساب ويعطي نفس النتيجة .

قدم مقابل قدم

اعتبارات الأداء

توليد وتطبيق أ نواة غاوس يمكن أن يكون مكلفة حسابيا خاصة بالنسبة للصور الكبيرة أو النوى.



  • تعقيد الوقت :
    • لنواة الحجم ك × ك تطبق على ن × ن صورة تعقيد الوقت يا (ن² × ك²) .
    • وذلك لأن كل عملية بكسل تتضمن التكرار على النواة بأكملها.
  • التحسين – مرشحات قابلة للفصل :
    حبات غاوسية هي قابل للفصل مما يعني أنه يمكن اقتحام مرشح ثنائي الأبعاد مرشحان 1D : واحد أفقي والآخر عمودي.
    • وهذا يقلل من تعقيد الوقت ل يا (ن² × ك) صنعها أسرع بكثير لنواة أكبر.

يعد استخدام المرشحات القابلة للفصل خدعة شائعة في الأنظمة الواقعية لتسريع عملية التصفية الغوسية دون فقدان الجودة.

يجب أن تقرأ

  • قم بتطبيق مرشح Gauss على الصورة باستخدام Python
  • كيفية إنشاء مصفوفة غاوسية ثنائية الأبعاد باستخدام NumPy؟
  • تكامل الوظائف الغوسية

خاتمة

التصفية الغوسية هي تقنية بسيطة لكنها قوية تقليل تشويش الصورة وعدم وضوحها باستخدام المتوسط ​​​​المرجح السلس بناءً على الدالة الغوسية. في هذه المقالة قمنا بإنشاء نواة غاوسية ثنائية الأبعاد واستكشفت دورها في مختلف تطبيقات العالم الحقيقي مثل رؤية الكمبيوتر والتصوير الطبي وتحرير الصور. وقمنا أيضًا بمقارنتها مع المرشحات الأخرى وناقشنا طرقًا لذلك تحسين الأداء باستخدام مرشحات قابلة للفصل. التصفية الغوسية الشاملة هي أ أداة أساسية في معالجة الصور المساعدة في تحسين جودة الصورة وتسهيل تركيز الخوارزميات على التفاصيل المرئية المهمة.