تابع از تبدیل هاف استاندارد برای شناسایی خطوط در یک تصویر دودویی استفاده می‌کند. طبق تبدیل هاف، هر پیکسل در فضای تصویر معادل یک خط در فضای هاف است و بالعکس. این تابع از نمایش قطبی خطوط (polar representation) به‌صورت معادله x⋅cos⁡(θ)+y⋅sin⁡(θ)=px \cdot \cos(\theta) + y \cdot \sin(\theta) = p استفاده می‌کند تا خطوط را در یک تصویر دودویی شناسایی کند. در این نمایش، مختصات قطبی (پُلار) به‌طور خاص با دو پارامتر pp و θ\theta تعیین می‌شود که در آن pp فاصله از مبدأ (0,0) به خط و θ\theta زاویه‌ای است که خط نسبت به محور افقی می‌سازد.

Image of

در این تابع، مبدأ سیستم مختصات قطبی در گوشه‌ی بالا چپ تصویر قرار دارد که در آن مختصات xx و yy در فضای تصویر به نقاط در فضای قطبی تبدیل می‌شوند. این تبدیل به شناسایی خطوطی که در تصویر حضور دارند، کمک می‌کند. برای شناسایی دقیق‌تر، روش‌های مختلفی از جمله تعیین گام‌های زاویه‌ای (θstep\theta_{\text{step}}) و گام‌های فاصله‌ای (pstepp_{\text{step}}) به‌کار می‌روند.

به‌طور کلی، در تبدیل هاف، از دو فضای مختلف برای شناسایی خطوط استفاده می‌شود:

  1. فضای تصویر (Image Space): که در آن مختصات xx و yy نمایش داده می‌شود و شامل پیکسل‌های تصویر است.
  2. فضای هاف (Hough Space): که در آن خطوط به‌صورت نقاط نمایان می‌شوند و به جای نقاط مختصاتی که در فضای تصویر قرار دارند، در این فضای جدید نمایان می‌شوند. هر نقطه در فضای هاف معادل یک خط در فضای تصویر است.

مراحل کلی تبدیل هاف:

  1. ایجاد فضای هاف: در این مرحله، برای هر پیکسل سفید در تصویر دودویی، تمام خطوط ممکن که از آن نقطه عبور می‌کنند، محاسبه می‌شود. این خطوط در فضای هاف نمایش داده می‌شوند.
  2. محاسبه پارامترهای pp و θ\theta: به‌طور معمول برای هر پیکسل سفید در تصویر، پارامترهای pp و θ\theta محاسبه شده و در فضای هاف وارد می‌شوند. این محاسبات به‌وسیله تابعی انجام می‌شود که مختصات xx و yy هر پیکسل را به پارامترهای قطبی pp و θ\theta تبدیل می‌کند.
  3. حساب کردن آکومولاتور (Accumulator): در این مرحله، برای هر نقطه از فضای هاف، تعداد دفعاتی که آن نقطه توسط یک خط از تصویر عبور می‌کند، محاسبه می‌شود. این اطلاعات در یک ماتریس آکومولاتور ذخیره می‌شود که برای شناسایی نقاطی که بیشترین تعداد خط را دارند، استفاده می‌شود.
  4. شناسایی خطوط: پس از محاسبه آکومولاتور، نقاطی که بیشترین تعداد خط را دارند، به‌عنوان خطوط موجود در تصویر شناسایی می‌شوند. این نقاط معادل خطوط حقیقی در فضای تصویر هستند.

پارامترهای تابع:

  • Imbinary: تصویر دودویی ورودی که خطوط باید در آن شناسایی شوند.
  • pstep: گام فاصله‌ای که برای جستجو در فضای هاف برای پارامتر pp استفاده می‌شود.
  • tetastep: گام زاویه‌ای که برای جستجو در فضای هاف برای پارامتر θ\theta استفاده می‌شود.
  • thresh: آستانه‌ای که برای شناسایی خطوط در آکومولاتور استفاده می‌شود. این آستانه تعیین می‌کند که تنها نقاط با تعداد کافی از برخوردها به‌عنوان خطوط شناسایی شوند.

خروجی‌ها:

  • pdetect: پارامتر pp خطوط شناسایی‌شده در فضای هاف.
  • tetadetect: پارامتر θ\theta خطوط شناسایی‌شده در فضای هاف.
  • Accumulator: ماتریس آکومولاتور که تعداد برخوردهای هر نقطه را در فضای هاف نشان می‌دهد.

نکات مهم:

  • تبدیل هاف به‌طور ویژه برای شناسایی خطوط در تصاویر مناسب است، اما می‌توان از آن برای شناسایی اشکال هندسی دیگری مثل دایره‌ها نیز استفاده کرد.
  • یکی از چالش‌های استفاده از تبدیل هاف، انتخاب مناسب گام‌های pstepp_{\text{step}} و θstep\theta_{\text{step}} است. گام‌های خیلی بزرگ ممکن است باعث از دست رفتن جزئیات شوند، در حالی که گام‌های خیلی کوچک می‌توانند منجر به پیچیدگی محاسبات و زمان پردازش زیاد شوند.

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

دسته بندی: برچسب ها: