اذهب إلى المحتوى
  • 0

إزالة الضجيج الغاوصي باستخدام المرشح الغاوصي gussianBlur في OpenCV | بايثون

Ali Ismael

السؤال

Recommended Posts

  • 1

لتطبيق المرشح الغاوصي على الصورة نقوم أولاً بقراءة الصورة، ثم نقوم بتطبيق التابع GaussianBlur على الصورة:

GaussianBlur(src, ksize, sigmaX,sigmaY)

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

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
# قراءة الصورة
image=cv.imread("/content/gray.png",0)
# إضافة الضجيج الغاوصي لها بشكل يدوي
gauss=np.random.normal(0,0.5,image.shape).astype('uint8')
gauss_image=cv.add(image,gauss)
# تطبيق المرشح
filtered_image= cv.GaussianBlur(gauss_image,(5,5),1)
# عرض النتائج
plt.figure(figsize=(25,15))
plt.subplot(131)
plt.imshow(image, cmap='gray')
plt.title("gray_image")
plt.subplot(132)
plt.imshow(gauss_image, cmap='gray')
plt.title("gray_image with noise")
plt.subplot(133)
plt.imshow(filtered_image, cmap='gray')
plt.title("image after applying gaussian filter")

الخرج:
index.thumb.png.0a1fa7e0ec5d28e3a78ce3be7e7e7f92.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

إذا أردت استخدام المرشج الجاوسي Gaussian filter من أجل تنقية الصورة من الضجيج الجاوسي Gaussian noise فيجب في البداية أن نفهم من أين يأتي الضجيج.

في البداية Gaussian noise هي بعض الضوضاء التي تأتي من التوزيع الجاوسي Gaussian distribution والتي تحدث خللاً له نمط في الصور، ولازالتها نقوم بتنعيم الصورة عن طريق عمل مصفوفة أحادية وقسمتها على عددها كالتالي:

1/3 * [1 1 1
       1 1 1 
       1 1 1]

ويتم تطبيق المصفوفة على كل بيكسل في الصورة بحيث تعمل كانها تأخذ المتوسط فيقلل هذا تأثير الضوضاء، المثال التالي يوضح هذا:

import numpy as np
import cv2
import matplotlib.pyplot as plt
%matplotlib inline 

# قراءةالصورة
img = cv2.imread('./imagesStackoverflow/danish_invoice.png')

# تطبيق الفلتر
blur = cv2.GaussianBlur(img,(5,3), 1) 

# عمل حد للصورة لتحويلها لأبيض وأسود
mask=cv2.inRange(blur,(0,0,0),(150,150,150))

# عكس الصورة
res = 255 - mask

plt.figure(1)
plt.subplot(121), plt.imshow(img[:,:,::-1]), plt.title('original') 
plt.subplot(122), plt.imshow(blur, cmap='gray'), plt.title('blurred')
plt.figure(2)
plt.subplot(121), plt.imshow(mask, cmap='gray'), plt.title('masked')
plt.subplot(122), plt.imshow(res, cmap='gray'), plt.title('result')
plt.show()

ويكون الناتج في صورة من ملف كالتالي:

aZVvY.thumb.png.53f08abdda7b4ecbdf38c289babdf0d8.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...