الگوریتم های بینایی ماشین

الگوریتم‌های بینایی ماشین | بررسی تخصصی و جامع

الگوریتم‌های بینایی ماشین: پلی میان تصویر و هوشمندی

بینایی ماشین (Machine Vision)، به عنوان یکی از پیشرفته‌ترین شاخه‌های هوش مصنوعی و پردازش تصویر، به سیستم‌های رایانه‌ای قابلیت “دیدن”، “درک” و “تفسیر” محتوای تصاویر و ویدئوها را می‌بخشد. در بطن این فناوری، الگوریتم‌های بینایی ماشین قرار دارند؛ مجموعه‌ای از روش‌های ریاضی و محاسباتی که با هدف استخراج اطلاعات معنادار از داده‌های بصری طراحی شده‌اند. این الگوریتم‌ها، پلی ضروری میان داده‌های خام پیکسلی و تصمیم‌گیری‌های عملیاتی ایجاد می‌کنند، به این ترتیب که تصاویر را به نمایش‌های عددی تبدیل کرده، الگوها و ویژگی‌های مرتبط را شناسایی نموده و در نهایت به استنتاج‌های قابل‌استفاده می‌رسند.

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

به طور کلی، الگوریتم‌های بینایی ماشین را می‌توان بر اساس وظایف اصلی‌شان دسته‌بندی کرد: پردازش اولیه تصویر شامل بهبود تصویر، آستانه‌گذاری و لبه‌یابی؛ استخراج ویژگی که در آن الگوریتم‌های بینایی ماشین مانند شبکه‌های عصبی کانولوشن (CNNs) به طور خودکار ویژگی‌های بصری را یاد می‌گیرند؛ تشخیص و طبقه‌بندی اشیاء که شامل طبقه‌بندی کلی تصویر، تشخیص مکان اشیاء با کادر (Bounding Box) و بخش‌بندی دقیق پیکسل به پیکسل تصویر می‌شود؛ تطبیق الگو برای یافتن یک تصویر کوچک در یک تصویر بزرگ؛ و در نهایت تحلیل سه‌بعدی که شامل بازسازی و تخمین عمق است.

با پیشرفت‌های مداوم در قدرت محاسباتی، الگوریتم‌های یادگیری عمیق و حجم عظیم داده‌های در دسترس، آینده الگوریتم‌های بینایی ماشین بسیار امیدوارکننده به نظر می‌رسد. ترکیب این فناوری با سایر حوزه‌های هوش مصنوعی مانند پردازش زبان طبیعی، سیستم‌های هوشمندتر و پیچیده‌تری را به ارمغان خواهد آورد که قادر به درک عمیق‌تر و تعامل مؤثرتر با دنیای پیرامون هستند. تحقیقات همچنان بر روی توسعه الگوریتم‌های کارآمدتر، قابل‌تفسیرتر (Explainable AI) و با قابلیت یادگیری مستمر متمرکز است تا این حوزه را به سطوح بالاتری از هوشمندی سوق دهد.

اجزای اصلی یک سیستم بینایی ماشین

  • اکتساب تصویر (دوربین‌ها، سنسورها)
  • پیش‌پردازش (بهبود کیفیت تصویر)
  • استخراج ویژگی (شناسایی لبه‌ها، گوشه‌ها، بافت‌ها)
  • تفسیر و تحلیل (تشخیص، دسته‌بندی، اندازه‌گیری)
  • تصمیم‌گیری و خروجی
  • دسته‌بندی الگوریتم‌های کلیدی

انواع الگوریتم‌های بینایی ماشین

۱. الگوریتم‌های پردازش تصویر پایه

– فیلترگذاری (Gaussian، Median، Sobel)

– تشخیص لبه (Canny، Sobel، Laplacian)

– تبدیل‌های فضایی (تبدیل فوریه، تبدیل موجک)

۲. الگوریتم‌های تقسیم‌بندی (Segmentation)

– تقسیم‌بندی آستانه‌ای (Thresholding)

– تقسیم‌بندی بر اساس ناحیه (Region-based)

– تقسیم‌بندی آبشاری (Watershed)

۳. الگوریتم‌های تشخیص و شناسایی

– تشخیص شیء (Object Detection)

– تشخیص چهره (Face Recognition)

– تشخیص الگو (Pattern Recognition)

۴. الگوریتم‌های یادگیری ماشین و یادگیری عمیق

