لبه یابی در متلب

آشکارسازی لبه،لبه یابی در متلب

 آشکارسازی لبه،لبه یابی در متلب

عملگرهای آشکارسازی لبه

  • مرتبه نخست: چلیپای رابرنز، پرویت، سوبل، کنی، اسپیسک
  • مرتبه دوم: لاپلاسی، مار- هیلدرث

اکنون عملگر کنی و پس از آن مار – هیلدرث بیشترین کاربرد را دارد. عملگرهای زیادی تاکنون منتشر شده اند اما هیچ یک برتری قابل ملاحضه ای بر عملگر کنی نداشته اند. کار بر روش های چند مقیاسی هنوز بیشتر در آزمایشگاه هاست.

عملیات لبه برداری بر روی تصاویر

آشکارسازی لبه (edge detection) معمولا برای تشخیص لبه های یک شی از بین چند شی دیگر مورد استفاده قرار می گیرد، برای این کار از تابعی به نام edge استفاده می شود.

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

 

 

 

در عملیات لبه برداری ورودی یک تصویر به فرمت intensity می باشد و در خروجی تصویر binary داده می شود، که در تصویر حاصل مرزهای بیرونی تصویر به صورت ۱ و مرزهای داخل به صورت ۰ نشان داده می شود.

I=rgb2gray(i1);

Bw=edge(I,’sobel’)

Edge لبه ها را در تصاویر intensity پیدا می کند، این تابع یک تصویر باینری یا intensity را به عنوان ورودی می گیرد و یک تصویر باینری bw به همان اندازه ی تصویر اولی بر می گرداند، که جاهایی که تابع لبه ها را در تصویر پیدا می کند، در تصویر خروجی ۱ می کند و جاهایی دیگر را ۰ قرار می دهد.

برخی از الگوریتم های لبه برداری

-۱الگوریتم soble

-۲الگوریتم canny

-۳الگوریتم Roberts

-۴الگوریتم prewitt

-۵الگوریتمzero-cross

الگوریتم soble : این متد لبه ها را با استفاده از تخمین زدن مشتق پیدا می کند، که لبه ها را در آن نقاطی بر می گرداند که گرادیان تصویر I ، max است.

Bw= edge(I,’sobel’,thresh)

مقدار thresh یک میزان آستانه را برای این متد مشخص می کند.

این تابع (edge) را از همه لبه هایی که قوی تر (بیشتر) از thresh نیستند چشم پوشی می کند و اگر ما مقدار این thresh را مشخص نکنیم یا اگر thresh خالی باشد {[]} ، تابع edge خود به طور اتوماتیک مقداری را انتخاب می کند.

Bw=edge(I,’sobel’,thresh,direction)

در این directin , syntax جهت را مشخص می کند، یعنی رشته ای است که مشخص می کند که این تابع لبه های افقی یا عمودی و یا هردو را جستجو کند که به طور پیش فرض هردو را جستجو می کند.

‘horizontal’  افقی:

‘vertical’عمودی:

Bw=edge(I,’sobel’,…,options)

در این دستور تابع یک رشته ی اختیاری به عنوان ورودی می گیرد که رشته nothinning سرعت عملیات الگوریتم را بالا می برد؛ به این علت که در مرحله ی نازک شدن لبه های اضافی می گذرد (می پرد) و اگر رشته ی nothinning را انتخاب کنیم، الگوریتم لبه های نازک شده را نیز درخواست می کند.

[Bw,thresh]=edge(I,’sobel’,…)

این دستور، مقدار threshold (آستانه) را برمی گرداند.

[Bw,thresh,gv,gh]=edge(….)

%Edge detection by mathworks.ir

در این دستور، لبه های افقی و عمودی (gv,gh) را با توجه به عملگرهای گرادیان بر می گرداند.

دو متد Roberts و prewitt نیز هم به همین گونه هستند.

الگوریتم canny: این متد ل لبه ها را با جستجوی max های محلی (موضعی) گرادیان I ، که گرادیان از روی مشتق فیلتر گاوس (Gaussian) محاسبه می شود.

این متد از دو آستانه (thresholds) استفاده می کند تا لبه های ضعیف و قوی را پیدا کند که فقط شامل لبه هایی ضعیف در خروجی می باشد که آنها متصل به لبه های قوی باشند.

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

Bw= edge(I,’canny’,thresh)

این متد یک بدار آستانه (thresh) را مشخص می کند که المنت اول آن آستانه پایین و المنت دوم آن آستانه بالا را مشخص می کند.

اگر یک عدد را به عنوان (thresh) انتخاب کنیم این عدد به عنوان آستانه بالا (high threshold) و عدد (۰٫۴×thresh) به عنوان آستانه پایین در نظر گرفته می شود و اگر هیچ عددی را برای thresh انتخاب نکنیم، تابع edge خود به طور اتوماتیک هردو المنت را انتخاب می کند.

[Bw,thresh]=edge(I,’canny’,…)

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

منبع:http://mathworks.ir

2 نظر ثبت شده است

قالب وردپرس

می 14, 2019

مرسی خیلی خوب بود

سعید مهدوی

جولای 1, 2020

سلام وقت به خیر
چطور میتونم رنگ لبه ها رو تغییر بدم

نظر خود را اینجا بنویسید!

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *