روش آستانه گذاری otsu | استوایی | ostovaee

روش آستانه گذاری otsu

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

چه مواقعی می توان از روش آستانه گذاری otsu استفاده کرد؟

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

آستانه گذاری به روش otsu در پردازش تصویر

یکی از کتابخانه های معروف برای پردازش تصویر OpenCv هست که در زبان های پایتون (python) و سی پلاس پلاس (C++) می توان از آنها استفاده کرد. همچنین برای C#.net می توان از Emgu و یا Accord استفاده کرد. در ادامه با نحوه برنامه نویسی آستانهگیری به روش اتسو (otsu) آشنا خواهید شد.

آستانه گذاری خودکار به روش اتسو در سی شارپ (C#.net)

آستانه گذاری با استفاده از کتابخانه Accord

اگر از کتابخانه accord در C# استفاده می کنید می توانید از دستورات زیر استفاده کنید. در ابتدا باید یک فیلتر از نوع OtsuThreshold ایجاد کنیم و سپس با استفاده از تابع ApplyInPlace فیلتر اتسو (otsu) را به عکس مورد نظر اعمال کنیم. از آنجایی که مقدار آستانه گیری (Threshold) به صورت خودکار تعیین شده است با استفاده از دستور filter.ThresholdValue می‌توان مقدار آستانه را بدست آورد.

OtsuThreshold filter = new OtsuThreshold( );
filter.ApplyInPlace( image );
byte t = filter.ThresholdValue;

روش آستانه گیری با استفاده از کتابخانه Emgu

اگر از کتابخانه emgu در c# استفاده می‌کنید. به راحتی می توانید از دستور CvInvoke.Threshold استفاده کنید. تابع Threshold چندین مقادر ورودی می‌گیرد. در ادامه تمامی این پارامترها را معرفی می‌کنیم.

CvInvoke.Threshold(grayImg, binImg, 100, 255, ThresholdType.Otsu);
  •  مقدار اول: عکس ورودی که قرار هست عملیات آستانه گیری روی آن اجرا شود.
  • مقدار دوم: عکس خروجی که نتیجه نهایی در آن ذخیره می‌شود.
  • مقدار سوم: این مقدار را هر عددی می توانید قرار دهید و در خروجی اثری ندارد.
  • مقدار چهارم: حداکثر می تواند 255 باشد که نشان دهنده ماکزیمم رنگ در تصویر نهایی هست
  • مقدار پنجم: نوع آستانه گیری را تعیین می‌کند.

روش آستانه گذاری otsu در پایتون با OpenCv

در پایتون با استفاده از دستور cv2.threshold می‌توان فیلتر آستانه گیری otsu را به تصویر مورد نظر اعمال کرد. این دستور چهار ورودی می‌گیرد و دو مقدار برمی‌گرداند که در ادامه به توضیح این موارد می‌پردازیم.

ret,th = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

ورودی های تابع cv2.threshold

  • ورودی اول: تصویر ورودی که عملیات آستانه گیری روی آن اجرا خواهد شد.
  • مقدار دوم: این مقدار را هر عددی می توانید قرار دهید و در خروجی اثری ندارد.
  • مقدار سوم: حداکثر می تواند 255 باشد که نشان دهنده ماکزیمم رنگ در تصویر نهایی هست
  • مقدار چهارم: نوع آستانه گیری را تعیین می‌کند.

خروجی‌های تابع cv2.threshold

  • خروجی اول: مقدار آستانه خودکار
  • خروجی دوم: تصویر خروجی پس از اعمال فیلتر otsu
برچسب‌ها

پاسخی بگذارید

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