کاهش نویز (noise reduction) یک فرآیند حذف نویز از سینگال است‌.این سیگنال می‌تواند مربوط به یک تصویر، ویدئو یا یک فایل صوتی باشد.
تمام دستگاه‌های ضبط کردن (recording devices) ویژگی هایی دارند که آن‌ها را در معرض نویز قرار می‌دهد.نویز میتواند بصورت رندوم یا نویز سفید (به سیگنالی گفته می‌شود که در تابع چگالی توان آن ، توان به‌طور یکنواخت در همهٔ فرکانس‌ها توزیع شده ‌باشد) باشد.

حذف نویز

۱. مقدمه

هدف از از بین‌بردن نویز‌ها از سیگنال ،بازسازی تصویرِ تحریف شده و برگرداندن آن به حالت اصلیَش بر اساس مدل‌های ایده‌آل است که در این پژوهش چگونگی‌ این فرآیند را مورد بررسی قرار می‌دهیم.

تحریف تصویر میتواند ناشی از موارد زیر باشد :

  1. تضعیف تصویر (image degradation) در سنجش محیط :(مثال: آشفتگی تصادفی جوی)

  2. تضعیف ناهموار از نویز حسگر

  3. تضعیف ناشی از حسگرها : (مثال: حرکت دوربین یا خارج از فوکوس)

  4. اِعوِجاج هندسی(geometric distortion) :(مثال: عکس های زمین که توسط یک دوربین در یک ماهواره گرفته شده است.)


روی تصاویر دو عملیات میتوان انجام داد :

عملیات روی تصاویر

توضیح : این جدول در برنامه ی pages تهیه شده و تصویر آن در سایت http://uupload.ir آپلود شده تا بتوان در این قسمت آن را اضافه کرد و نمایش داد.این فایل در گیت هاب با عنوان attachments قرار داده شده است.


منشاء نویزها میتواند از موارد زیر باشد:

  1. نویز از حسگرها :
    .مدارهای الکترونیکی (Electronic circuits)
    .سطح نور (Light level)
    .دمای سنسور(Sensor temperature)

  2. نویز از محیط :
    .روشنایی (Lightening)
    .اختلال جوی (Atmospheric disturbance)
    .سایر سیگنال های الکتریکی / مغناطیسی قوی (Other strong electric/magnetic signals)

انواع نویز :[1]

  1. نویز گاوسی (gaussian noise)

  2. نویز رایلی (Rayleigh noise)

  3. نویز گاما (Gamma noise)

  4. نویز نمایی (Exponential noise)

  5. نویز یکنواخت (Uniform noise)

  6. نویز ضربه ای (salt & pepper = Impulse noise)

ما در این پروژه می خواهیم از الگوریتم‌های موجود برای حذف نویز استفاده کنیم.برای انتخاب یک الگوریتم مناسب ، نیاز است نکاتی باید مورد توجه قرار‌ بگیرد‌.

  • نکات در انتخاب الگوریتم برای کاهش نویز :
    . قدرت کامپیوتر و زمان موجود
    . قربانی کردن برخی جزئیات واقعی قابل قبول است اگر اجازه می دهد نویز بیشتری حذف شود.
    . توجه به ویژگی های نویز و جزئیات در تصویر

در قسمت کارهای مرتبط به روش‌های موجودی اشاره می‌کنیم که در پردازش تصاویر برای کاهش نویز از آنها استفاده شده است.

