نویز و حذف نویز در تصاویر
نویز و حذف نویز در تصاویر
مقدمهای بر نویز در پردازش تصویر
در پردازش تصویر، نویز به تغییرات ناخواسته یا تصادفی در شدت روشنایی پیکسلها گفته میشود که کیفیت تصویر را کاهش میدهد. نویز ممکن است به دلایل مختلفی مانند نقص حسگر دوربین، شرایط محیطی (مانند نور کم)، یا خطاهای انتقال داده ایجاد شود. برای ارزیابی روشهای پردازش تصویر یا طراحی الگوریتمهای حذف نویز، گاهی لازم است نویز بهصورت دستی به تصویر اضافه شود. متلب با ارائه تابع imnoise امکان شبیهسازی انواع نویز را فراهم میکند. در این مقاله، انواع نویز، ویژگیهای آنها، و روشهای حذف نویز را بررسی کرده و با مثالهای عملی در متلب، این مفاهیم را نشان میدهیم.
انواع نویز در تصاویر
نویزهای رایج در تصاویر دیجیتال شامل موارد زیر هستند:
- نویز گاوسی (Gaussian Noise):
- ویژگیها: این نویز از توزیع نرمال (گاوسی) پیروی میکند و مقادیر تصادفی با میانگین و واریانس مشخص به پیکسلهای تصویر اضافه میشود.
- علت ایجاد: معمولاً به دلیل نویز حرارتی حسگرها یا نویز الکترونیکی در دوربینها.
- کاربرد شبیهسازی: برای ارزیابی فیلترهای نرمکننده مانند فیلتر گاوسی.
- نویز نمک و فلفل (Salt and Pepper Noise):
- ویژگیها: پیکسلهایی بهصورت تصادفی به مقادیر بسیار روشن (سفید) یا بسیار تیره (سیاه) تغییر میکنند، شبیه به نقاط نمک و فلفل.
- علت ایجاد: خطاهای حسگر یا خطاهای انتقال داده.
- کاربرد شبیهسازی: برای آزمایش فیلترهای غیرخطی مانند فیلتر میانه.
- نویز پواسون (Poisson Noise):
- ویژگیها: این نویز به تعداد فوتونهای دریافتی توسط حسگر بستگی دارد و از توزیع پواسون پیروی میکند. شدت نویز با شدت روشنایی پیکسلها تغییر میکند.
- علت ایجاد: در تصاویر با نور کم یا حسگرهای حساس مانند دوربینهای نجومی.
- کاربرد شبیهسازی: برای تحلیل تصاویر پزشکی یا نجومی.
- نویز اسپیکل (Speckle Noise):
- ویژگیها: نویزی چندضربی است که شدت پیکسلها را بهصورت تصادفی تغییر میدهد، شبیه به برفک در تصاویر تلویزیونی یا راداری.
- علت ایجاد: در تصاویر رادار، سونوگرافی، یا لیزر به دلیل تداخل امواج.
- کاربرد شبیهسازی: برای ارزیابی الگوریتمهای پردازش تصاویر راداری یا پزشکی.
شبیهسازی نویز در متلب
متلب با تابع imnoise امکان افزودن انواع نویز به تصاویر را فراهم میکند. این تابع پارامترهای مختلفی مانند واریانس (برای نویز گاوسی) یا چگالی (برای نویز نمک و فلفل) را میپذیرد.
I = imread('cameraman.tif');
for i = 1:4
if i ==1
J = imnoise(I,'gaussian');
elseif i ==2
J = imnoise(I,'speckle');
elseif i == 3
J = imnoise(I,'poisson');
elseif i == 4
J = imnoise(I,'salt & pepper');
end
subplot (2,2,i) ,imshow(J)
end
- نویز گاوسی: باعث ایجاد تغییرات تصادفی یکنواخت در کل تصویر میشود و تصویر را کمی تار یا دانهدار نشان میدهد.
- نویز اسپیکل: الگویی شبیه به برفک ایجاد میکند که در تصاویر راداری رایج است.
- نویز پواسون: شدت نویز در مناطق روشنتر بیشتر است، زیرا به تعداد فوتونها وابسته است.
- نویز نمک و فلفل: نقاط سفید و سیاه پراکندهای در تصویر ایجاد میکند که بهصورت پیکسلهای پرت دیده میشوند.