– شبکه‌های عصبی کانولوشنی (CNNs)

– ماشین بردار پشتیبان (SVM)

– خوشه‌بندی (Clustering)

۵. الگوریتم‌های بینایی سه‌بعدی

– بازسازی سه‌بعدی

– سنجش‌ازدور استریو

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

  • کنترل کیفیت خودکار در خطوط تولید
  • سیستم‌های ناوبری خودران
  • پزشکی و تشخیص بیماری‌ها
  • نظارت امنیتی و تشخیص رفتار
  • واقعیت افزوده و مجازی
  • رباتیک پیشرفته

چالش‌های پیش رو عبارتند از :

  • نیاز به داده‌های آموزشی بزرگ و متنوع
  • حساسیت به شرایط نوری و محیطی
  • محاسبات سنگین و نیاز به سخت‌افزار تخصصی
  • تفسیرپذیری و شفافیت تصمیم‌گیری

تطبیق الگو (Template Matching)

تطبیق الگو یک تکنیک بنیادی در بینایی ماشین برای یافتن نواحی از یک تصویر است که با یک تصویر کوچکتر به نام الگو (Template) مطابقت دارند. این الگو نمایانگر شیء یا ویژگی خاصی است که می‌خواهیم در تصویر اصلی شناسایی کنیم.

الگوریتم های بینایی ماشین

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

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

تعداد سطرها = تعداد سطرهای تصویر منهای تعداد سطرهای الگو

تعداد ستون‌ها = تعداد ستون‌های تصویر منهای تعداد ستون‌های الگو

مقدار هر عنصر از این ماتریس برابر خواهد بود با:

الگوریتم های بینایی ماشین

در این روش، r و c به ترتیب نشان‌دهنده مختصات سطر و ستون هستند و محاسبه جمع روی مختصات الگو (r’ و c’) انجام می‌شود؛ بنابراین این جمع در محدوده‌ای بین ۰ تا تعداد سطرها/ستون‌های الگو محاسبه می‌گردد. هرچه مقدار به دست‌آمده به صفر نزدیک‌تر باشد، احتمال تطابق بخش تحلیل‌شده با الگو بیشتر است.
این رویکرد به شدت تحت تأثیر مقدار مطلق پیکسل‌ها قرار دارد. قابلیت اطمینان جستجو را می‌توان با یک نرمال‌سازی ساده بر اساس میانگین مقادیر پیکسل‌های الگو و تصویر بهبود بخشید.

مقایسه ویژگی‌های الگو با ویژگی‌های تصویر

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

الگوریتم های بینایی ماشین

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

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

تعداد سطرها = تعداد سطرهای تصویر منهای تعداد سطرهای الگو

تعداد ستون‌ها = تعداد ستون‌های تصویر منهای تعداد ستون‌های الگو

الگوریتم های بینایی ماشین

محاسبه‌ی مجموع بر روی زیرمجموعه ی نقاط انتخابی الگو انجام می‌شود. بنابراین، بردار گرادیان نقطه‌ی i از تصویر (GI) با مختصات (u,v) = (r,c) + (xi,yi) که در آن (r,c) جابه‌جایی (آفست) جدید و (xi,yi) موقعیت نسبی نقطه ی مورد تحلیل نسبت به نقطه ی مرجع در الگو است با گرادیان نقطه ی دارای مختصات (xi,yi) در الگو (GT) مقایسه می‌شود.

به لطف نرمال‌سازی، این مقادیر همواره بین ۱- و ۱ قرار دارند. اگر جهت گرادیان (orientation) نامربوط باشد و فقط راستای (direction) آن مدنظر قرار گیرد، فرمول را می‌توان به این شکل تغییر داد:

الگوریتم های بینایی ماشین

در این حالت، مقادیر همچنان بین 0 و 1 باقی می‌مانند.

هر چه مقدار به 1 نزدیک‌تر باشد، احتمال اینکه تصویر دارای الگوی موردنظر باشد، بیشتر است.

روش‌های ارائه شده بالا مقیاس و چرخش را بدون تغییر نگه می‌دارند، اما می‌توان آن‌ها را به گونه ای تغییر داد تا با این هدف سازگار شوند.

تحلیل کانتور

یک تصویر یا کانتور (تصویر باینری) می‌تواند با استفاده از لحظه‌ها تحلیل شود. لحظه‌ی M با مرتبه (p , q) به شکل زیر تعریف می‌شود:

