کاهش نویز تصویر در بینایی ماشین: راهنمای جامع

نویسنده:
محمد سلطان پور
تاریخ انتشار:
06 تیر 1404
دیدگاه ها:
کاهش نویز تصویر

 سیستم‌های بینایی ماشین در کاربردهای متعددی—از بازرسی صنعتی و رباتیک تا خودروهای خودران و تصویربرداری پزشکی—نقش اساسی دارند. یکی از چالش‌های همیشگی در این حوزه نویز تصویر است: تغییرات ناخواسته در شدت پیکسل‌ها که سیگنال…

 سیستم‌های بینایی ماشین در کاربردهای متعددی—از بازرسی صنعتی و رباتیک تا خودروهای خودران و تصویربرداری پزشکی—نقش اساسی دارند. یکی از چالش‌های همیشگی در این حوزه نویز تصویر است: تغییرات ناخواسته در شدت پیکسل‌ها که سیگنال واقعی را مخدوش یا پنهان می‌کند. کاهش نویز تصویر نه تنها کیفیت بصری را بهبود می‌بخشد، بلکه عملکرد وظایف پسین مانند تشخیص اشیاء، تقسیم‌بندی و اندازه‌گیری را نیز به‌طور چشمگیری بالا می‌برد. در این مقاله مفصل، به مباحث زیر می‌پردازیم:

  1. مبانی نویز تصویر
  2. انواع و منابع نویز
  3. روش‌های کاهش نویز در حوزه‌ی فضایی
  4. فیلترینگ در حوزه‌ی فرکانس
  5. روش‌های مبتنی بر تبدیل (ویولت و فراتر)
  6. کاهش نویز مبتنی بر یادگیری عمیق
  7. معیارهای ارزیابی کاهش نویز
  8. مثال‌های عملی پیاده‌سازی
  9. کاربردها در بینایی ماشینی
  10. روندهای آینده و نتیجه‌گیری

۱. مبانی نویز تصویر

در هر سیستم تصویربرداری، نویز به دلیل نقص‌های فیزیکی و الکترونیکی ایجاد می‌شود. قبل از بررسی الگوریتم‌های کاهش نویز، باید تفاوت بین سیگنال و نویز را شناخت:

  • سیگنال: محتوای معنی‌دار تصویر (لبه‌ها، بافت‌ها)
  • نویز: تغییرات تصادفی که به جزئیات واقعی ارتباطی ندارند

نویز می‌تواند منجر به:

  • کاهش کنتراست و تار شدن لبه‌ها
  • خطا در استخراج ویژگی‌ها (مثلاً تشخیص نادرست لبه‌ها)
  • کاهش دقت در طبقه‌بندی و اندازه‌گیری

کاهش نویز (دنوایزینگ) به معنای تضعیف این تغییرات تصادفی و در عین حال حفظ ساختارهای اصلی تصویر—لبه‌ها، بافت‌ها و جزئیات ظریف—است.

۲. انواع و منابع نویز

۲.۱ نویز گاوسی (اضافی)

  • مدل: هر پیکسل با یک متغیر تصادفی با توزیع گاوسی جابجا می‌شود.
  • منبع: نویز الکترونیکی سنسور، نوسانات حرارتی.

۲.۲ نویز نمک و فلفل (نویز ضربه‌ای)

  • مدل: برخی پیکسل‌ها به صورت تصادفی به مقدار حداقل یا حداکثر شدت تنظیم می‌شوند.
  • منبع: خطا در انتقال داده، پیکسل‌های خراب.

۲.۳ نویز پواسون (شات)

  • مدل: واریانس مساوی با میانگین سیگنال (نویز وابسته به سیگنال).
  • منبع: شمارش فوتون‌ها در شرایط نوری کم.

۲.۴ نویز اسپکل

  • مدل: نویز ضربی معمولاً به صورت I_noisy = I_clean + I_clean * N مدل می‌شود که N یک متغیر تصادفی است.
  • منبع: سیستم‌های تصویربرداری کوherent مانند اولتراسوند و رادار با شکافت تکانه‌ای (SAR).

شناخت نوع نویز در انتخاب روش مناسب کاهش آن حیاتی است.

۳. روش‌های کاهش نویز در حوزه‌ی فضایی

