اطلاعیه

Collapse
No announcement yet.

حذف Backgrond از تصویر

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #31
    پاسخ : حذف Backgrond از تصویر

    سلام ..

    پیش از اینکه این پست رو بنویسم؛ خیلی کوتاه به یک ایده فکر میکردم که شاید بتونه کمک کنه .. تا حدودی کدش رو هم نوشتم امــا یک سری آزمایش ها باید انجام بشه که فکر نمیکنم زمان بهم این اجازه رو بده .. بنابراین؛ شاید بهتر این باشه که این آزمایش رو انجام بدید و نتایجشون رو بفرمائید تا بتونیم بررسیشون کنیم .. اول اینکه: تمامـا در مورد فضای Gray Scale حرف میزنیم امــا به دلیل نوع چینش (توزیع) رنگی آبجکت ها؛ میتونیم به پردازش رنگی هم فکر کنیم .. برای مثال اطلاعات هر کانال، میتونن کمک کنن به ما تا با ترکیب خطی و یا وزن دار اونها؛ بتونیم به نوعی اطلاعات آبجکت ها رو از سطح زمینه جدا کنیم .. پــس؛ مورد اول اینکه میتونیم بر روی فضای RGB و یا حتی HSL تمرکز کنیم .. دوم اینکه: یک سری آزمایش ها میتونیم انجام بدیم که با توجه به زمینه ی "سـبـز" تصاویر؛ شاید از کانال G بتونیم استفاده های بیشتری کنیم .. خیلی شاید دقیق نباشه از نظر علمی این قسمت امــا میتونیم هیستوگرام (!) رو روی هر کانال بررسی کنیم و ببینیم که به چه صورت این شانس برای ما وجود داره تا اینکه اطلاعات سبز رو که جزو طیف نور (رنگی) خالص هست؛ از اطلاعات رنگی سفید؛ که طیفی مرکب هست (Composite) جدا کنیم و از دایره ی رنگی R G B هم این خاطره رو داریم که مرکز این دایره سفیده؛ یعنی تلفیق هر سه طیف (کانال رنگی) .. سوم اینکه: میتونیم از پردازش های همسایگی (Neighborhood) هم استفاده کنیم؛ برای مثال اگر دو حلقه ی For بنویسیم بر روی تصویر به منظور اسکن کردن پیکسل ها؛ میتونیم بر روی هر پیکسلی که قرار داریم؛ مقادیر پیکسل بالا یا Up؛ قبل یا Left و "بالا و قبل" یا Diagonal رو به دست بیاریم (برای هر سه کانال) و اینها رو از هم کم کنیم (کانال به کانال) و در پایان اعداد به دست آمده رو باهم جمع .. این ایده؛ شبیه کاری هست که معمولا برای محاسبه ی میزان خطا استفاده میشه؛ امــا اینجا ما هرگز چنین نگاهی نداریم .. اعدادی که به دست میان میتونن خیلی Informative باشن (--یا خیلی بدبینانه؛ میتونن هم نباشن! --) و با توجه خاصیت پردازش همسایگی؛ این امکان هست که از اطلاعات اونها به عنوان یه Threshold استفاده کنیم .. (--نمیدونم چقدر واضح توضیح دادم--) .. بعلاوه؛ از یک سری ایده های آنالیز هیستوگرام هم میتونیم استقاده کنیم؛ به این منظور که یک Threshold داینامیک به دست بیاریم و در انتها یه ماتریس تازه از تصویر تعریف کنیم به این صورت که از Threshold به قبل؛ 0 و از Threshold به بعد هم 1 یا 255 .. روش اول خیلی خوب در پیدا کردن Boundary آبجکت ها مفیده و روش دوم در پیدا کردن Shape اونها .. امــا تنها نکته ای که لازم هست در این دو روش به اون فکر کنیم این هست که مفهوم Threshold رو چگونه با عددهای به دست آمده تعریف کنیم (تعیین کنیم/بیان کنیم) .. اینها احتیاج به آزمایش بر روی دسته ای از تصاویر داره و تلفیق چند ایده .. در مورد kernel فیلتر Meidan : اندازه ی 3 تا 4 یک اندازه ی محبوب (!) هست و معمولا برای کاربردهای مختلف میتوینم به اون اعتماد کنیم .. kernel موفولوژی هم به همین ترتیب (معروف به کرنل "+" یا Plus).. مستقل از سایز تصاویر؛ به دلیل محبوبیت و استقبال خوب، از اونها استفاده کردیم .. در مورد عدد 50 در bwareaopen هم این استدلال رو میشه مطرح کرد که هر آبجکت در تصاویر شما؛ حداقل 50 پیکسل رو دارا هست (--جدای از موارد نادر--) .. بنابراین هدف این (به نوعی) کرنل باز هم نویزهای روی تصویر هست .. امید که مطالب این پست بتونن مفید باشن .. پیروز باشید ..
    دوستان! مدتی کمتر به سایت میام ..

    دیدگاه


      #32
      پاسخ : حذف Backgrond از تصویر

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

      به نظر میرسه آبجکت مورد نظر 2 ویژگی خاص داره!
      1- رنگ سرش با بقیه جاها فرق میآ‌کنه
      2- تقریبا مثلث شکله!

      حالا از این 2 ویژگیآ‌ چه استفادهآ‌ای میتونیم بکنیم؟

      1- 3 گوشهآ‌ی مثلث و پیدا میآ‌کنیم و با یه چیزی مثل circle مشخصش میآ‌کنیم
      2- یدونه از این circle ها با بقیه فرق میکنه چون سر پروانه ست ... یه طوری مشخصش میآ‌کنیم..مثلا رنگشو عوض میآ‌کنیم... اسمشو از این به بعد میذآ‌اریم header !
      3- گوشهآ‌ی سمت چپ، پایین کادر رو نقطه (0,0) در نظر میگیریم..یعنیآ‌ مبدا
      4- از تمامآ‌ circle ها به این نقطه(0,0) یه خط رسم میآ‌کنیم
      5- الان کافیه که زاویه ی circle های رنگیآ‌ با خط افقی رو به دست بیاریم
      6- الان یه سوالِ مهم پیش میاد...اینکه direction پروانهآ‌ها هم براتون مهمه یا نه؟ یعنیآ‌ آیا میخواین زاویه شونو با توجه به جهتشون پیدا کنید یا نه؟

      اگه مهمه که ...فکر میآ‌کنم بهترین کار detect کردن خطیه که 2 بال پروانه رو از هم جدا میآ‌کنه

      منتظر جوابتون هستم تا ادامه بدیم..

      دیدگاه


        #33
        پاسخ : حذف Backgrond از تصویر

        سلام آقا حسام الدین و نگین خانوم بسیار ممنون از راهنماییتون و وقتی که برام گذاشتین.
        آقا حسام الدین در مورد پردازش رنگی تصویر حق با شماست کانالهای رنگی بسیار سودمند هستند برا تصاویر از این نوع مثلا من تو یه مقاله دیدم همین نوع مشکلو با کانال X_Y_Z با یه چینش خاصی حل کرده بودو جواب خوبی هم گرفته بود.
        ولی من مساله ام را باید با مورفولوژی و ترشهلدینگ حل کنم.
        هفته گذشته کلا روی بدست آوردن شعاع پروانه ها از روی شکل بصورت اتوماتیک کار کردم و یه نتیجه خوبی که گرفتم استفاده از روش Granulometry است.
        http://www.mathworks.com/products/im.../ipexsnow.html
        پس در برنامه ام که به صورت باز کردن شکل با دیسک با شعاع پروانه ها و سپس کم کردن اون از شکل اصلی بود مشکل شعاعو حل کردم.
        کد:
        %background elimination
        clc
        clear
        rgb=imread('19.jpg');imtool(rgb)
        g=rgb2gray(rgb);%imtool(g)
        mea=mean(g(:))
        r=10
        o= imopen(g,strel('disk',2*r));%imtool(o) 
        t= imsubtract(g,o);%imtool(t)
        m= medfilt2(t,[7 7]);%imtool(m)
        h=graythresh(m)
        bw=im2bw(m,h+.1);%imtool(bw)
        i=bwareaopen(bw,r^2);imtool(i,[0 1])
        اما در مورد ترشهلدینگ در برنامه از تابع graythresh برای مقدار آستانه استفاده کردم و در تابع باینری کننده این مقدار را با یه مقدار دیگه که از -0.1 تا0.2 با توجه به روشنایی تصویر و روشنی رگبرگها جمع کردم.که با این کار جواب بسیار خوبی برای تمامی شکلها می گیرم.
        حالا برای اتومات کردن این پارامتر به مشکل برخورد کردم
        کاری که این پارامتر انجام می ده حذف رگبرگهای بسیار روشن از تصویر هست که روشنیشون از آستانه بیشتره ولی بازم از شدت نور پروانه ها در مجموع کمتره.
        می شه به جای حذف این رگبرگها با استفاده از این پارامتر مثلا بعد از باینری کردن تصویر ساختار های بلند اونو حذف کرد که مثلا اگه چند پروانه به هم چسبیده داشته باشیم یا پروانه چسبیده به رگبرگ دچار مشکل می شیم.
        پس تا جایی که من روش فکر کردم بهتره همون از مشخصات شدت نور استفاده کنیم.
        مثلا بعد از اینکه از تابع im2bw با آستانه gray thresh استفاده کردیم دوباره قسمتهای سگمنت شده را باهم در نظر بگیریم و یه بار دیگه خاکستری کنیم و روش دوباره ترشهلد بگیریم.(امتحانش نکردم!)
        یا مثلا شکلها رو از اول قبل از آستانه گیری یه جورایی تنظیم کنیم که آستانه برای همشون یه مقدار بشه.(نمی دونم عملی هست یا نه!)
        آقا حسام الدین این روش آستانه گیری که توضیح دادین را میشه یه کم باز ترش بکنین یا یه منبعی بدین که من مطالعه کنم فکر می کنم خیلی به دردم می خوره. بنظرتون چطور می شه این مشکلو حل کرد من زیادتو زمینه کار با هیستوگرام و داینامیک ترشهلدینگ دیدی ندارم. ممنون می شم کمکم کنین.
        نگین خانوم در مورد زاویه هم در فاز بعدی که مشکل اولمون حل شد انشالا با کمکتون بررسی می کنیم ممنون ایده خیلی خوبی بود.
        ببخشید که دیر جوابتونو دادم داشتم روش فکر می کردم.
        باز هم سپاس فراوان

        دیدگاه


          #34
          پاسخ : حذف Backgrond از تصویر

          سلام ..

          در مورد بحث Threshold داینامیک (منعطف)، در ابتدا شاید مطالعه ی ایـن Survey بتونه مفید باشه .. بعلاوه؛ یکی از مقالات خیلی کلاسیک در این زمینه ایـن مقاله هست که در اون به بررسی چند روش خاص با شرایط متفاوت پرداخته شده که میتونه امیدوارانه کمکتون کنه .. در طرف دیگه؛ استفاده از الگوریتم Otsu که در یک تاپیک دیگه هم در اون مورد خیلی خلاصه صحبت کرده بودیم یا استفاده از ایده ی مرسوم Integral Image میتونن به نوعی به کمک ما بیان، برای پیدا کردن Threshold مناسب برای تصویر .. برخی از ایده های Clustering و یا Histogram Analysis هم میتونن به نوعی برای این هدفی که دنبال میکنید، مفید باشن با این شرط که اطلاعات و نوع تصاویر شما بتونن با موارد به کار رفته در مقالات ذکر شده، هم ریخت باشن (--از نظر ساختار پیکسلی--) .. استفاده از منطق و ایده ی Entropy و یا Minimum Error هم میتونه مسیر دیگه ای باشه که برای فکر کردن به اون قدم میتونیم بذاریم .. بعلاوه؛ ایده ی به کار رفته در ایـن مقاله یا موراد مشابهی که در Background Subtraction به اون فکر میکنیم هم میتونن برای Thresholding مفید باشن .. از طرفی؛ ایـن فایل Tutorial که در مورد Multivariate Histogram Analysis هست هم میتونه به نوعی سودمند باشه برای کار شما؛ هرچند که کاربردی که داره؛ از تصاویر مرسومی که در پردازش تصویر با اونها کار میشه، کمی به دور هست .. مطالبی هم که در ایـن مقاله مطرح شدن؛ کمی نگاهشون با فایل های قبل فرق میکنه که شاید خوب باشه اگر به اون هم نگاه گذرایی بندازید .. امــا در مورد پیاده سازی: در انتهای ایـن صفحه؛ چند نمونه پیاده سازی های مرتبط با هدف شما قرار دارن که میتونن امیدوارانه مفید باشن .. یکی از اونها؛ پیاده سازی مقاله ی معروف Minimum Error Thresholding هست .. از کتابخانه ی Auto Threshold هم میتونید استفاده کنید که برخی از الگوریتم های معروف در زمینه ی Thresholding رو پیاده سازی کردن (--فایل Documentation اونها رومیتونید گذرا بررسی کنید--) .. و در انتها هم، بحث و گفتگوهای مطرح شده در ایـن آدرس شاید بتونن براتون مفید باشن .. به این دلیل که اشاره کرده بودید که لازم هست حتما این مساله با Morphology و ایده های Thresholding حل بشه؛ این پست کمی از فایل ها و مقالات لبریز شد! دلیلش هم بررسی ایده های مختلف و تست اونها هست .. تا اونجایی که امکانش بود؛ تلاش کردم که فایل ها و ایده های مرتبطی باشن تا باعث انحراف و/یا اتلاف زمان نباشن .. پیروز باشید ..
          دوستان! مدتی کمتر به سایت میام ..

          دیدگاه


            #35
            پاسخ : حذف Backgrond از تصویر

            آقا حسام الدین ممنونم بسیار بسیار مطالب خوب و بجایی بود در حال بررسی آنها هستم
            یه سوال کلا میشه راجع به پلاگین در متلب توضیح بدین و اینکه اون کتابخانه اتو ترشهلد را چطور میشه به برنامه هاش در متلب دسترسی پیدا کرد؟

            دیدگاه


              #36
              پاسخ : حذف Backgrond از تصویر

              سلام ..

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


              نـتـیـجـه ی اعـمـال دسـتـورات

              با توجه به پارامترهای به خصوصی که برای این دستور قابل تنظیم هستن؛ میتونیم نوع Distribution یا ضرایب مختلف اونها رو تغییر بدیم که میتونن در تعیین نتیجه ی نهایی تصویر خیلی موثر باشن .. بعلاوه؛ بعد از این مرحله؛ میتونیم از توابع ضمیمه شده در انتهای این پست؛ که همگی از روش های متداول برای thresholding هستن؛ هم استفاده و با کنار هم قرار دادن این دو؛ تصویر باینری نهایی رو برای ورود به Morphology آماده و مهیا کنیم .. برخی تصاویر رو با این توابع تست کردم و بعضی از اونها (--توابع--) Threshold های بسیار خوبی برای تبدیل تصاویر Modify شده (--تغییر یافته با استفاده از دستورات بالا--) به تصاویر باینری مرتبط با کاربرد شما؛ منعکس میکنن .. امید که این مطالب بتونن کمکتون کنن .. بعلاوه؛ مرور ایـن صفحه هم میتونه به نوعی سودمند باشه .. برای توابع به کار رفته در Auto Threshold هم فکر کنم مرور رفرنس های اونها، بهترین روش ممکن باشه .. (--آسان تر از بررسی کدهای جاوا هست! --) .. پیروز باشید ..
              فایل های پیوست شده
              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


                #37
                پاسخ : حذف Backgrond از تصویر

                سلام
                آقا حسام الدین ممنون از کمکهای بی دریغتون خیلی کمکم کرد الحمدلله کارو جمع کردم
                روشم به اینصورت شد که:
                1- توسط روش دانه سنجی شعاع پروانه ها رو محاسبه کردم
                2-تبدیل TOPHAT را برای روشنتر شدن پروانه ها و جدا کردن آنها از پس زمینه استفاده کردم
                3-برای هموار کردن تصویر tophat شده فیلتر میانگین استفاده کردم.
                4-ترشهلد گلوبال مینیمم را روی شکل اعمال کردم تا پروانه ها کامل از پس زمینه جدا بشن
                5- 60درصد پیکسلهای بالایی رو توی بخش سگمنت شده بالا انتخاب کردم تا پروانه های به هم چسبیده جدا بشن.
                7-عملیاتهای مورفولوژی را برای حذف پارتیکلهای کوچک و پر کردن سوراخهای شکل بکار بردم.
                انشالله همیشه موفق و پاینده باشین

                دیدگاه


                  #38
                  پاسخ : حذف Backgrond از تصویر

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

                  دیدگاه


                    #39
                    پاسخ : حذف Backgrond از تصویر

                    سلام ..

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

                    نوشته اصلی توسط mori.f
                    سلام. با تشکر از راهنمایی های مفیدتون.پروزه من تشخیص انسان تو داده های ترافیکی.یه فلوچارت کاملی که ترتیب کارایی که باید انجام بشه بهم بگه میخواستم..ممنون
                    فایل های پیوست شده
                    دوستان! مدتی کمتر به سایت میام ..

                    دیدگاه

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