۲. کارهای مرتبط

  • حذف نویز از تصاویر توسط فیلتر کردن : فیلترینگ
    نویز تصویر یک اثر جانبی اجتناب ناپذیر است که در اثر ضبط تصویر اتفاق می افتد "نوسانات اجتناب ناپذیر" . در یک دوربین دیجیتال، اگر نور که به لنز وارد می شود با سنسور ناسازگار باشد، نویز تصویر ایجاد می کند.حتی اگر نویز در یک تصویر قابل مشاهده نباشد، نوعی نویز تصویری وجود دارد. هر نوع دستگاه الکترونیکی یک سری نویز دریافت و ارسال میکند و به آن چیزی که در حال ایجاد شدن است انتقال میدهد.بنابراین، برای حذف نویز، فیلترها مورد نیاز هستند.آنها (فیلترها) انواع مختلفی دارند مثل فیلتر هموارساز خطی ،فیلتر میانه ، فیلتر وینر و فیلتر فازی . در این روش فیلتر کردن سه مورد (R G B) به صورت جداگانه انجام می شود.

    فیلتر کردن بصورت جداگانه (R G B)

    1. فیلتر هموارساز خطی : برای حذف نوع خاصی از نویز استفاده می شود. فیلترهای متوسط یا گاوس برای این منظور مناسب هستند.فیلترهای خطی همچنین تمایل دارند که لبه های تیز را خنثی کنند، خطوط و سایر جزئیات تصویر را از بین ببرند و در حضور نویز وابسته به سیگنال ضعیف عمل کنند.فیلترهای هموارکننده تصویر رو مات میکنند چون سطوح روشنایی پیکسل‌ها رو با توجه به همسایه‌هایشان تغییر میدهند.در واقع میزان وضوح تصاویر(sharpness) کم میشود.به دلیل این اختلال، فیلترهای خطی فقط در عمل برای کاهش نویز رضایت بخش هستند.

    2. فیلتر میانه (median filter): الگوریتم فیلتر میانه به شرح زیر است:
      قدم اول : یک پنجره دو بعدی W به اندازه 3 * 3 را انتخاب کنید.(میتوان هر اندازه ی مربعی را انتخاب کرد اما در نتیجه تاثیر دارد.) فرض کنید که پیکسل در حال پردازش (C(x، y است. قدم دوم : محاسبه میانگین(Wmed) پیکسل ها در پنجره W . قدم سوم : جایگزینی (C(x، y توسط Wmed . قدم چهارم : مراحل یک تا سه را تکرار کنید تا تمام پیکسل ها در کل تصویر پردازش شوند.

      الگوریتم فیلتر میانه

      مزایا : الف) پیاده سازی آسان است. ب) برای خنثی کردن انواع مختلف نویز استفاده می شود.
      معایب : الف) تمایل به حذف جزئیات تصویر در حال کاهش نویز مانند خطوط و گوشه های نازک. ب) عملکرد فیلترینگ میانه در مورد نویز وابسته به سیگنال رضایت بخش نیست. برای حذف این مشکلات، تغییرات مختلف فیلترهای میانه برای نتایج بهتر ایجاد شده است.

۳. آزمایش ها

۳.۱. مرحله ی اول :

۳.۱.۱. توضیحات اولیه :

در مرحله ی اول ، روی چند تصویر آزمایش را انجام میدهیم . آزمایش به این صورت است که چند نوع نویز در تصاویر ایجاد میکنیم ، سپس با روش های موجود برای حذف نویز ، سعی میکنیم آنها ( نویزها ) را حذف کنیم . این روش ها مبتنی بر فیلترهای مکانی (spatial filters) هستند مثل mean filter و median filter .
نکته ای که باید به آن توجه کرد ، این است که فیلترهای مکانی برای همه ی نویز ها کاربرد ندارند و برای حذف یک سری از نویزها باید روش های دیگری اتخاذ کرد که در مرحله ی دوم آزمایشات (بهبود سازی) به آنها میپردازیم.
در پیاده سازی از کتابخانه ی openCV که برای بینایی کامپیوتر می باشد استفاده شده است.

۳.۱.۲. تصاویر استفاده شده :

در پوشه ای با عنوان Images در گیت هاب قرار داده شده است.

۳.۱.۳. توضیح در مورد پیاده سازی و کُد :

ایجاد کردن نویز روی تصاویر ، توسط یک تابع تعریف شده در کُد به نامِ noisy است که آرگومان های ورودی آن ، تصویر و نوع نویز می باشد.نویز های تعریف شده از نوع gaussian ، salt and pepper ، speckle هستند.
کد استفاده شده برای gaussian نویز :