روش‌های حوزه‌ی فضایی مستقیماً بر روی شدت پیکسل‌ها عمل کرده و معمولاً از پنجره‌های محلی متحرک استفاده می‌کنند.

۳.۱ فیلترهای خطی

۳.۱.۱ فیلتر میانگین (باکس)

  • اصول: هر پیکسل با میانگین پیکسل‌های همسایه‌اش جایگزین می‌شود.
  • مزایا: ساده و سریع.
  • معایب: لبه‌ها را تار می‌کند و جزئیات را کاهش می‌دهد.
import cv2
denoised = cv2.blur(noisy_image, (5, 5))

۳.۱.۲ فیلتر گاوسی

  • اصول: میانگین وزنی که اوزان آن از یک هسته‌ی گاوسی پیروی می‌کنند.
  • مزایا: بلور یکنواخت‌تر و حفظ بهتر لبه‌ها نسبت به فیلتر میانگین.
  • معایب: همچنان لبه‌ها را تار می‌کند.
denoised = cv2.GaussianBlur(noisy_image, (5, 5), sigmaX=1.0)

۳.۲ فیلترهای غیرخطی

۳.۲.۱ فیلتر میانه

  • اصول: هر پیکسل با میانه‌ی پیکسل‌های همسایه جایگزین می‌شود.
  • مزایا: عالی برای نویز نمک و فلفل؛ لبه‌ها را حفظ می‌کند.
  • معایب: برای نویز گاوسی کمتر مؤثر است و محاسبات سنگین‌تری دارد.
denoised = cv2.medianBlur(noisy_image, 5)

۳.۲.۲ فیلتر دو-ساحتی (بی‌لاترال)

  • اصول: بلور یکنواخت با حفظ لبه‌ها از طریق ترکیب فاصله فضایی و تشابه شدت.
  • مزایا: نواحی همگن را صاف می‌کند و لبه‌ها را حفظ می‌کند.
  • معایب: نیاز به تنظیم پارامترها؛ کندتر از فیلتر گاوسی.
denoised = cv2.bilateralFilter(noisy_image, d=9, sigmaColor=75, sigmaSpace=75)

۳.۳ روش میانگین غیرمحلی (Non-Local Means)

  • اصول: برای هر پیکسل، میانگین وزنی از تمام پیکسل‌های پنجره جستجو محاسبه می‌شود که اوزان بر اساس شباهت پچ‌ها تعیین می‌شوند.
  • مزایا: حفظ عالی بافت‌ها و لبه‌ها.
  • معایب: هزینه محاسباتی بالا؛ نیاز به تنظیم دقیق اندازه پنجره و پچ.
denoised = cv2.fastNlMeansDenoisingColored(noisy_image, None, h=10, hColor=10, templateWindowSize=7, searchWindowSize=21)

کاهش نویز تصویر

۴. فیلترینگ در حوزه‌ی فرکانس

در این روش‌ها تصویر با تبدیل فوریه به حوزه‌ی فرکانس می‌رود، مؤلفه‌های فرکانس بالا (که اغلب نویز در آن قرار دارد) تضعیف می‌شوند و سپس تصویر از طریق تبدیل معکوس بازسازی می‌شود.

۴.۱ فیلترهای پایین‌گذر

  • فیلتر ایده‌آل: قطع ناگهانی؛ ممکن است موجب «هاله» (رینگینگ) شود.
  • فیلتر باترورث: قطع نرم‌تر با درجه‌ی قابل کنترل.
  • فیلتر گاوسی: نرم‌ترین قطع؛ کمترین هاله.
import numpy as np
import cv2

# محاسبه تبدیل فوریه
dft = cv2.dft(np.float32(noisy_image), flags=cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)

# ساخت ماسک پایین‌گذر گاوسی
rows, cols = noisy_image.shape[:2]
crow, ccol = rows//2 , cols//2
mask = np.zeros((rows, cols, 2), np.float32)
sigma = 30
for i in range(rows):
    for j in range(cols):
        distance = ((i-crow)**2 + (j-ccol)**2)
        mask[i,j] = np.exp(-distance/(2*(sigma**2)))

# اعمال ماسک و بازسازی
fshift = dft_shift * mask
f_ishift = np.fft.ifftshift(fshift)
img_back = cv2.idft(f_ishift)
denoised = cv2.magnitude(img_back[:,:,0], img_back[:,:,1])