روشهای حذف نویز
هر نوع نویز به روش خاصی برای حذف نیاز دارد. در ادامه، روشهای مناسب برای حذف هر نوع نویز ذکر شده است:
- نویز گاوسی:
- روش حذف: فیلتر گاوسی (Gaussian Filter) یا فیلتر میانگینگیر (Mean Filter) برای نرم کردن تصویر.
- چرا مؤثر است؟: این فیلترها با میانگینگیری پیکسلها، تغییرات تصادفی را کاهش میدهند.
- نویز نمک و فلفل:
- روش حذف: فیلتر میانه (Median Filter).
- چرا مؤثر است؟: فیلتر میانه پیکسلهای پرت (خیلی روشن یا تیره) را با میانه شدت پیکسلهای اطراف جایگزین میکند.
- نویز پواسون:
- روش حذف: فیلترهای تطبیقی یا الگوریتمهای مبتنی بر تبدیل ویولت (Wavelet Transform).
- چرا مؤثر است؟: این روشها میتوانند نویز وابسته به شدت روشنایی را بهخوبی مدیریت کنند.
- نویز اسپیکل:
- روش حذف: فیلترهای خاص مانند فیلتر لی (Lee Filter) یا فیلتر فراست (Frost Filter).
- چرا مؤثر است؟: این فیلترها برای نویزهای چندضربی طراحی شدهاند و جزئیات تصویر را حفظ میکنند.
کد نمونه برای حذف نویز
% برنامهنویس: ناشناس
clc; clear all; close all;
% خواندن تصویر و افزودن نویز
I = imread('cameraman.tif');
I_gaussian = imnoise(I, 'gaussian', 0, 0.02); % نویز گاوسی
I_salt_pepper = imnoise(I, 'salt & pepper', 0.05); % نویز نمک و فلفل
% حذف نویز گاوسی با فیلتر گاوسی
gaussian_filter = fspecial('gaussian', [5 5], 1.5);
I_denoised_gaussian = imfilter(I_gaussian, gaussian_filter);
% حذف نویز نمک و فلفل با فیلتر میانه
I_denoised_salt_pepper = medfilt2(I_salt_pepper, [3 3]);
% نمایش نتایج
figure;
subplot(2, 3, 1); imshow(I); title('تصویر اصلی');
subplot(2, 3, 2); imshow(I_gaussian); title('نویز گاوسی');
subplot(2, 3, 3); imshow(I_denoised_gaussian); title('حذف نویز گاوسی');
subplot(2, 3, 4); imshow(I); title('تصویر اصلی');
subplot(2, 3, 5); imshow(I_salt_pepper); title('نویز نمک و فلفل');
subplot(2, 3, 6); imshow(I_denoised_salt_pepper); title('حذف نویز نمک و فلفل');
فیلتر گاوسی: نویز گاوسی را کاهش میدهد، اما ممکن است لبههای تصویر را کمی تار کند.
فیلتر میانه: نویز نمک و فلفل را بهخوبی حذف میکند و لبههای تصویر را بهتر حفظ میکند.

کاربردهای شبیهسازی و حذف نویز
- ارزیابی الگوریتمها: شبیهسازی نویز در مقالات علمی برای تست عملکرد الگوریتمهای حذف نویز.
- پردازش تصاویر پزشکی: حذف نویز در تصاویر MRI، CT، یا سونوگرافی برای بهبود تشخیص.
- تصاویر راداری و نجومی: حذف نویز اسپیکل در تصاویر رادار یا تلسکوپ.
- بهبود کیفیت تصویر: برای کاربردهای عکاسی یا ویدئو در شرایط نور کم.
نکات پیشرفته
- پارامترهای تابع imnoise: میتوانید واریانس (برای نویز گاوسی و اسپیکل) یا چگالی (برای نویز نمک و فلفل) را تنظیم کنید تا شدت نویز را کنترل کنید.
- فیلترهای تطبیقی: برای نویزهای پیچیدهتر (مانند اسپیکل)، فیلترهای تطبیقی مانند فیلتر ویولت یا فیلترهای مبتنی بر یادگیری عمیق مؤثرتر هستند.
- یادگیری عمیق: شبکههای عصبی مانند Denoising Autoencoders برای حذف نویز در تصاویر مدرن بسیار پرکاربرد هستند.
نتیجهگیری
نویز در تصاویر یکی از چالشهای اصلی در پردازش تصویر است که کیفیت تصویر را کاهش میدهد. با استفاده از تابع imnoise در متلب، میتوان انواع نویز مانند گاوسی، نمک و فلفل، پواسون، و اسپیکل را شبیهسازی کرد. برای حذف این نویزها، فیلترهای خطی (مانند گاوسی) و غیرخطی (مانند میانه) عملکرد مؤثری دارند. انتخاب روش مناسب حذف نویز به نوع نویز و کاربرد خاص بستگی دارد. در آموزشهای بعدی، به بررسی تکنیکهای پیشرفتهتر حذف نویز، مانند روشهای مبتنی بر یادگیری عمیق، خواهیم پرداخت.

دیدگاه (1)
اسفندیار
سلام استاد خیلی عالی بود. ممنون