اطلاعیه

Collapse
No announcement yet.

Morphological Image Processing Tutorial

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    Morphological Image Processing Tutorial


    سلام ...................

    در این تاپیک قرار هست در مورد تکنیکی در پردازش تصویر به نام Morphological Image Processing صحبت کنیم .. مطالبی که در این تاپیک مطرح میشه، موارد و کاربردهایی از این تکنیک در پردازش تصویر هست که به تازگی مورد استقبال پروسه های پردازشی قرار گرفتن .. هدف اصلی این تاپیک آشنایی با این تکنیک و کاربردهای اون به عنوان یک ابزار قدرتمند در پردازش تصویرهست و بیشتر سعی بر این بوده که مطالب به صورت مفهومی به همراه مثال مطرح بشن تا درک موضوعات ساده تر و مفهومی تر باشه و از مطرح کردن روابط ریاضی صرف در اون، تا حد ممکن اجتناب شده ..

    در ابتدا باید با واژه ی Morphology آشنا بشیم و ببینیم چه ویژگی هایی برای اون پیش بینی شده .. از نظر لغوی این کلمه به معنای ریخت یا ظاهر هست و صفت اون (Morphological) به معنای ریخت شناسی یا ظاهر شناسی است .. اما منظورمون از ریخت دقیقا چیه؟ از نظر فیزیکی ، در حقیقت تمام نیازی که ما از این شاخه طلب میکنیم این هست که بتونه در تحلیل ، آنالیز و استخراج ویژگی های فرمیک تصویر به ما کمک کنه و در نهایت مارو قادر کنه تا بتونیم بر روی Shape تصویرمون قضاوت داشته باشیم .. یعنی پس از استفاده از این تکنیک؛ ما قادر خواهیم بود نسبت به Shape تصویرمون ادراک داشته باشیم (با محدودیت هایی که برای Region ها در نظر میگیریم ..) .. تصاویر زیر رو ملاحظه کنید .. تصویر سمت چپ، image ما هست و تصویر سمت راست Shape اون ..



    همونطور که احتمالا متوجه شدید، منظور از Shape یک شمای کلی از Structure تصویر هست که بازگو کننده ی فرم کلی اون خواهد بود .. از این فرم نمیتونیم Feature (ویژگی ساختاری تصویر ..) ارزشمندی استخراج کنیم، اما ارزش های دیگه ی اون باعث شده که ما از Shape در خیلی موارد به عنوان تنها راه حل ممکن، استفاده کنیم ..

    از نظر ریاضی، استفاده ای که از این تکنیک میکنیم؛ اینه که بتونیم تصویرمون رو با مجموعه های ریاضی معادل کنیم .. در حقیقت هر مجموعه بازگوکننده ی یک آبجکت در تصویر هست به این معنا که اگه آبجکتی در تصویر وجود داشته باشه که تمام پیکسل هاش سیاه باشه، میتونه باز گو کننده ی یک مجموعه ی مستقل در فضای Morphology باشه .. برای تصاویر باینری (فضای رنگی باسنری ..) معادل ریاضی که برای مجموعه ها در نظر گرفته میشه، مجموعه های دوبعدیه، به این معنا که اعضای اون عضو مجموعه ی Z^2 هستن .. بنابر این اگه آبجکت سیاه در تصویر ما موجود باشه، اعضای مجموعه مختصات مولفه های سیاه درون آبجکت هستن ؛ لذا تونستیم از آبجکت یه تعریف ریاضی ارائه کنیم .. اگه فضای رنگی ما Gray Level باشه ، بعد مجموعه ی ما به فضای Z^3 میره و اینجا مجموعه ی ما میشه سه بعدی که دو بعدش اختصاص دارن به مختصات پیکسل ها و یه بعدش هم اختصاص پیدا میکنه به مولفه های رنگی (Color Distribution Factor) آبجکت مورد نظردرون تصویر .. همون طور که متوجه شدید ، با بالا بردن ابعاد مجموعه در فضای Z میتونیم انعطاف فضاهای رنگی دیگه ای رو هم برای آبجکت ها در نظر بگیریم ..

    در نتیجه برای آشنایی با این شاخه باید با مجموعه ها و روابط اونها آشنا بشیم .. روابطی که از همه بیشتر در این مبحث کاربرد دارن رو خیلی مختصر بیان میکنیم ..

    -- Union یا اجتماع .. حکم OR در منطق دیجیتال ..
    -- Intersection یا اشتراک .. حکم AND در منطق دیجیتال ..
    با توجه به مجموعه های در نظر گرفته شده ی A و B میتونید روابطی که بر مبنای دو رابطه ی بالا تعریف میشه، ببینید ..


    -- Translation یا تغییر مکان مختصاتی ( یه تبدیل جمع برای i و j .. ) .. برای بیان این خاصیت بهتره که در ابتدا به رابطه ی ریاضی اون بپردازیم و در انتها هم تحلیل گرافیکی اون رو نشون بدیم ..


    همون طور که مشاهده میکنید، اساس این خاصیت بر میگرده به جمع یک مختصات آفست با مختصات پیکسل های تصویر اولیه ی شما (مجموعه ی شما ..) .. در حقیقت (a,b) اعضای مجموعه ی شما هستن (نقاط آبجکتتون ..) که با مقدار ثابت (x,y) جمع شدن و تصویر حاصل ، به اندازه ی (x,y) از Initial Origin فاصله گرفته .. در شکل زیر میتونید نتیجه ی گرافیکی اون رو ببینید ..


    -- Reflection نگاشت تقارن .. این تبدیل هم عمل تقارن رو روی مجموعه ی ما پیاده سازی میکنه، تقارن نسبت به محور x و y .. برای مشخص شدن این خاصیت، رابطه ی ریاضی اون رو بررسی میکنیم ..


    همونطور که در رابطه ی بالا هم مشاهده میکنید، این خاصیت ، روی اعضای مجموعه تبدیلی رو انجام میده که اعضا معادل های قرینه ی خودشون رو در صفحه ی مختصات (کارتزین ..) میبینن .. یعنی x به –x نگاشت میشه و y به –y .. نتیجه ی گرافیکی اون رو هم میتونید در شکل زیر ببینید ..


    و ...


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

    دوستان! مدتی کمتر به سایت میام ..

    #2
    پاسخ : Morphological Image Processing Tutorial


    سلام ...................

    در پست قبل در مورد خواص مجموعه ها و روابط اونها صحبت کردیم و گفتیم که برای فعالیت در حیطه ی Morphology باید آبجکت هارو با مجموعه های باینری (البته در فضای رنگی باینری ..) معادل کنیم و درنهایت با استفاده از خواص مجموعه ها و تعریف جدید، موارد مورد نظرمون رو روی آبجکت پیاده سازی کنیم .. نکته ای که توجه به اون از اهمیت زیادی برخورداره اینه که notation های مطرح شده برای دو خاصیت آخر رو خوب به خاطر بسپاریم .. در این پست به یکی از دو رابطه ی اصلی و پایه در شاخه ی Morphological Image Processing می پردازیم ..

    -- Dilation : این رابطه بر حسب تعریفی خاص روی مجموعه های A و B مون به دست میاد و معادل یا مشابه دیگه ای برای اون در موارد دیگه وجود نداره .. در نتیجه این رابطه یک رابطه ی اختصاصی برای حیطه ی Morphology هست و از اون در این شاخه به وفور استفاده میشه (یکی از دو ابزار فعالیت در حوزه ی Morphological هست .. ) اما تعریفی که از این رابطه در مقیاس ریاضی به دست میاد به چه صورته؟ برای پاسخ این سوال به شکل زیر توجه کنید ..


    همونطور که میبینید notation های روابط بر این موضوع دلالت دارن که از دو خاصیت آخر بر روی یکی از عناصر مجموعمون استفاده کردیم .. در حقیقت B^ (بی هت ..) همون reflection مجموعه ی B هست و Bz هم همون Translation مجموعه ی B به ازای مختصات z هست .. اما رابطه هایی که در بالا تعریفشون کردیم به ما چی میگن؟ چرا چهار تا رابطه برای یک عمل تعریف شده؟ هرکدوم از اونها معرف بخشی از رابطه هستن یا حالت های مختلف رابطه رو بیان میکنن؟ آیا این تعاریف باهم اشتراک نظر دارن یا نه؟

    ببینید در حقیقت هر چهار تا رابطه ی تعریف بالا معرف یک رابطه هستن و اون هم Dilation هست .. در حقیقت این چهار تعریف بیان های مختلفی از یک رابطه هستن که در نهایت همه ی اونها به یک نتیجه منجر میشه؛ Dilation دو مجموعه ی A و B .. بنابراین ما باید قادر باشیم از هر کدوم از تعاریف Mathematical بالا به رابطه ی Dilation اشراف پیدا کنیم .. خب با تعریف اول شروع میکنیم ..

    ** تعریف اول .. تعریف اول از Dilation دو مجموعه این تعبیر رو داره .. مقادیری از z که به ازای اونها ترنزلیشین رفلکشن B با مجموعه ی A اشتراک واحد داشته باشه حتی به اندازه ی یک پیکسل .. یعنی چی؟ اولا باید دقت داشته باشیم که این تعریف چه فاکتوری رو برای ما مشخص میکنه؟ همونطور که در تعریف هم گفتیم مقادیر z رو برای ما outstanding میکنه .. این z چیه؟ اگه خاطرتون باشه در Translation گفتیم که z مختصاتیه که مبداء جدید به اونجا منتقل شده .. پس اولین نکته اینکه در تعریف Dilation، مجموعه ی نقاط z برای ما مشخص میشه .. اما دوباره به تعریف بر میگردیم .. یه B^ توی مجموعه داریم که translate شده و گفتیم که اشتراکش با A باید ناتهی باشه .. این یعنی چی؟ آیا میتونیم بگیم که اختیار حرکت مجموعه ی B رو توی A یا اطرافش تا جایی داریم که حداقل در یک نقطه (پیکسل ..) ، مجموعه ی B درگیر مجموعه ی A باشه؟ بله؛ دقیقا تعریفی که برای Dilation میشه عنوان کرد همینه .. یعنی محدوده ای که برای حرکت مجموعه ی B تعریف میشه، داخل A یا اطراف اونه به شرطی که از حوزه ی نظارت A خارج نشه (اشتراکش رو با A از دست نده ..) .. یه نکته ی دیگه هم به روال کار اضافه میکنیم و اون اینکه، از این به بعد به B اصطلاح Structuring Element یا Kernel رو اطلاق میکنیم تا در آینده بتونیم با اونها به تعاریف دیگه راحت تر از قبل بپردازیم .. در نتیجه A میشه آبجکت یا تصویری که میخوایم رو پردازش انجام بدیم و B هم Kernel یا Element ایه که خاسته ی مورد نظر ما رو روی تصویر به اجرا میذاره .. کمی جلوتر با مثال های این بخش آشنا میشیم ..

    ** تعریف دوم .. تعریف دوم از Dilation دو مجموعه این تعبیر رو داره .. مختصات (x,y) ای که عضو آبجکت A هست رو با مختصات (u,v) ای که عضو آبجکت Kernel ما هست جمع کن و حاصل رو با چیدمان این حاصل جمع ها بذار توی یه مجموعه ی دیگه به نام ..A dilated by B.. (چون علامت Dilation رو نداشتیم مجبور شدم حروفی تایپش کنم .. ) .. خب؛ اولا ببینیم این تعریف چه فاکتوری رو به عنوان خروجی از این رابطه تعریف میکنه.. مختصات مجموعه ی جدید .. پس تا اینجا دو تعریف باهم مشترک شدن .. اما تحلیل این تعریف .. میگه مختصات آبجکت A رو (اعضای مجموعه ی A ..) با مختصات آبجکت B نظیر به نظیر جمع کن .. این جمع در حالت معمولی میفته کجا؟ داخل آبجکت A .. اما در بدترین حالت چی؟ مختصات لبه های آبجکت با مختصات B جمع میشه و تصویر لبه رو لبه قرار میگیره .. باز هم نتیجه مشابه تعریف بالا شد، یعنی Dilation دو مجموعه ی A و B باهم اشتراک دارن ..

    ** تعریف سوم .. تعریف سوم از Dilation دو مجموعه این تعبیر رو داره .. مقادیری از z که به ازای اونها ترنزلیشین رفلکشن B در اشتراکی با مجموعه ی A داره که حاصل اشتراک، زیر مجموعه ای از A هست .. خب این تعریف عملا بیان دیگه ای از تعریف اولمونه .. تعریف اول یک مقدار کلی به قضیه نگاه میکرد و میگفت که نباید تهی باشه؛ این تعریف اشتراک رو define کرده و گفته که باید زیر مجموعه ای از مجموعه ی A باشه .. حالا دقیقا زیرمجموعه ای از A بودن چه کمکی به رابطه میکنه؟ در واقع کمکی که این تعریف به رابطه ی Dilation میکنه (در توصیف رابطه منظورمون هست ..) اینه که z هامون رو پیدا میکنه .. یعنی میگه به ازای تبدیلات Translation و Reflection برای Kernel ما، چنانچه اشتراکی وجود داشته باشه بین اون و A و این اشتراک زیر مجموعه ی A باشه، z هاش معتبر و منطبق بر رابطه ی Dilation هست .. (توی مثال این قضیه کاملا مشخص میشه .. )

    ** تعریف چهارم .. تعریف چهارم از Dilation دو مجموعه این تعبیر رو داره .. اجتماع Ax هایی که x عضو مجموعه ی kernel ما هست .. خب اگه دقت کنید؛ این هم مثل تعریف دوم ما هست اما با ادبیات Mathematical متفاوت .. همونطور که از پست قبل به خاطر دارید، Ax ترنزلیشن مجموعه ی A بود به ازای مختصات x .. اما در اینجا این x متعلق به کدوم مجموعه میشه؟ Kernel ما .. یعنی همون تعریف دومه که یک مقدار شکل ظاهریش تغییر کرده .. گشتن B در آبجکت A و محدود شدن این گردش به نصف فاصله ی محیط kernel از مرکز اون روی لبه ی A ..

    تا اینجا ما متوجه شدیم که معنای Dilation از نظر ریاضی چی هست .. اما از نظر Visual اگه به قضیه نگاه کنیم شاید خیلی مسائل رو واضحتر متوجه بشیم .. بنابراین سه مثال زیر رو برای این رابطه بررسی میکنیم ..

    مثال اول ..

    مثال دوم ..

    مثال سوم ..


    نکته ی اول .. چه ویژگی در Dilation دو مجموعه خیلی به چشم میاد؟ درسته؛ اندازه ی تصویر Dilation بزرگتر از تصویر آبجکتمون هست ..

    نکته ی دوم .. وابستگی تصویر Dilation نهایی نسبت به Kernel به چه ترتیبه؟ وابستگی مستقیم داره؛ یعنی هموطور که در مثال دوم میبینید اگه Kernel ما دایره باشه، اونموقع حاصل Dilation ما هم در کنج ها نیم دایره میشه ..

    نکته ی سوم .. از مقایسه ی روند Dilation با نتایج Visual به دست اومده چه نتیجه ای میتونیم بگیریم؟ یه نتیجه ی بسیار مهم و اون اینکه چنانچه بخوایم آبجکت A رو با کرنل B دیلیشن کنیم، میتونیم مرکز Kernel رو بذاریم روی Boundary (مرز ..) آبجکت A و Kernel رو روی اون حرکت بدیم .. به این ترتیب محدوده ی نهایی برای Dilation به دست میاد .. پس یه راه مفهومی برای به دست آوردن Dilation اینه که مرکز Kernel رو روی Boundary حرکت بدیم و به داخل همگراش کنیم تا Element ما بتونه داخل آبجکتمون رو جاروب کنه ..

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


    دوستان! مدتی کمتر به سایت میام ..

    دیدگاه


      #3
      پاسخ : Morphological Image Processing Tutorial


      سلام .....................

      در پست قبل در مورد یکی از روابط اساسی در شاخه ی Morphological Image Processing صحبت کردیم و گفتیم که چه ویژگی هایی داره و چه تغییراتی میتونه روی تصویرمون ایجاد کنه .. در این پست قراره در مورد دومین رابطه ی این شاخه صحبت کنیم و در انتها به بررسی یک مثال کاربردی در این شاخه بپردازیم ..

      -- Erosion : این رابطه هم مثل Dilation صرفا در محدوده ی شاخه ی Morphology تعریف میشه و با استفاده از نظریه ی مجموعه ها توصیف میشه .. اما این رابطه دقیقا چه مفهومی داره؟ چه تغییری روی تصویر ایجاد میکنه؟ چه تفاوتی با Dilation داره؟ چه رابطه ای میتونه با Dilation داشته باشه؟ نحوه ی عملکردش بر روی آبجکت به چه ترتیبه و چندین سوال دیگه .. برای پاسخ به این سوالات؛ ابتدا باید به تعریف این رابطه بپردازیم .. برای تعریف این رابطه به سراغ تعبیر ریاضی اون میریم ..


      همونطور که در رابطه ی بالا هم ملاحظه میکنید، رابطه روی ترنزلیشین Kernel ما تعریف شده و بیان میکنه که به ازای Translation های مختلف کرنل B ، جابجایی باید زیر مجموعه ای از A باشه .. یعنی اینکه حاصل Erosion مختصات z هایی رو به ما میده که بر اساس اونها ترنزلیشین کرنل B زیر مجموعه ی آبجکت A باشه .. دقت کنیدکه در اینجا بحث اشتراک تنها مطرح نیست بلکه Bz باید زیر مجموعه ای از A باشه .. از تعریف ریاضی بالا میتونیم این برداشت رو داشته باشیم که مجموعه ی ..A eroded by B.. مجموعه ای هست که از خود مجموعه ی A کوچکتره و این یک مکته ی بسیار حساس در این رابطه هست .. در حقیقت هرچه اندازه ی kernel ما بزرگتر باشه، حاصل Erosion اون با آبجکت A کوچکتر و محدودتر خواهد بود .. در مثال های زیر این ویژگی به وضوح قابل بررسی هست ..

      ** مثال اول .. در این مثال آبجکت ما مربع متقارن A هست و Kernel مون هم مربع B انتخاب شده (منتهی با ابعادی متفاوت ..) .. رابطه ی Erosion رو برای این مجموعه ها تعریف میکنیم ..


      ** مثال دوم .. در این مثال آبجکت ما مربع متقارن A هست و Kernel مون یک مستطیل با طول برابر با اندازه ی اضلاع A انتخاب شده (عرض اون هم به طبع از اندازه ی ضلع A کمتره ..) رابطه ی Erosion برای این دو مجموعه به صورت شکل زیر تعریف میشه ..


      همونطور که ملاحظه میکنید، مراحل Erosion در این مثال کاملا نمایانه.. آنچنانی که در شکل هم مشخص شده حاصل Erosion آبجکت A و کرنل B یک خط مستقیم شده .. علت این اتفاق بر میگرده به تعریفی که از رابطه داشتیم .. اجازه بدید دوباره رابطه ی Erosion رو به خاطر بیاریم .. z هایی که به ازای اونها ، Bz زیرمجموعه ای از A باشه .. اتفاقی هم که در شکل بالا افتاده موید همین مطلبه .. چون طول مستطیل Kernel ما برابر بوده با اندازه ی ضلع A در نتیجه از نظر طولی هیچ translation ای نمیتونیم داشته باشیم اما در عرض، هنوز جای جابجایی وجود داره .. در نتیجه محدوده هایی که مرکز Kernel میتونه در آبجکت A جابجا بشه به قسمی که حاصل این جابجایی ها ، زیر مجموعه ی A باشه تنها روی یک خط افقی قرار میگیره و translation ما هیچ مولفه ی عمودی ای نخواهد داشت ..

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


      اتفاقی که در بالا افتاده چیه؟ کرنل B رو به صورت + تعریف کردیم و روی آبجکت A مون، Erode اش کردیم .. خب این کلیت قضیه؛ اما جواب آخر به ما چی میگه؟ ببینید در حقیقت محدوده هایی که مرکز Kernel میتونسته به اونها Translate بشه تنها و تنها همین سه نقطه هستن .. همونطور که در کل هم میبینید به ازای اون نقطه هاست که Kernel ، زیر مجموعه ای از A شده ..

      سوال .. این نتیجه ای که از بالا گرفتیم؛ ما رو یاد چه مطلبی میندازه؟ در واقع اینجاست که میخوایم زاویه ی دیدمون رو نسبت به این رابطه عوض کنیم .. ببینید اگه بیان متفاوتی از رابطه رو روی شکل بررسی کنیم میبینیم که مجموعه ی نهایی ..A eroded by B.. اعلام کننده ی دفعات Match شدن Kernel با آبجکت درون تصویر ما هست .. یعنی چی؟ یعنی تونستیم یه Template Matching خیلی ساده از دل این رابطه استخراج کنیم که میتونه دفعات Match شدن رو به ما نشون بده .. در حقیقت علت این اتفاق رو میشه این طور تعبیر کرد که چون در تعریف Erosion گفتیم که Kernel به ازای translation های مختلف باید زیر مجموعه ای از A باشه، در نتیجه میشه از Kernel به عنوان یه template برای حرکت روی تصویر و آبجکت استفاده کرد و این نکته ی خیلی مهمیه که در ادامه به کار ما خواهد اومد ..

      با بررسی این رابطه، مطالب مربوط به دو رابطه ی اصلی در این شاخه؛ جمعبندی شد .. در حقیقت متوجه شدیم که دو رابطه ی Dilation و Erosion اساس Morphological Image Processing رو تشکیل میدن .. در پست بعد به بررسی دو مثال کاربردی از تلفیق این دو رابطه و بیان ارتباط بین این دو رابطه می پردازیم .. با تشکر از همراهی دوستان .. موفق باشید ..

      دوستان! مدتی کمتر به سایت میام ..

      دیدگاه


        #4
        پاسخ : Morphological Image Processing Tutorial


        سلام ...................

        در پست قبل به بررسی دو رابطه ی بسیار مهم Dilation و Erosion پرداختیم و متوجه شدیم که هر کدوم از اونها میتونن چه تاثیری روی مجموعه های ما (آبجکت های ما ..) داشته باشن .. همچنین متوجه شدیم که مفهوم Kernel برای روابط Morphology به چه نحوی در پیاده سازی روابطکون تاثیرگذاره .. در این پست به بررسی این مفهوم میپردازیم که دو رابطه ی Dilation و Erosion در کدوم زمینه ها میتونن باهم اشتراک داشته باشن و اگه بخوایم رابطه یای بین اونها تعریف کنیم، به چه ترتیب این کار رو انجام بدیم .. در خاتمه هم به بررسی چند مثال کاربردی بر مبنای این روابط میپردازیم ..

        اما برای اینکه یه بررسی داشته باشیم از اشتراک دو رابطه، باید به دقت به دو رابطه دقت نظر داشته باشیم .. برای این منظور یک بار دیگه به بررسی اجمالی دو رابطه میپردازیم .. Dilation از z هایی صحبت میکرد به ازای اونها ترنزلیشین رفلکشن Kernel با آبجکت A اشتراک داشته باشه حتی در یک پیکسل .. Erosion از z هایی صحبت میکرد که به ازای اونها ترنزلیشین Kernel زیر مجموعه ای از مجموعه ی (ماتریس آبجکت ..) A میشد .. خب اونچیزی که توی هر دوی روابط مشترکه، z هایی هستن که از تعریف به دست میومدن، از طرفی میتونیم در نگاه Visual این مطلب رو کاملا ببینیم که رابطه ای که بین Erosion و Dilation وجود داره میتونه با یک رابطه ی دوگان دمورگان معادل بشه .. دقت کنید که منظور از دمورگان در این ارتباط، منطق Complementation بر روی Described Set هامون هست و نه صرفا دمورگان مجموعه ای .. در نتیجه میتونیم رابطه ی مشترک رو به صورت زیر تعریف کنیم ..


        همونطور که در بالا هم مشاهده میکنید، ارتباط دوگانی که بین این دو رابطه وجود داره، تمام مطالب رو بازگو میکنه .. در حقیقت اگه با تعریف دو رابه جلو بریم به دقت میتونیم این مفهوم رو اثبات کنیم ..

        با این توضیحات، مباحث ابتدایی و پایه در رابطه با این شاخه به پایان میرسه و در ادامه به بررسی چند مثال کاربردی در این شاخه می پردازیم .. در اینجا توضیح دو نکته لازمه و اون اینکه: اولا درادامه از مثال هایی صحبت میکنیم که کاربرد این روابط رو در پردازش تصویر، به صورت عام نشون میدن و تحلیل اونها با استفاده از روابط این شاخه، به این معنا نیست که تنها راه حل ممکن، استفاده از این روابطه .. دوم اینکه در ضمن بیان مثال ها، از کدهای تولید کننده ی این روابط در نرم افزار متلب استفاده میکنیم و از این طریق به معرفی این دستورات هم میپردازیم ..

        >>مثال اول .. در این مثال قصد داریم تا تاثیر Dilation رو بر آبجکتمون (که عبارته از سه حرف لاتین ..) نشون بدیم .. دقت به این نکته از اهمیت فراوانی برخورداره که هدف در این مثال بررسی این نکته هست که تاثیر Dilation بر آبجکت های ما به چه ترتیبی میتونه باشه ..

        **در ابتدا تصویر اولیه رو نشون میدیم ..


        نکته ای که در این مثال به اون خیلی توجه میکنیم اینه که فرم کلی آبجکتمون پر از Fracture هست به این معنا که اگه یک Contour رو روی اون حرکت بدیم نمیتونیم از پیوستگی مسیر Curve به Boundary اولیه ی آبجکت برسیم .. در حقیقت اگه بخوایم این نکته رو با یک تصویر نشون بدیم، میتونیم به شکل زیر اشاره کنیم ..


        ** برای Kernel ماتریس زیر رو تعریف میکنیم به این معنا که با یه مربع سه در سه (پیکسل ..) رابطه ی Dilation رو روی آبجکت هامون تعریف کنیم .. دقت کنید که اگه بخوایم میتونیم این Kernel رو به هر ترتیبی که مد نظرمون هست، تعریف کنیم (حتی فرم دایره مانند .. یک Plus در Scale دو برابر فاصله ی مرکز از پیکسل های مجاورش ..)


        ** با اجرای برنامه ی زیر میتونیم نتیجه ی رابطه ی Dilation رو روی آبجکت هامون ببینیم ..


        و در نهایت تصویر نهایی و تاثیر پذیری آبجکت ها از این رابطه ..


        -*- نتیجیه گیری : همونطور که میبینید آبجکت های تصویر نهایی همگی به نوعی Bold شدن و این Bold شدگی به ترتیبیه که تمام سطح آبجکت رو پوشش داده .. در حقیقت فاکتور Pixel Distribution ای که موید گسستگی حرکت ما بود، از بین رفته و میتونیم به راحتی Boundary آبجکت هامون رو به دست بیاریم .. نکته ی مهم دیگه ای که وجود داره چیه؟ اینه که آبجکت ها به نوعی Scale شدن، یعنی تونستیم با تقریب خیلی ضعیف و البته وابسته به Kernel به کار رفته در رابطمون، یه Affine Transformation تعریف کنیم به قسمی که وابستگی دوگانه ای به فرم آبجکت و Kernel داره .. البته هدف کلی رابطه ی Dilation این نیست اما به عنوان یک نتیجه گیری ضعیف میتونیم از این Result استفاده کنیم و در جاهایی که امکان استفاده از تبدیلات Affine برای ما وجود نداره یا نمیخوایم برای Scale کردن تصویر، به متدهای Bicubic و یا Bilinear متوسل بشیم، میتونیم از این نتیجه به راحتی استفاده کنیم ..

        >>مثال دوم .. در این مثال قصد داریم تا تاثیر رابطه ی Erosion رو روی آبجکت هامون بررسی کنیم .. تصویری که ما در این مثال از اون صحبت میکنیم، یک تصویر ویژه با ویژگی های بسیار خاصه (نه به جهت Supervision بلکه از جنبه ی کاربردی ..)

        ** در ابتدا تصویر اولیه رو نشون میدیم ..


        نکته ای که در این تصویر باید به اون خیلی توجه کنیم اینه که تصویر پر از آبجکت های کروی (در فضای دو بعدی ..) با اندازه های مختلف هست و هدف ما اینه که یک سری از اونهایی که اندازه ی خاصی دارن رو متمایز بکنیم و در نهایت جداشون کنیم .. در حقیقت میخوایم یه Threshold ای بذاریم برای اندازه ی آبجکت ها و نسبت به اونThreshold حذف کنیم آنچیزهایی رو که سمت چپ Threshold مون قرار دارن (منظور حذف کمتر از Threshold ..)..

        **برای Kernel ماتریس مربعی زیر رو تعریف میکنیم ..


        ** با اجرای برنامه ی زیر میتونیم نتیجه ی رابطه یErosion رو بر تصویر ببینیم ..


        و در نهایت تاثیر پذیری آبجکت های تصویر از این رابطه ..


        -*- نتیجه گیری : همونطور که در شکل بالا هم مشاهده میکنید، با اعمال این رابطه روی تصویر تونستیم یک سری آبجکت هایی که اندازه ی خاصی دارن رو از بقیه مجزا کنیم .. در حقیقت کاری که تا الان نمیتونستیم به راحتی و با الگوریتم های معمولی انجام بدیم، با این رابطه به راحتی انجام شد، یعنی تونستیم با این رابطه روی اندازه ی آبجکت هامون قضاوت کنیم بدون اینکه اطلاع خاصی از محل دقیق اونها داشته باشیم .. یک مطلب مهم دیگه هم اتفاق افتاده و اون اینکه نگاهمون رو نسبت به موضوع کاملا چرخوندیم یعنی چی؟ یعنی اینکه با این رابطه، به جای اونکه نگاه Pixel Based به موضوع داشته باشیم، نگاه Object Base داریم و این نکته ایه که در آینده به کار ما خواهد اومد ..

        اما چرا اندازه ی آبجکت هامون تغییر کرد؟ جواب این سوال بر میگرده به پست قبل، همون جایی که ما تعریف رابطه ی Erosion رو بیان کردیم و گفتیم که از ویژگی های این رابطه اینه که Kernel باید در آبجکت محاط بشه و اونموقع هست که z هاش پذیرفته میشن .. حالا چه کار میتونیم انجام بدیم که این مساله از بین بره، یا حداقل به شرایط اولیه ی خودش برگرده؟ پست دوم ... یعنی استفاده از Dilation روی آبجکت نهایی با همون Kernel تعریف شده در فرآیندErosion .. نتیجه ی این اتفاق رو میتونید در شکل زیر مشاهده کنید ..


        >> مثال سوم .. در این مثال قصد داریم تا کاربرد دیگه ای از این شاخه رو به نمایش بذاریم و در واقع ببینیم که در یه Application واقعی، این شاخه چه کمکی میتونه به ما بکنه ..

        ** در ابتدا تصویر اولیه رو نشون میدیم ..


        همونطور که در تصویر بالا هم مشاهده میکنید، تصویر ما یک Bounding Box ای از fingerprint هست اما نه یه fingerprint معمولی بلکه یه نمونه ی نویزی .. بر حسب اتفاق، نویز این اسلاید خیلی شبیه نویز معروف salt & pepper هست اما این مطلب رو میذاریم کنار و نخواهیم دانست که یه همچین نویزی وجود داره و کمی کلی تر به موضوع نگاه میکنیم .. در حقیقت این اسلاید یکی از شرایط بد مارو شامل میشه به این معنا که پاشندگی اثر نویزی بر همه ی قسمت های آبجکت وجود داره و این قضیه شرایط پیشفرض مارو دامن میزنه ..

        ** برای حذف این نویزها همونطور که در مثال قبل هم گفتیم میتونیم، پیکسلهای حاوی این مقادیر رو حذف کنیم با این فرض که بگیم اونها دارای اندازه ای هستن (نه صرفا اقلیدسی بلکه pixel neighborhood ..) که میتونن از Kernel ما کوچکتر باشن، در نتیجه میتونیم اونها رو حذف کنیم .. اما نکته ای که خیلی اهمیت داره اینه که Kernel رو به چه صورت تعریف کنیم .. در این مثال ما با دو کرنل کار میکنیم که اونهارو در شکل زیر میبینید ..


        ** نتیجه ی رابطه ی Erosion رو روی آبجکت به صورت زیر مشاهده میکنیم .. دقت کنید که Figure2 با اولین کرنل و Figure3 با دومین کرنل، Erode شدن ..


        اما همونطور که میبینید خطوط fingerprint خیلی کمرنگ و بعضا گسسته شده، برای حل این مشکل ساده ترین راهی که وجود داره اینه که با "همون" کرنل های قبلی تصویرمون رو Dilate کنیم .. نتیجه ای که مشاهده میکنیم به صورت زیره .. ترتیب Figure ها هم مثل بالا هست ..



        همون طور که ملاحظه میکنید نشون دادیم که میشه با این شاخه به بهینه سازی تصویر هم کمک کرد .. در پست بعد همین مثال رو در حالت بدتری بررسی میکنیم و در پایان هم نتیجه گیری های مهم این دو مثال رو بیان میکنیم .. با تشکر از همراهی دوستان .. موفق باشید ..
        دوستان! مدتی کمتر به سایت میام ..

        دیدگاه


          #5
          پاسخ : Morphological Image Processing Tutorial


          سلام .................

          در پست قبل بررسی کردیم که چطور Morphology Operation ها میتونن به تحلیل Visual ما کمک کنن به این معنا که بتونیم فرآیندهای مختلفی رو روی تصاویر پیاده سازی کنیم و نتایجشون رو بازگو کنیم .. در این پست قصد داریم تا با طرح دو مثال دیگه در این زمینه به عملیات مقدماتی این شاخه پایان بدیم و کم کم وارد مباحث پیشرفته تر در این حیطه بشیم ..

          اولین مثالی که بررسی میکنیم؛ حالت بدتری از آخرین مثال پست قبلی هست .. در اون مثال گفتیم که یه اسلاید Bounding Box از Fingerprint داریم و از بد ماجرا؛ این اسلاید کاملا نویزی شده .. نویزی که تصویر به ما تحمیل میکرد ما رو به بک گراند ذهنمون سوق میداد که چقدر این مدل شبیه نویز معروف Salt & Pepper هست .. البته به دلیل Unsupervised بودن Process تاکید کردیم که این نکته رو به فراموشی میسپاریم و ازش استفاده ی خاصی نخواهیم کرد .. در حقیقت مثالی که بررسی کردیم شاید این شاعبه رو به وجود بیاره که بهتر بود از فیلتر Salt & Pepper برای denoising اون استفاده میکردیم اما همونطوری که در ابتدا هم گفتیم؛ تمام تلاش این تاپیک اینه که روی تکنیک های Morphological بحث کنیم و قصد نداریم Comparison ای داشته باشیم بین متدهای مختلف .. در حقیقت میخوایم به اینجا برسیم که اگه یه تصویر نویزی کاملا Sparse داشتیم؛ دستمون برای استفاده از این تکنیک ها باز باشه و در قید این موضوع نباشیم که چون Pixel Distribution نویز سوار بر تصویر از مدل خاصی تبعیت نمیکنه، پس برای استفاده از این تکنیک ها کاملا Confuse بشیم ..

          >>مثال چهارم ... در ادامه ی مثال قبل؛ مثالی رو مطرح میکنیم که شرایط نویزی شدنش به مراتب از تصویر قبل بدتره .. اگه در تصویر قبل میشد به ماهیت تصویر به طور کاملا تقریبی پی برد، در اینجا دیگه این امر امکان پذیر نیست .. اجازه بدید تصویری که ازش صحبت میکنم رو با هم ببینم ..


          همونطور که میبینید تصویر کاملا نا مفهومه .. الان اگه بخوایم روی تصویر قضاوت کنیم میتونیم ادعا کنیم که: دو تا چشم؛ یه تیغه ی بر جسته که احتمالا میتونه بینی باشه؛ یه نیم خط افقی که بنابر مقایسه و Neighborhood میتونیم بگیم مثل دهان هست؛ یه دایره ی هندسی که میتونیم بگیم کلیت صورته .. اطلاعات ما به صورت کاملا تقریبی و حدسی میشن موارد بالا .. اما برای پردازش؛ این اطلاعات هرگز کفایت نمیکنه و ما نیازمند اطلاعات دقیقتری هستیم .. پس باید تصویر رو زیر الگوریتم های پردازشی ترمیم کنیم یا حداقل نویز تصویر رو از اون جدا کنیم .. اما در ابتدا یه تحلیل ابتدایی که میتونه تا آخر فرآیند مارو کمک کنه .. میایم و هیستوگرام تصویر رو نگاه میکنیم .. این نگاه صرفا یک glance خواهد بود به این معنا که دنبال تحلیل Histogram Analysis نیستیم و تنها یه نکته رو میخوایم بدونیم ..


          خب هیستوگرام بالا به ما میگه که اولا تصویر Gray Scale هست .. ثانیا مولفه های dark تصویر خیلی نزدیک به هم و نسبتا زیاد هستن .. پس theme تصویر یه جورایی تیره خواهد بود .. اما ادامه ی تحلیل .. اگه بخوایم با تکنیک های Morphology به موضوع نگاه کنیم (که میخوایم ..) باید دنبال کرنل هامون باشیم .. برای این مثال و بیان این مساله که انتخاب کرنل میتونه تاثیر بسزایی روی نتیجه ی نهایی داشته باشه؛ سه کرنل متفاوت رو در نظر میگیریم و نتیجه ی نهایی رو با هرکدوم از اونها بررسی میکنیم .. در ابتدا کرنل هایی که برای این مثال ازشون استفاده میکنیم رو معرفی میکنیم ..


          سه کرنل با dimension های مساوی (3*3) اما با سه ویژگی کاملا متفاوت .. اولی و دومی رو در مثال های پیش هم بررسی کردیم؛ اما کرنل سوم یه نکته ی ویژه داره که شاید Result خوبی در این مثال برای ما نداشته باشه اما در موارد بعد؛ تنها ابزار برای تحلیل و پردازش های قویتر در این زمینه خواهد بود که در ادامه به اونها هم خواهیم رسید .. اگر حاصل erosion رو با این کرنل ها بر روی تصویرمون ببینیم، اونوقت میتونیم نسبت به خوب بودن یا بد بودن کرنل ها قضاوت داشته باشیم .. درسته که در این مثال این کرنل ها کمک زیادی به پردازش ما کردن اما میتونیم کرنل های دیگه ای انتخاب کنیم که شاید نتایج بهتری رو برامون به دنبال داشته باشه .. نتایجی که از کرنل های بالا به دست اومده رو میتونیم در تصویر زیر ببینیم ..


          همونطور که ملاحظه میکنید؛ با کرنل هایی که معرفی کردم، تونستیم تصویر نویزی اولیه رو به مراتب قابل تحلیل تر از قبل بکنیم .. استفاده از نتایج بالا برای Reconstruct کردن تصویر بسیار مفیده به طوری که با یه الگوریتم خیلی ساده میتونیم نتیجه ی نهایی رو باز هم بهتر از قبل ببینیم ..


          تصویر بالا رو با تصویر اولیه مقایسه کنید .. میبینید که خیلی تفاوت هست .. باز هم اگه تصویر بالا رو با استفاده از چندین مرحله کدنویسی پردازش کنیم؛ تحلیل میتونه به نتیجه ی نهایی زیر منجر بشه .. نکته ای که وجود داره اینه که اگه ما مرحله ی اول رو پیاده سازی نمیکردیم (erosion منظورم هست ..) هرگز نمیتونستیم به این مرحله برسیم .. در حقیقت همون ابتدا متوقف میشدیم که چطور مشکل image denoising رو حل کنیم اما الان با استفاده از تکنیک های Morphology تونستیم این مساله رو به کلی حل کنیم ..


          >> مثال پنجم ... در این مثال باز هم قصد داریم از مطالبی که در پست های قبل گفتیم استفاده کنیم .. در پست سوم (اگه اشتباه نکنم ..) گفتیم که یکی از موارد استفاده یErosion در scale بسیار poor میتونه Template Matching باشه اما به شرح موضوع نپرداختیم .. در این مثال میخوایم اون مورد رو باز کنیم و تاکید کنیم که چرخوندن نگاه در مسائل میتونه کمک هایی به ما بکنه که با یه نگاه ثابت هرگز به اونها دست پیدا نمیکردیم .. در اینجا قصد ندارم که در مورد Template Matching توضیح بدم .. فقط تا جایی که یه بک گراند ذهنی برای تفهیم این مثال پیدا کنیم، یه مثال ساده میزنم تا موضوع روشن بشه ..

          Template Matching یکی از متدهای مختلف در شاخه ی Object Recognition هست که اساس کارش رو قرار میده بر اسکن کردن تصویر و دنبال کردن یه الگوی فرمیک خاص .. یعنی چی؟ فرض کنید یه تصویر داریم که توش پر شده از حیوانات مختلف .. سگ، زرافه، خرس، کلاغ، قو..!! که از هر کدوم چندین تا توی تصویر هست .. حالا یه الگوی مقوایی بهمون میدن که وسط اون رو به شکل قو خالی کردن .. بهمون میگن که این مقوا رو روی تصویر حرکت بده و هر جا دیدی شکل توی تصویر با الگوی مقوایی منطبق شد، یه چوب خط بکش روی مقوا .. با اتمام این کار ما تونستیم که تعداد قوهارو بشماریم بدون اینکه از فرم حیوانات دیگه ی تصویر اطلاع داشته باشیم ..

          Template Matching هم درست مثل همین کار میمونه با این تفاوت که وظیفه ی دنبال کردن الگوی خاص بر عهده ی الگوریتمیه که ما مینویسیم و خیلی خیلی موارد دیگه .. گفتم که قرار نیست در این بخش پیرامون این مباحث صحبت کنیم بلکه کلیت ماجرا رو بیان میکنیم .. پس از هر نظر بپذیرید که رویه ی مشابهی توسط کدنویسی پیاده سازی میشه که جای مطرح کردنش در اینجا نیست .. در مثالی که از حیوانات داشتیم، الگوی مقوایی میشه Template ما و مشابهتی هم که ازش صحبت کردیم میشه correlation آبجکت های توی تصویر با الگوی ما ..

          حالا میخوایم این کار رو با کمک Morphology انجام بدیم .. پس باید Template مون رو تعیین کنیم .. هم چنین باید کرنل مون رو هم تعیین کنیم .. پس دو قضیه برای ما مطرح میشه، Template و کرنل .. اما بد نیست در ابتدا تصویری که میخوایم توش یه الگوی خاص پیدا کنیم رو ببینیم .. ممکنه این سوال پیش بیاد که از نظر Supervision این تصویر خیلی ایده آله .. این حرف درسته؛ واقعا برای Template Matching ؛ چی از این تصویر بهتر؟ اما همونطور که در ابتدا هم گفتم این تصویر برای اینه که بتونیم مراحل کار رو ببینیم و پس از آشنایی با این مرحله، میتونیم به کاربرد اون در Matching های پیچیده تر بپردازیم (البته نه در اینجا ..) بنابراین، از این مساله هم عبور میکنیم .. در شکل زیر میتونید تصویر ابتدایی رو ببینید ..


          همونطور که میبینید تصویرمون سه آبجکت مختلف داره؛ E،C،A.. قصد داریم که آبجکت C رو از بقیه جدا کنیم و نمیخوایم که این کار رو با تحلیل نمودار Correlation انجام بدیم و میخوایم که از طریق Morphology این کار انجام بشه .. گفتیم که میخوایم آبجکت C رو از بقیه جدا کنیم، در نتیجه template ما میشه آبجکت C .. اما کرنل ما چی میتونه باشه؟ اجازه بدید دوباره برگردیم به کاری که میخوایم انجام بدیم .. میخوایم یه آبجکت رو از بقیه جدا کنیم .. پس میتونیم با این موضوع هم مثل مساله ی نویز رفتار کنیم .. اونجا گفتیم که کرنلی انتخاب میکنیم که از اندازه ی نویز ما (پارامتر پیکسلی ..) بزرگتر باشه، در نتیجه با Erosion میتونیم اون نویزها رو حذف کنیم .. اینجام قضیه به همین ترتیبه .. کرنلمون رو برابر همون template قرار میدیم و برای این کارمون هم این استدلال رو میاریم که آبجکتی با این مشخصات فرمیک، در تصویر پذیرفته میشه و آبجکت های دیگه رد میشن .. در نتیجه template و آبجکت ما میشن مطابق شکل زیر ..


          اگه برنامه ی زیر رو اجرا کنیم ؛ نتیجه ای که میگیریم، به صورت شکل بعدی خواهد بود ..


          نتیجه ی نهایی ..


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


          *-* Take Home Message : در پست های قبل در مورد دو رابطه ی خیلی مهم و اصلی متعلق به شاخه ی Morphological Image Processing صحبت کردیم و مثال های متنوعی رو هم در این رابطه مطرح کردیم و دیدیم که هر کدوم از روابط به چه نحو، تعریف میشن؛ چه ویژگی هایی دارن؛ در چه زمینه هایی میتونن کار برد داشته باشن و ... در نتیجه اگه بخوایم دسته بندی کلی از موارد گفته شده تا به حال داشته باشیم؛ میتونیم به موارد زیر اشاره کنیم ..

          1- ویژگی بارز Dilation در برجسته کردن و Bold کردن Boundary آبجکت ها در یک تصویر ..
          2- ویژگی بارز Erosion در حذف آبجکتی با اندازه ی خاص در یک تصویر ..
          3- کاربرد غیر مستقیم Erosion در Image Denoising برای ترمیم تصویر نویزی ..
          4- کاربرد غیر مستقیم Erosion و Dilation در Template Matching ..
          5- کاربرد غیر مستقیم Erosion در پیدا کردن Centre یک آبجکت در یک تصویر ..
          6- کاربرد غیر مستقیم Erosion در Tracking (از جنبه ی Erosion Filters ..) یک شئ ..

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

          دیدگاه


            #6
            پاسخ : Morphological Image Processing Tutorial

            سلام ...................

            برخی دوستان برای نمایش تصاویر مشکل داشتن .. ظاهرا لینک تصاویر فیلتر شده بود .. تصاویر رو جای دیگه ای پلود کردم .. موفق باشید ..
            دوستان! مدتی کمتر به سایت میام ..

            دیدگاه


              #7
              پاسخ : Morphological Image Processing Tutorial

              دوست عزیز خیلی عالی بود حرف نداره مرسی

              بنده یه سوال دارم در مورد مثال آخر

              اگه شکل و اندازه حرف c در templat با شکل و اندازه حرف c در main متفاوت باشه باز هم میشه از Morphology استفاده کرد؟

              مثلا بگیم اگه 70 درصد شباهت داشت قبول کنه

              دیدگاه


                #8
                پاسخ : Morphological Image Processing Tutorial

                سلام ................

                توی Object recognition وقتی که صحبت از Template Matching به میون میاد؛ تمام تلاش بر این هست که Template ما بر Category اون Object منطبق باشه یعنی بپذیریم که این تطابق از نظر فرمیک قابل توجیه باشه .. پس اونجا میشه بر حسب ویژگی ها و متدهای خاص Geometric این ضریب خطا رو در نظر گرفت .. امــا در Morphology چون اساس بحث بر میگرده به تعریف Kernel به عنوان Templete نمیشه این ضریب رو اعمال کرد .. دلیلش هم دقیقا در روال تعریف شده ی Erosion خلاصه میشه .. در نتیجه با Morphology در منظر Template Matching نمیشه انتظار خطا رو بر آورده کرد .. موفق باشید ..
                دوستان! مدتی کمتر به سایت میام ..

                دیدگاه


                  #9
                  پاسخ : Morphological Image Processing Tutorial

                  ببخشید بنده متوجه نشدم دوباره سوالم رو تکرار کردم
                  اگه شکل و اندازه حرف c در templat با شکل و اندازه حرف c در main متفاوت باشه باز هم میشه از Morphology استفاده کرد؟

                  دیدگاه


                    #10
                    پاسخ : Morphological Image Processing Tutorial

                    آقا حسام الدین خیلی خیلی متن جالبی بود.
                    ممنونم
                    **همیشه به این فکر کن که خداوند با توست**

                    دیدگاه


                      #11
                      پاسخ : Morphological Image Processing Tutorial

                      نوشته اصلی توسط r.ghost
                      ببخشید بنده متوجه نشدم دوباره سوالم رو تکرار کردم
                      اگه شکل و اندازه حرف c در templat با شکل و اندازه حرف c در main متفاوت باشه باز هم میشه از Morphology استفاده کرد؟
                      خب احتمالا من بد گفتم .. خــیــر .. کافیه به اندازه ی یک پیکسل تفاوت داشته باشه .. اونوقت میبینید که دیگه جواب صحیح نخواهد بود .. میتونید خودتون تستش کنید .. موفق باشید ..
                      دوستان! مدتی کمتر به سایت میام ..

                      دیدگاه


                        #12
                        پاسخ : Morphological Image Processing Tutorial

                        دوست عزیز شرمنده موضوع خیلی برام جالبه یه سوال دیگه داشتم

                        میشه تعداد templat در MAIN به دست آورد مثلا 2 یا 3 تا یا ...

                        دیدگاه


                          #13
                          پاسخ : Morphological Image Processing Tutorial

                          نوشته اصلی توسط r.ghost
                          میشه تعداد templat در MAIN به دست آورد مثلا 2 یا 3 تا یا ...
                          بله .. میتونید هر چند تایی که میخواید تعریف کنید .. (فکر کنم حدس زدم دارید به چی فکر میکنید.. میتونید توی اون زمینه هم از این متد استفاده کنید .. منتهی باید تعریف بازگشتی تون رو دقیق بررسی کنید..) موفق باشید ..
                          دوستان! مدتی کمتر به سایت میام ..

                          دیدگاه


                            #14
                            پاسخ : Morphological Image Processing Tutorial

                            دوست عزیز فکر میکنم منظورم رو خوب نرسوندم

                            مثلا تعداد حرف C رو به دست اورد یعنی یه آمار تعداد حرف C

                            دیدگاه


                              #15
                              پاسخ : Morphological Image Processing Tutorial

                              نوشته اصلی توسط r.ghost
                              دوست عزیز فکر میکنم منظورم رو خوب نرسوندم

                              مثلا تعداد حرف C رو به دست اورد یعنی یه آمار تعداد حرف C
                              سلام ................

                              باز هم جواب مثبته .. در لینک زیر سوالی مشابه سوال شما پرسیده شده .. خودتون هم میتونید کد مربوط به اون رو بنویسید .. فقط کافیته تعداد دفعات Matching رو به دست بیارید .. همون هایی که حاصل تطابق Template در روند Erosion هست .. موفق باشید ..

                              http://www.eca.ir/forum2/index.php?topic=21364.60
                              دوستان! مدتی کمتر به سایت میام ..

                              دیدگاه

                              لطفا صبر کنید...
                              X