row,col= image.shape
mean = 0
var = 100
sigma = var**0.5
gauss = np.random.normal(mean,sigma,(row,col))
gauss = gauss.reshape(row,col)
noisy = (image + gauss)
for i in range(len(noisy)):
     for j in range(len(noisy[i])):
             noisy[i,j] = np.uint8(noisy[i,j])
             if( noisy[i,j]<0):
                        noisy[i,j] = 0 
             elif  noisy[i,j]>255: 
                        noisy[i,j]=255

کد استفاده شده برای salt and pepper نویز :

s_vs_p = 0.5
amount = 0.04
out = np.copy(image)
num_salt = np.ceil(amount * image.size * s_vs_p)
coords = [np.random.randint(0, i - 1, int(num_salt)) for i in image.shape]
out[coords] = 255
num_pepper = np.ceil(amount* image.size * (1. - s_vs_p))
coords = [np.random.randint(0, i - 1, int(num_pepper))for i in image.shape]
out[coords] = 0

کد استفاده شده برای speckle نویز :

row,col = image.shape
gauss = np.random.randn(row,col)
gauss = gauss.reshape(row,col)
noisy = image + image * gauss

کد استفاده شده برای [2] mean filter :

kernel = np.ones((3,3),np.float32)/9
denoised_mean = cv2.filter2D(noisyImage,-1,kernel)

(با افزایش مقدار اعداد ، نویز بیشتری حذف میشود اما تصویر تار تری خواهیم داشت.)

کد استفاده شده برای [3] median filter :

denoised_median = cv2.medianBlur(image,3)

۳.۱.۴. نتایج :

طبق آزمایشات به عمل آمده از بین ۲ روش پیاده سازی شده برای حذف نویز ، median filter نتیجه ی دلخواه را می دهد ولی mean filter تصویر واضحی نمیدهد و آن را تار میکند.

نتایج کامل این مرحله که در گیت هابِ مربوطه در پوشه ی Results قرار داده شده ، قابل مشاهده است.

از سمت چپ : اولی تصویری از یک ماشین دارای نویز از نوع speckle است ،دومی با median filter و سومی با mean filter پردازش شده اند.

۳.۲. مرحله ی دوم :

آزمایش روی نمونه های بیشتر و استفاده از روش های رفع نویز در دامنه ی فرکانس است. (این مرحله مربوط به بخشِ بهبودسازی برنامه است)

۴. مراجع

[1]Signal & Image Processing : An International Journal (SIPIJ) Vol.6, No.2, April 2015 , Ajay Kumar Boyat1 and Brijendra Kumar Joshi
[2]Computer Vision: A First Course, Blackwell Scientific Publications, 1988, pp 32 - 34.
Machine Vision: Theory, Algorithms and Practicalities, Academic Press, 1990, Chap. 3.
[3]An Introduction to Image Processing, Chapman and Hall, 1991, p 274.

۵. پیوندهای مفید

در این پژوهش از یک سری اسلایدها مورد مطالعه قرار گرفته که لینک‌‌های مربوطه را در قسمتِ پیوندهای مفید آورده‌ایم.

Slides 1
Slides 2

محمد حسن سوهان آجینی

سلام
هنوز برخی از ایرادات وارد شده در مرحله‌ی قبل در متن موجود هستند و اصلاح نشده‌اند.
موارد زیر به بهتر شدن کار شما کمک می‌کند (هر چند آوردن بعضی موارد در گزارش نهایی شما لازم هستند):
۱- توضیحات ارایه‌شده در قسمت ۳.۱.۳ بسیار مختصر هستند. انتظار می‌رفت توضیح بیشتری در مورد پارامترهای مهم هر نویز ارایه می‌دادید.
۲- برای سنجش کار، از عکس‌های رنگی نیز استفاده کنید. اعمال فیلتر‌ها روی کانال‌های RGB کار سختی نیست!
۳- در گزارش نهایی کار، مقایسه‌ی انواع فیلترها و اینکه هر کدام در چه نویز‌هایی بهتر عمل می‌کنند لازم است.