PDA

View Full Version : بهترین روش برای تشخیص نواحی متصل ؟



بهروز عباسی
جمعه 25 مرداد 1392, 22:15 عصر
درود به همه

من دنبال یه الگوریتم خوب برای تشخیص نواحی متصل در تصاویر باینری هستم ،هدف استفاده توی محیط واقعی نه آزمایشگاهی ! چون توی تصاویری که باهاشون کار میکنم نواحی متصل زیاده هم دقت و هم سرعت برام مهمه با این تفاصیر بهترین گزینه برای من چیه ؟


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

با تشکر

مصطفی ساتکی
شنبه 26 مرداد 1392, 08:09 صبح
نواحی متصل یا همون connected component .به این عملی که شما قصد انجامش رو دارید می گن label گذاری بر روی connected component .
روش های مختلفی وجود داره 2 روش وجود داره که بیشتر از موارد دیگه استفاده میشه.
روش اول flood fill هستش که در 2 حالت باینری و gray scale هستش تابع flood fill ویندوز از نوع باینری بوده و اعصای جادویی فتوشاپ از نوع grayscale . به صورت بازگشتی هستش که روش هایی هم وجود داره که از حالت بازگشتی درش بیارین یعنی خودتون شبیه سازی کنید که در این حالت می تونید از queue یا stack استفاده کنید که من queue رو پیشنهاد می دم چون زمان اجرای اون در تصاویر با پیچیدگی بالا کمتره. در این روش صفحه را پیمایش می کنند تا به اولین نقطه غیر صفر برسه سپس نقطه را ثبت می کنه و تمام همسایه ها شو در queue قرار میده سپس یه مقدار دیگه از صف بر میداره و همین کارو تا آخر انجام میده به طوریکه صف خالی شه. برای انتخاب همسایه ها هم می تونید یا چهار همسایه اصلی رو انتخاب کنید یا 8 همسایه هر پیکسل این گزینه ای هستش که همه روش ها دارند در برخی موارد پیش میاد که شما نمی خاید 2 تا Blob از طریق یه خط اریب به هم وصل شن که در این موارد بایستی از همسایگی 4 استفاده کنید.

روش دوم بدین صورت هستش که ابتدا polygon را از تصویر به صورت برداری استخراج کنید و سپس آنها را به صورت connected component تفسیر کنید مزیت این روش این هستش که شما فقط لبه ها را پیمایش می کنید یعنی بر خلاف روش بالا که massive بود این روش sparse هستش. برای استخراج لبه در این موارد می تونید از morphology gradient استفاده کنید و بعد هم با استفاده از روش vector quantization آن را به بردار تبدیل نماید. برای محاسبه مساحت blob از می تونید از قضیه green استفاده کنید.

موفق باشید.