فیلترگذاری تصویر در بینایی ماشین: راهنمایی برای مبتدیان

نویسنده:
شرکت بینا پردازان هوشمند سپاهان
تاریخ انتشار:
25 اردیبهشت 1404
دیدگاه ها:
فیلترگذاری تصویر در بینایی ماشین

مقدمه در دنیای به‌سرعت در حال پیشرفت تولید و اتوماسیون، بینایی ماشین به عنوان یکی از تکنولوژی‌های بنیادین مطرح شده است که به ماشین‌ها امکان “دیدن” و تفسیر داده‌های بصری را می‌دهد. در قلب بینایی…

مقدمه

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

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

فیلترگذاری تصویر چیست؟

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

عملیات فیلترگذاری غالباً با استفاده از یک هسته (Kernel) یا ماسک انجام می‌شود؛ ماتریسی کوچک که روی تصویر “می‌خزد” و مقادیر پیکسل‌های خروجی را بر اساس محاسبات محلی تعیین می‌کند.

اهمیت فیلترگذاری در بینایی ماشین

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

  • کاهش نویز: تصاویر خام اغلب شامل نویز الکتریکی یا محیطی هستند. فیلترها کمک می‌کنند این نویز سرکوب شود تا از تشخیص‌های نادرست جلوگیری شود.
  • تشخیص لبه: استخراج لبه‌ها امکان شناسایی خراش‌ها، شکستگی‌ها یا عدم انطباق را فراهم می‌کند.
  • تقویت ویژگی: برخی فیلترها با برجسته‌سازی بافت‌ها یا اشکال خاص، در تشخیص اشیا مؤثرند.
  • تاری و هموارسازی: آماده‌سازی تصویر برای مرحله‌های بعدی مانند بخش‌بندی یا آستانه‌گذاری.

دسته‌بندی فیلترها

فیلترهای تصویر را می‌توان به دو دسته کلی تقسیم کرد:

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

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

الف. فیلتر میانگین (Averaging)

  • هدف: تارکردن تصویر و کاهش نویز.
  • مثال هسته: 19[111111111]\frac{1}{9} \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix}
  • تأثیر: هموارسازی تغییرات، مفید قبل از تشخیص لبه.

ب. فیلتر گاوسی (Gaussian)

  • هدف: شبیه به فیلتر میانگین اما با وزن‌دهی به پیکسل‌های مرکزی.
  • تأثیر: حفظ بهتر لبه‌ها در حین کاهش نویز.

ج. فیلتر لاپلاسیان (Laplacian)

  • هدف: تشخیص لبه با برجسته‌سازی نواحی تغییرات شدید شدت.
  • تأثیر: اغلب پس از تاری گاوسی برای تقویت لبه‌ها کاربرد دارد.

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

این فیلترها از عملیات غیرخطی استفاده می‌کنند و معمولاً در سرکوب نویز بدون تار کردن لبه‌ها مؤثرترند.

الف. فیلتر میانه (Median)

  • هدف: جایگزینی هر پیکسل با میانه‌ی مقادیر همسایگانش.
  • تأثیر: حذف نویز نمک-فلفل به‌خوبی.

ب. فیلتر دوجانبه (Bilateral)

  • هدف: هموارسازی همراه با حفظ لبه‌ها.
  • تأثیر: ایدئال برای حفظ بافت و جزئیات در سیستم‌های بازرسی.

کاربرد در کنترل کیفیت

در محیط‌های صنعتی، بینایی ماشین برای موارد زیر استفاده می‌شود:

  • کشف عیوب سطحی (خراش‌ها، ترک‌ها)
  • بررسی برچسب و تشخیص بارکد
  • اندازه‌گیری ابعاد و بررسی تراز

در این فرآیندها، فیلترگذاری باعث افزایش دیدپذیری عیوب یا حذف نویزهای غیرمرتبط می‌شود تا بازرسی دقیق‌تر انجام گیرد.

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

شروع با OpenCV

OpenCV کتابخانه‌ای متن‌باز و قدرتمند برای پردازش تصویر است. در ادامه نحوه اعمال فیلترها با استفاده از OpenCV در پایتون را می‌آموزیم.