۵. روش‌های مبتنی بر تبدیل (ویولت و فراتر)

کاهش نویز در حوزه‌ی ویولت از نمایش چندرزولوشنی برای جداسازی نویز از سیگنال بهره می‌برد.

۵.۱ آستانه‌گذاری در ویولت

۱. تصویر را به زیر‌باندهای ویولت تجزیه می‌کنیم.
۲. سطح نویز را (مثلاً با میانه قدر مطلق ضرایب زیر‌باند بسامد بالاتر) برآورد می‌کنیم.
۳. با آستانه‌گذاری سخت یا نرم، ضرایب نویزی را کاهش می‌دهیم.
۴. تصویر را با تبدیل معکوس ویولت بازسازی می‌کنیم.

import pywt
import numpy as np

coeffs = pywt.wavedec2(noisy_image, 'db1', level=2)
# برآورد نویز از زیر‌باند HH در بالاترین سطح
sigma_est = np.median(np.abs(coeffs[-1][2])) / 0.6745
uthresh = sigma_est * np.sqrt(2*np.log(noisy_image.size))

denoised_coeffs = []
for c in coeffs:
    if isinstance(c, tuple):
        denoised_coeffs.append(tuple(pywt.threshold(subband, uthresh, mode='soft') for subband in c))
    else:
        denoised_coeffs.append(c)
denoised = pywt.waverec2(denoised_coeffs, 'db1')

۵.۲ کرولت‌ها، کانتورلت‌ها و فراتر

تبدیل‌های پیشرفته مانند کرولت و کانتورلت لبه‌ها را بهتر از ویولت مدل می‌کنند و در نویزگیری تصاویر با جزئیات جهت‌دار عملکرد بهتری دارند.

۶. کاهش نویز مبتنی بر یادگیری عمیق

در سال‌های اخیر، شبکه‌های عصبی عمیق ویژه‌ای برای دنوایزینگ توسعه یافته‌اند که اغلب از روش‌های کلاسیک پیشی می‌گیرند.

۶.۱ اتوانکودرهای دنوایزینگ (DAE)

  • معماری: شبکه‌ کدگذار–رمزگشا که از ورودی نویزی، تصویر تمیز را بازسازی می‌کند.
  • آموزش: کمینه‌سازی خطای بازسازی (مثلاً MSE) روی داده‌های نویزی–تمیز زوج.

۶.۲ DnCNN

  • نوآوری: یادگیری باقیمانده—شبکه نویز را پیش‌بینی می‌کند و آن را از تصویر ورودی کم می‌کند.
  • ساختار: لایه‌های متوالی کانولوشن با BatchNorm و ReLU.

۶.۳ واریانت‌های U-Net

  • کاربرد گسترده در تصویربرداری پزشکی و میکروسکوپ؛ اتصالات پرش‌دهنده جزئیات ظریف را حفظ می‌کنند.

۶.۴ روش‌های خودنظارتی و بدون نظارت

  • Noise2Noise: با زوج تصاویر نویزی بدون نیاز به تصویر تمیز آموزش می‌دهد.
  • Noise2Void / Blind-Spot: پیش‌بینی هر پیکسل بر اساس همسایگانش و جلوگیری از یادگیری هویت.

مثال: پیاده‌سازی ساده DnCNN در PyTorch

import torch
import torch.nn as nn

class DnCNN(nn.Module):
    def __init__(self, channels=1, num_layers=17):
        super(DnCNN, self).__init__()
        layers = []
        layers.append(nn.Conv2d(channels, 64, 3, padding=1))
        layers.append(nn.ReLU(inplace=True))
        for _ in range(num_layers-2):
            layers.append(nn.Conv2d(64, 64, 3, padding=1))
            layers.append(nn.BatchNorm2d(64))
            layers.append(nn.ReLU(inplace=True))
        layers.append(nn.Conv2d(64, channels, 3, padding=1))
        self.dncnn = nn.Sequential(*layers)

    def forward(self, x):
        noise = self.dncnn(x)
        return x - noise

۷. معیارهای ارزیابی کاهش نویز

