الدرس الثامن

Lesson_8 slides

: تنعيم الصور

: الهدف

تغبيش الصورة مع عدة مرشحات للتردد المنخفض

تطبيق مرشحات محددة التركيب للصور (الطي)الثنائي

: الطي ثنائي البعد - ترشيح الصور

كما في الاشارات وحيدة البعد يمكن ايضاً فلترة الصور باستخدام مرشحات

LPF , HPF

الاول يساعد في ازالة الضجيج وتغبيش الصورة والثاني يساعد بايجاد الحواف بالصورة وبالمكتبة هنا لدينا التابع

cv2.filter2D()

لطي قناع مع صورة , وكمثال سنجرب هنا مرشح معدل على صورة , , مرشح توسيطي قد يعرف كالتالي

K=1/25*| 1  1  1  1  1 |
       | 1  1  1  1  1 |
       | 1  1  1  1  1 |
       | 1  1  1  1  1 |
       | 1  1  1  1  1 |

وهذا يكافئ حساب المتوسط لمجموعة البكسلات الواقعة ضمن القناع

جرب الكود التالي وقارن النتيجة

In [4]:
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('opencv_ios.png')

kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img,-1,kernel)

plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.show()

:تنعيم الصورة

وتستخدم لازالة الضجيج , تحديدا التردادات المرتفعة , وتجعل الحواف اخف , ولكن هناك انواع لا تفعل , عموما المكتبة

OpenCV

تقدم 4 تقنيات اساسية , للتغبيش كالتالي

: التوسيط

وهذا يطبق تابع الصندوق على الصورة , وهذا يتم من خلال التوابع

cv2.blur() , cv2.boxFilter()

ويجب تحديد الطول والعرض للقناع المعدل

: ملاحظة

اذا لم ترد استخدام قناع معدل , يمكنك استخدام التابع الثاني من اعلاه وتمرير

normalized = False

الق نظرة , على البرنامج التالي ذو القناع 5,5

In [5]:
# for the above image
blur = cv2.blur(img,(5,5))

plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

: الترشيح الغاوسي

والان بدلا من قناع صندوق ذو عوامل متساوية سنستخدم مرشح غاوسي , وهذا يتم عبر التابع ,

cv2.GaussianBlur()

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

cv2.getGaussianKernel()

وبتحوير سطر واحد بالكود السابق

In [6]:
# for the above image
blur = cv2.GaussianBlur(img,(5,5),0)

plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

: الترشيح الاوسطي

وهنا يحسب التابع , العنصر الاوسط بالقيمة لمجموعة البكسلات تحت القنالع ويستبدله بالعنصر المركزي

cv2.medianBlur()

وهذا الترشيح فعال جدا بحالة ضجيج الملح والفلفل , واحدى الملاحظات المثيرة ان المرشحات السابقة دائما ما تستبدل العنصر بقيمة قد لاتكون اصلا في الصورة , على عكس الترشيح الاوسطي , مما يقلص الضجيج بفعالية ,

قياس القناع يجب ان يكون عددا مفردا . وبهذا المثال اخذنا , صورة بضجيج و طبقنا المرشح الاوسطي عليها

In [9]:
img = cv2.imread('noisy1.bmp')
median = cv2.medianBlur(img,5)

plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.show()
plt.imshow(median),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

: Bilateral الترشيح

كما لاحظنا تميل المرشحات السابقة لتغبيش الحواف , ولكن هذا لايتم بحالة هذا المرشح , وهذا هو غرضه الاساسي , بحيث يزيل الضجيج دون الاضرار بالحواف

cv2.bilateralFilter()

فالمرشح الغاوسي لا يهتم بان البكسلات تحت القناع ذات شدات متقاربة ام لا , مما يغبش الحواف

وهذا المرشح ياخذ قناعا غاوسياً ايضاً ولكن مع مضروب اضافي تابع للفرق بشدات البكسلات , وهو بذلك يحتسب كل من الجوار المكاني والجوار في الشدات , وبذلك يحافظ على الحواف ,

: والكود ادناه يوضح استخدامه

In [11]:
dst = cv2.imread('PICT0173.jpg')

# change 4 matplotlib
img1 = np.zeros(dst.shape,np.uint8)
img1[:,:,0] = dst[:,:,2]
img1[:,:,1] = dst[:,:,1]
img1[:,:,2] = dst[:,:,0]

blur = cv2.bilateralFilter(img1,9,75,75)

plt.imshow(img1),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.show()
plt.imshow(blur),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

مراجع اضافية

هناك الكثير من المراجع حول

bilateral filtering

: تمارين

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

ملاحظة

هذا التمرين , يمكن حله بطرق ديناميكية تضمن زيادة الضجيج من خلال اداة سحب مثلا

ليست هناك تعليقات:

إرسال تعليق