نصب

pip install opencv-python

مثال‌های عملی با OpenCV

۱. بارگذاری و نمایش تصویر

import cv2
import matplotlib.pyplot as plt

# بارگذاری تصویر به صورت خاکستری
image = cv2.imread('sample_part.jpg', cv2.IMREAD_GRAYSCALE)

# نمایش با matplotlib
plt.imshow(image, cmap='gray')
plt.title('تصویر اصلی')
plt.axis('off')
plt.show()

۲. فیلتر میانگین (Mean Filter)

# فیلتر ۵×۵ میانگین
blurred = cv2.blur(image, (5, 5))

plt.imshow(blurred, cmap='gray')
plt.title('تصویر با فیلتر میانگین')
plt.axis('off')
plt.show()

۳. فیلتر گاوسی (Gaussian Filter)

# تاری گاوسی با هسته ۵×۵
gaussian = cv2.GaussianBlur(image, (5, 5), 0)

plt.imshow(gaussian, cmap='gray')
plt.title('تصویر با فیلتر گاوسی')
plt.axis('off')
plt.show()

۴. فیلتر میانه (Median Filter)

# فیلتر میانه با اندازه ۵
median = cv2.medianBlur(image, 5)

plt.imshow(median, cmap='gray')
plt.title('تصویر با فیلتر میانه')
plt.axis('off')
plt.show()

۵. فیلتر دوجانبه (Bilateral Filter)

# پارامترها: قطر هسته، sigmaColor، sigmaSpace
bilateral = cv2.bilateralFilter(image, 9, 75, 75)

plt.imshow(bilateral, cmap='gray')
plt.title('تصویر با فیلتر دوجانبه')
plt.axis('off')
plt.show()

۶. تشخیص لبه با لاپلاسیان (Laplacian)

# اعمال لاپلاسیان
laplacian = cv2.Laplacian(image, cv2.CV_64F)

plt.imshow(laplacian, cmap='gray')
plt.title('تشخیص لبه با لاپلاسیان')
plt.axis('off')
plt.show()

کاربرد هر فیلتر در کنترل کیفیت

مزایا کاربرد در کنترل کیفیت نوع فیلتر
ساده و سریع کاهش نویز عمومی فیلتر میانگین
کاهش نویز با فرکانس بالا پیش‌پردازش قبل از تشخیص لبه فیلتر گاوسی
حفظ لبه‌ها حذف نویز نمک-فلفل روی سطوح محصولات فیلتر میانه
ایده‌آل برای بازرسی چشمی برجسته‌سازی عیوب بدون از دست دادن بافت فیلتر دوجانبه
حساسیت بالا به تغییرات ناگهانی تشخیص لبه‌های شدید برای شناسایی خراش یا ترک لاپلاسیان

نکات کلیدی و بهترین روش‌ها

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

مطالعه موردی واقعی: تشخیص خراش بر روی قطعات فلزی

مسئله: کارخانه‌ای نیاز دارد خراش‌های سطحی روی صفحه‌های فلزی را به‌صورت خودکار تشخیص دهد.

راه‌حل:

  1. ثبت تصویر: تصاویر با وضوح بالا و خاکستری به‌صورت بلادرنگ ضبط می‌شوند.
  2. فیلتر میانه: نویز حذف شده ولی خطوط خراش حفظ می‌شود.
  3. لاپلاسیان: خراش‌ها به عنوان تغییرات ناگهانی شدت برجسته می‌شوند.
  4. آستانه‌گذاری و بخش‌بندی: تبدیل به تصویر باینری و یافتن کانتور.
  5. تصمیم‌گیری: اگر طول کانتور از آستانه تعیین‌شده بیشتر باشد، قطعه حذف می‌شود.

قطعه کد نمونه:

# فیلتر میانه برای کاهش نویز
median = cv2.medianBlur(image, 5)

# تشخیص لبه با لاپلاسیان
edges = cv2.Laplacian(median, cv2.CV_64F)
edges = cv2.convertScaleAbs(edges)

# آستانه‌گذاری باینری
_, thresh = cv2.threshold(edges, 30, 255, cv2.THRESH_BINARY)