برای مقایسه الگوریتم‌ها و تنظیم پارامترها، ارزیابی کمی ضروری است:

  • PSNR (نسبت سیگنال به نویز پیک) PSNR=10log⁡10 ⁣(MAX2MSE) \mathrm{PSNR} = 10 \log_{10}\!\Bigl(\frac{\mathrm{MAX}^2}{\mathrm{MSE}}\Bigr) که MAX بیشینه مقدار پیکسل (مثلاً ۲۵۵) و MSE میانگین مربع خطا است.
  • SSIM (شاخص شباهت ساختاری)
    معیاری ادراکی که روشنایی، کنتراست و ساختار را می‌سنجد.

می‌توان معیارهای پیشرفته‌تر مثل VIF و FSIM را نیز برای سنجش دقیق‌تر کیفیت استفاده کرد.

۸. مثال‌های عملی پیاده‌سازی

۸.۱ استفاده از OpenCV برای کاهش نویز فضایی

import cv2
noisy = cv2.imread('noisy.png', cv2.IMREAD_GRAYSCALE)
denoised_spatial = cv2.fastNlMeansDenoising(noisy, None, h=10, templateWindowSize=7, searchWindowSize=21)
cv2.imwrite('denoised_spatial.png', denoised_spatial)

۸.۲ فیلتر پایین‌گذر FFT

(کد در بخش ۴.)

۸.۳ کاهش نویز ویولت با PyWavelets

(کد در بخش ۵.)

۸.۴ یادگیری عمیق با PyTorch

  • آماده‌سازی دیتاست زوج noisy–clean
  • تعریف مدل DnCNN یا U-Net
  • آموزش ۵۰–۱۰۰ اپوک با Adam
  • ذخیره بهترین مدل بر اساس SSIM اعتبارسنجی

۹. کاربردها در بینایی ماشینی

  1. بازرسی اپتیکال خودکار (AOI)
    تشخیص نقص‌هایی مانند خراش و فرورفتگی در خطوط تولید با تصاویر کم‌نویز و پرکنتراست.
  2. خودروهای خودران
    بهبود تصاویر دوربین و داده‌های لیدار در شرایط نوری ضعیف و جوی نامساعد.
  3. تصویربرداری پزشکی
    اولتراسوند و سی‌تی‌اسکن با دوز پایین برای نمایش جزئیات آناتومیک بدون افزایش پرتودرمانی.
  4. رادار و سنجش از دور
    کاهش نویز اسپکل در تصاویر ماهواره‌ای و SAR برای دسته‌بندی دقیق پوشش زمین.
  5. الکترونیک مصرفی
    پیاده‌سازی بلادرنگ در گوشی‌های هوشمند برای ثبت عکس‌های واضح در نور کم.

۱۰. روندهای آینده و نتیجه‌گیری

  • دنوایزینگ بلادرنگ سخت‌افزاری: پیاده‌سازی FPGA/ASIC برای NLM و شبکه‌های CNN در سیستم‌های تعبیه‌شده.
  • روش‌های تطبیقی و زمینه‌محور: تنظیم خودکار پارامترها بر اساس معنای صحنه (مثلاً حفظ متن و الگوهای ظریف).
  • چارچوب‌های تلفیقی بازسازی: ادغام دنوایزینگ با دموستایسینگ، ابررزولوشن و فشرده‌سازی در شبکه‌های یکپارچه.
  • تخمین عدم قطعیت: دنوایزرهایی که نقشه‌های اطمینان تولید می‌کنند و تصمیم‌گیری را در کاربردهای حساس ایمنی هدایت می‌کنند.

در مجموع، کاهش نویز تصویر پلی بین پردازش سیگنال کلاسیک و یادگیری عمیق مدرن است. با انتخاب روش مناسب—فیلترهای فضایی برای اجراهای ساده، روش‌های تبدیل برای پیچیدگی متوسط، یا شبکه‌های عمیق برای بالاترین کیفیت—می‌توان سیستم‌های بینایی ماشینی را به وضوح و اطمینان بالاتری رساند.

برای شروع، روی داده‌های خود آزمایش کنید و اثربخشی روش‌های مختلف را با معیارهای PSNR و SSIM بسنجید!

پرسش‌های متداول

۱. کاهش نویز تصویر در بینایی ماشینی چیست؟

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

۲. مهم‌ترین انواع نویز تصویر کدام‌اند؟