الگوریتم های بینایی ماشین

با اجرای انتگرال دوبل بر روی کل دامنه x و y (کل تصویر یا ROI).

از آنجا که تصاویر دیجیتال یک فضای گسسته را نمایان می‌کنند، می‌توانیم انتگرال دوبل را با جمع دوبل جایگزین کنیم:

الگوریتم های بینایی ماشین

لحظه‌های ساده:

اگر M00 تابع شدت پیکسل I(x, y) را محاسبه کنیم، مجموع مقادیر پیکسل برای تصاویر تک‌رنگ به‌دست می‌آید.

اگر M00 تابع نشانگر وجود پیکسل‌های غیرصفر را محاسبه کنیم (هر پیکسل غیرصفر مقدار 1 دارد و درغیراین صورت 0)، مساحت کانتور به‌دست می‌آید.

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

الگوریتم های بینایی ماشین

لحظه‌های مرکزی (که به مختصات مرکز جرم اشاره دارند) را می‌توان بر اساس لحظه‌های قبلی محاسبه کرد:

الگوریتم های بینایی ماشین

که دارای خاصیت بی‌تغییری نسبت به جابه‌جایی‌ها هستند (مختصات مرکز جرم بر پایهٔ لحظه‌های M است).

این ویژگی می‌تواند به تغییر مقیاس نیز گسترش یابد:

با محاسبهٔ لحظه‌های نرمال شده

الگوریتم های بینایی ماشین

بر اساس تغییر مقیاس و چرخش با استفاده از لحظات Hu

واضح است که لحظات Hu بیشترین کاربرد را دارند.

لحظات Hu راهی موجز برای توصیف تصاویر پیچیده هستند.

کرنل

در مجموعه الگوریتم‌های بینایی ماشین، کرنل (Kernel) به عنوان یک ماسک کوچک و بنیادی تعریف می‌شود که برای اعمال فیلترهای مختلف روی تصویر به کار می‌رود. این ماسک‌ها معمولاً به شکل ماتریس مربعی هستند؛ به همین دلیل در ادبیات تخصصی الگوریتم‌های پردازش تصویر، از آن‌ها با عنوان ماتریس‌های کانولوشنی (Convolution Matrices) نیز یاد می‌شود.

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

مقدار تصویر هدف (ماتریس C) به‌عنوان مجموع تمامی عناصر ماتریس حاصل از ضرب Hadamard بین ماتریس‌های A و B محاسبه می‌شود. (ضرب Hadamard به معنی ضرب عنصر- به – عنصر است.)

مثال:

با استفاده از فیلتر محو 3×3

الگوریتم های بینایی ماشین

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

الگوریتم های بینایی ماشین
الگوریتم های بینایی ماشین

این دو فیلتر به‌طور جداگانه مشتقات (گرادیان‌ها) را در راستای محور افقی (مختصات x) Gx و در راستای محور عمودی (مختصات y) Gy تصویر نشان می‌دهند. اگر ماتریس اضافی دیگری محاسبه شود که مدول گرادیان را نشان دهد:

الگوریتم های بینایی ماشین

واضح است که این فرایند گام ابتدایی برای استخراج لبه‌های تصویر است.

تشخیص لبه‌ها

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

الگوریتم های بینایی ماشین

با استفاده از فیلتر مشتقی (مثلاً Sobel در راستای x)، شکل زیر را به‌دست می‌آوریم (به صورت مقدار مطلق):

الگوریتم های بینایی ماشین

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

به طور کلی، برای محاسبه لبه‌ها به موارد زیر نیاز دارید:

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

بیایید به طور دقیق جزئیات فرایند را از تصویر زیر بررسی کنیم

الگوریتم های بینایی ماشین

اگر فیلتر Sobel را اعمال کنیم، خروجی به دست می‌آید:

الگوریتم های بینایی ماشین

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

الگوریتم های بینایی ماشین

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

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

بخش‌بندی و آستانه‌گذاری

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

الگوریتم های بینایی ماشین

یک روش ساده برای بخش‌بندی وجود دارد که به آن آستانه‌گذاری می‌گویند، در آن تصویر بر اساس شدت پیکسل تقسیم می‌شود.

آنالیز لکه‌ها

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

چگونه یک تشخیص‌دهنده لکه عمل می‌کند؟

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