# یافتن کانتور (خراش‌ها)
contours, _ = cv2.findContours(
    thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE
)

# بررسی هر کانتور
for cnt in contours:
    if cv2.arcLength(cnt, True) > 100:  # آستانه نمونه
        print("عیب شناسایی شد!")

جمع‌بندی

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

با درک انواع فیلترها، مکانیسم عملکرد آنها و نحوه پیاده‌سازی در OpenCV، حتی مبتدیان می‌توانند به‌سرعت سیستم‌های عملی و قابل اعتمادی برای کنترل کیفیت بسازند.

منابع بیشتر

  • مستندات OpenCV: https://docs.opencv.org
  • کتاب “Digital Image Processing” نوشته Gonzalez & Woods
  • پروژه‌های پردازش تصویر در Kaggle
  • دوره‌های Udemy و Coursera در حوزه بینایی ماشین

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

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

1 فیلترگذاری تصویر چیست و چه کاربردی در بینایی ماشین دارد؟

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

2 تفاوت فیلترهای خطی و غیرخطی در چیست؟

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

3 چرا از OpenCV برای فیلترگذاری تصویر استفاده می‌کنیم؟

OpenCV یک کتابخانه متن‌باز با توابع بهینه و مستندات گسترده است که انواع فیلترها را با کارایی بالا در پایتون و C++ پیاده‌سازی کرده و برای کاربردهای صنعتی مناسب است.

4 چگونه یک فیلتر میانگین ساده را با OpenCV اعمال کنیم؟

با دستور cv2.blur(image, (k, k)) می‌توانیم یک فیلتر k×k میانگین به تصویر اعمال کنیم که باعث تاری و کاهش نویز می‌شود.

5 چه زمانی بهتر است از فیلتر میانه استفاده کنیم؟

وقتی نویز نمک-فلفل (salt-and-pepper) زیاد باشد یا حفظ لبه‌ها مهم باشد، فیلتر میانه با دستور cv2.medianBlur بهترین گزینه است.

6 فیلتر دوجانبه (Bilateral) چه مزیتی دارد؟

فیلتر دوجانبه با حفظ لبه‌ها و همزمان کاهش نویز، برای نگهداری جزئیات سطح و بافت در کاربردهای کنترل کیفیت بسیار مناسب است.

7 چگونه از فیلتر لاپلاسیان برای تشخیص لبه استفاده کنیم؟

ابتدا تصویر را با Gaussian Blur هموار کنید، سپس با cv2.Laplacian لبه‌ها را استخراج کرده و با آستانه‌گذاری، خطوط تیز و خراش‌ها را مشخص کنید.

8 انتخاب اندازه هسته فیلتر چه تأثیری دارد؟

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

9 توصیه‌های عملی برای ترکیب فیلترها چیست؟

معمولاً ابتدا از Gaussian Blur برای کاهش نویز تصادفی استفاده شده و سپس برای تشخیص لبه از Laplacian یا Canny بهره می‌برند. فیلتر میانه یا دوجانبه هم قبل از پردازش نهایی مفید است.

10 چگونه فیلترگذاری تصویر می‌تواند کیفیت کنترل را بهبود دهد؟

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

برای خرید دوربین ها و انواع محصولات هایک ربات با ما تماس بگیرید

مشتاقانه منتظر دریافت نظرات شما دوستان عزیز هستیم





مطالب مرتبط

خواندن تاریخ انقضا با دوربین

خواندن تاریخ انقضا با دوربین – راهنمای جامع برای صنایع و خطوط تولید

مشاوره خرید دوربین صنعتی

مشاوره خرید دوربین صنعتی؛ انتخاب دقیق برای موفقیت پروژه‌های بینایی ماشین

دوربین کشاورزی هوشمند

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

بینایی ماشین در صنایع نساجی

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

واردکننده دوربین صنعتی

واردکننده دوربین صنعتی | نمایندگی رسمی Hikrobot در ایران

دوربین‌ صنعتی با وضوح بالا - مشاوره خرید دوربین صنعتی

دوربین صنعتی با وضوح بالا: کلید دقت در بینایی ماشین