نویز گاوسی (اضافی)، نمک و فلفل (Impulse)، پواسون (Shot) و اسپکل (Multiplicative) رایج‌ترین انواع نویز هستند که هر کدام ویژگی‌ها و منابع متفاوتی داشته و روش‌های خاصی برای کاهش‌شان به کار می‌رود.

۳. کدام روش‌های ساده فضایی برای کاهش نویز مؤثرند؟

فیلترهای میانگین (Box)، گاوسی (Gaussian)، میانه (Median) و دو-ساحتی (Bilateral) از متداول‌ترین روش‌های فضایی هستند که می‌توانند بسته به نوع نویز و نیاز به حفظ لبه‌ها انتخاب شوند.

۴. تفاوت بین فیلترینگ در حوزه فرکانس و حوزه فضایی چیست؟

فیلترینگ فضایی مستقیماً روی پیکسل‌ها عمل می‌کند، در حالی که فیلترینگ فرکانس با تبدیل فوریه نقشه فرکانسی تصویر را دستکاری کرده و اجزای فرکانس بالا را تضعیف می‌کند تا نویز حذف شود.

۵. چگونه نویز را در حوزه ویولت کاهش دهیم؟

با تبدیل ویولت، تصویر را به زیر‌باندهای چندرزولوشن تجزیه کرده، ضرایب با بسامد بالا (نویز) را با آستانه‌گذاری سخت یا نرم اصلاح و سپس با تبدیل معکوس ویولت تصویر تمیز را بازسازی می‌کنیم.

۶. مزایای مدل‌های یادگیری عمیق در دنوایزینگ چیست؟

شبکه‌های عصبی عمیق مانند DnCNN و U-Net می‌توانند الگوهای پیچیده نویز را بهتر بیاموزند، نویزهای غیرخطی و ترکیبی را کاهش دهند و جزئیات تصویر را با دقت بالاتری حفظ کنند.

۷. چگونه کیفیت دنوایزینگ را ارزیابی کنیم؟

از معیارهایی مانند PSNR (نسبت پیک سیگنال به نویز)، SSIM (شاخص شباهت ساختاری) و گاهی VIF یا FSIM استفاده می‌شود تا هم خطای عددی و هم وجه ادراکی کیفیت تصویر سنجیده شود.

۸. آیا می‌توان دنوایزینگ را در زمان واقعی اجرا کرد؟

بله، با الگوریتم‌های سریع مثل فیلتر دو-ساحتی بهینه‌شده، میانگین غیرمحلی سریع یا مدل‌های سبک کوانتیزه‌شده روی سخت‌افزارهای FPGA/ASIC یا GPU می‌توان به پردازش بی‌درنگ دست یافت.

۹. بهترین روش برای انتخاب الگوریتم مناسب چیست؟

ابتدا نوع و شدت نویز را تحلیل کنید، سپس معیارهایی مانند سرعت اجرا، حفظ لبه‌ها و کیفیت نهایی (PSNR/SSIM) را با توجه به نیازهای پروژه بسنجید و الگوریتم مناسب را انتخاب کنید.

۱۰. چشم‌انداز آینده روش‌های کاهش نویز چیست؟

پیشرفت در یادگیری تفاضلی (few-shot)، شبکه‌های Transformer، ادغام چندوظیفه‌ای با افزایش وضوح و فشرده‌سازی، و ارائه تخمین عدم قطعیت برای تصمیم‌گیری ایمن‌تر، از روندهای مهم آینده هستند.

مطالب مرتبط

رتبه‌بندی کیفیت محصول

رتبه‌بندی کیفیت محصول (Quality Grading) با پردازش تصویر

فناوری دوربین صنعتی باسلر

فناوری دوربین صنعتی: راهنمای جامع برای شناخت، انتخاب و استفاده

رزولوشن دوربین باسلر -مرکز خرید دوربین صنعتی

نوین ایلیا: جامع‌ترین مرکز فروش دوربین صنعتی در ایران

پردازش تصویر با پایتون

راهنمای جامع پردازش تصویر با پایتون

تشخیص ترک فلز

تشخیص ترک فلز با بینایی ماشین (با استفاده از دوربین‌های Basler)

شبکه عصبی پردازش تصویر: راهنمای جامع از مبانی تا کاربردهای پیشرفته (۲۰۲۵)

شبکه عصبی پردازش تصویر: راهنمای جامع از مبانی تا کاربردهای پیشرفته (۲۰۲۵)