مختصات لکه‌ها شناسایی شده و بر اساس بازه‌های آستانه گروه‌بندی می‌شوند.

الگوریتم های بینایی ماشین

وقتی لکه‌ها شناسایی شدند، می‌توان آن‌ها را با محاسبه کمیت‌های زیر تحلیل کرد:

  • مساحت
  • محیط
  • محدبیّت
  • دایرگی (شکل دایره‌ای)
  • فشردگی

برازش شکل

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

اصلی‌ترین آنها عبارتند از:

  • برازش خطوط
  • برازش دایره‌ها
  • برازش بیضی‌ها

برازش خطی و دایره‌ای

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

این محاسبه می‌تواند با وزن یکسان برای هر نقطه انجام شود.

الگوریتم های بینایی ماشین

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

الگوریتم های بینایی ماشین

برای محاسبه وزن‌ها توابع زیادی وجود دارد؛ اصلی‌ترین آنها عبارتند از:

  • تابع هابر
الگوریتم های بینایی ماشین

جایی که c مقداری است که کاربر انتخاب می‌کند و d فاصله نقطه از شکل پایه (خط/دایره/بیضی) است.

  • تابع بی وزنی توکی (Tukey)
الگوریتم های بینایی ماشین

معمولاً مقدار c برابر با دوبرابر انحراف معیار توزیع فواصل تعیین می‌شود.

تفاوت بین توابع هابر و توکی این است که در تابع اول، وزن‌ها برای d ≤ c مقدار واحد دارند و تابع هرگز به صفر نمی‌رسد، درحالی‌که در تابع توکی وزن‌ها برای d ≤ c همواره مقادیری متفاوت دارند و در نقاط دیگر صفر است.

گاهی اوقات از الگوریتم RANSAC برای ساخت یک برازش مقاوم استفاده می‌شود.

برازش بیضوی

رایج‌ترین الگوریتم مورداستفاده یک روش جبری است که روش Fitzgibbon نامیده می‌شود.

برازش بیضوی درصورتی‌که نقاط تنها به بخش‌های خاصی از بیضی تعلق داشته باشند، مشکلاتی ایجاد می‌کند.

مثال‌ها:

  • برازش صحیح
الگوریتم های بینایی ماشین
  • برازش مبهم
الگوریتم های بینایی ماشین

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

شبیه‌ساز تعاملی انواع برازش و  الگوریتم‌های Fitzgibbon، RANSAC و توابع وزن‌دهی مقاوم

برازش شکل | بینایی ماشین

📏 برازش خط مقاوم

Huber (سبز) مقاوم در برابر نقاط پرت | OLS (نارنجی) حساس به نویز

⚪ برازش دایره مقاوم

وزن‌دهی توکی — حذف خودکار نقاط پرت و برازش دقیق دایره

🥚 برازش بیضی | Fitzgibbon

سبز: برازش صحیح از نقاط کامل | قرمز: خطای ناشی از قوس محدود
📊 توابع وزن‌دهی مقاوم

تابع هابر

وزن دهی پویا
وزن → ۱ برای خطای کم | کاهش خطی برای خطای زیاد

تابع توکی

وزن دهی دوطرفه
وزن صفر برای نقاط پرت | منحنی هموار
RANSAC · تخمین تصادفی زیرمجموعه · بیشینه پشتیبانی → برازش مقاوم نهایی

فوکوس خودکار

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

الگوریتم های بینایی ماشین

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

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

دو حالت را در نظر می‌گیریم: یک تصویر و همان تصویر که فیلتر محوکننده روی آن اعمال شده است (برای شبیه‌سازی فوکوس ضعیف)

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

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

۱. مجموعه‌ای از تصاویر را جمع‌آوری کنید (مجموعه تصاویر A)

۲. عملگر لاپلاسین را روی هر تصویر اعمال کنید (مجموعه تصاویر B)

۳. هیستوگرام‌های مجموعه تصاویر B را ارزیابی کنید.

۴. هیستوگرامی که بیشترین انحراف معیار را دارد، شناسایی کنید.

۵. تصویری از مجموعه A که متناظر با هیستوگرام شناسایی‌شده است، تصویری با بهترین فوکوس خواهد

محدودیت‌های این روش:

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

 

Leave A Comment

کلیه فیلدهای مشخص شده با ستاره (*) الزامی است

در حال بارگذاری کپچا...

ارتباط با کارشناسان ما
ارسال از طریق واتساپ