شناسایی لبه در روش Canny شامل شش مرحله ست.
مرحلهی اول فيلتر كردن تصوير اوليه و حذف نويز از تصويره . برای این منظور فيلتر گوسين با يهماسك ساده قابل استفاده ست که به طور انحصاري در الگوريتم Canny استفاده میشه.
مرحله دوم یافتن لبههای قوی با استفاده از gradient magnitudeدر هر نقطه ست که برای این منظور معمولاً از ماسک سوبل استفاده میشه.
|G|=|Gx|+|Gy|
مرحله سوم بدست آوردن جهت لبه هاي تصوير، با استفاده از مقدار gradient در راستای x و yکه در مرحله قبل محاسبه شده. فرمول زیر برای محاسبه جهت لبهها استفاده میشه.
theta = invtan (Gy / Gx)
مرحله چهارم اختصاص دادن جهتهای قابل قبول در تصوير به جهتهای بدست آمده ست. برايهر پيكسل در تصوير فقط 4 جهت 0 و 45 و 90 و 135 درجه امکانپذیر میکنیم. بنابراين جهتهایبدست آمده رو به يكي از اين 4 جهت Map میکنیم.
مرحله پنجم suppression nonmaximum است. اين مرحله جهت لبهها را بررسي میکنه و از بین آنها، لبههایی را كه نمیشه به عنوان لبه در نظر گرفت رو حذف میکنه. اين مرحله يك خطباريك رو در تصوير نهايي میده.
مرحله ششم آستانه گیری در تشخیص لبه ست. در Canny از روشی به نام hysteresisاستفاده میشه. برای این منظور دو آستانه بالا و پایین تعریف میکنیم هر پیکسل که دارایgradient بیشتر از حد بالا باشه به عنوان لبه پذیرفته میشه و در صورتی که دارای مقدار کمتر از حد پایین باشه رد میشه و در صورتی که دارای مقداری بین این دو حد باشه در صورتی پذیرفته میشه که یکی از همسایه های آن پذیرفته شده باشه.
الگوریتم canny در مقایسه با الگوریتم های دیگه از دقت بالای برخورداره ولی پیچیدگی محاسباتی داره و یکمی کنده.
جهت دانلود آموزش جامع پردازش تصویر در متلب بر روی تصویر بالا کلیک فرمایید