اطلاعیه

Collapse
No announcement yet.

تشخیص اشیا از درون تصاویر دوبعدی...

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

    تشخیص اشیا از درون تصاویر دوبعدی...

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

    من میخوام برنامه ای بنویسم که تصویر یه شیئ رو که به صورت دوبعدی هست رو در یه تصویر مرجع که اون هم دوبعدی هستش رو تشخیص بده و ویژگیهاش رو (از جمله مکانش در تصویر و نسبت اندازه اون به تصویر ورودی) به ما بده.

    خودم مراحل نوشتن این برنامه رو به این صورت در نظر گرفتم:
    1- بهینه سازی تصاویر
    2- تشخیص اشیاء مختلف تصویر
    3- پیدا کردن نقاط ثقل اشیاء
    4- پیدا کردن بردارهای ویژه اشیاء
    5- چرخاندن اشیاء حول نقطه ثقل برای انطباق با بردارهای ویژه
    6- بردن تصاویر مورد مقایسه به یک سایز استاندارد
    7- تطابق و مقایسه دو شیء از طریق همبستگی و یا روشهای دیگر و پیدا کردن درصد تشابه

    حالا سوال من این هستش که آیا من این مراحل رو درست در نظر گرفتم یا خیر ؟

    اگه درسته هر کدوم رو چطور پیاده سازی کنم بهتره؟(البته خودم هم راههایی رو برای بیشتر موارد در نظر دارم)

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

    پیشاپیش از توجهتون کمال تشکر رو دارم. میبخشین که پر حرفی کردم !
    :nerd:
    بیمار خنده های توام بیشتر بخند
    خورشید آرزوی منی گرمتر بتاب

    #2
    پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

    سلام دوست عزیز . در مورد مطالبی که نوشتی من یه راهنمایی هایی می تونم بکنم (تا اونجا که بلدم) و بقیش رو هم که جناب نحوی استاد هستن توش و توضیح میدن .
    بهینه سازی تصویر ... این عنوانی که شما انتخاب کردی فکر کنم یه کم هیجان انگیز باشه!! چون بهینه سازی به سلسله فرآیند هایی میگن که طی اون عکس در اصطلاح از یه ویإ¾گی بارز برخوردار میشه مثلا روتوش عکس رو در نظر بگیر . اونجا کاری که انجام میشه اینه که یه معیار کیفیت به عکس اضافه می کنن و در واقع بدون دخالت در قالب عکس ، ظاهر و ویإ¾گیش رو تغییر میدن پس میشه این مرحله رو گذاشت برای آخر سر . اما احتمالا منظورتون از این عبارت تبدیل عکس به فرمت مناسب برای اعمال عملیات محاسباتی و تصمیم گیری بوده . بله در ابتدا باید فرمت عکس رو به فرمتی که بشه عملیات رو روش انجام دد تبدیل می کنیم . مثلا باینری یا double .
    تشخیص اشیاء مختلف تصویر ... این بخش روش های متنوعی داره اما از عمده تریت روش میشه به لبه گیری اجسام اشاره کرد . یعنی در ابتداء امر ، شما باید از تصاویر داخل عکستون لبه گیری کنید تا محدوده ی عکساتون مشخص بشه برای این کار هم الگوریتم های جالبی وجود داره که میشه از اونا به sobel و canny اشاره کرد . این مرحله شاید از مهم ترین مراحل پردازش باشه چون اساس مراحل دیکه هم همینه .
    پیدا کردن نقاط ثقل ... خب این مرحله بر یک اصل استواره اونم اسکن صحیح تصویره . یعنی این که روال برنامت رو باید طوری بنویسی که تصویری که الان توی محدوده ی مشخص دور گیری شده به دقت نقطه یابی بشه(تصویرت الان باینریه) و بعدش ای نقاط شمرده بشن و بر حسب موقعیت از ردیف های X و Yآ‌ دوتا مختصات ثقل به دست بیاریم و بعد هم این مختصات تا حدود زیادی میشه مرکز ثقل . حالا هرچی دقت برنامه بیشتر باشه ، نقطه ی به دست اومده دقیق تره .
    باقیش هم به همین ترتیبه و باید یه سری بردار تعریف کنی که اونا زیاد سخت نیستن و می تونی با تناظری مناسب ، بردارهای ویژه ی مطلوبی به دست بیاری .
    دو مورد آخر هم که روال خاص خودشونو دارن .
    اولی که بر اساس میانگین گیری از پیکسل ها محاسبه میشه یعنی برای بزرگ کردن سایز می تونید از پیکسل ها میانگین بگیری و تعداد دو برابر شده رو(در صورت 2X شدن تصویر) نمایش بدی و برای کوچک کردن عکس هم باید به تناسب هر X پیکسل رو مینگین بگیری و مقدار میانگین رو جایگزین کنی .
    دومی هم که یه مقایسه بیت اتریس های باینری به دست اومده در مرحله ی سومه . امیدوارم تونسته باشم کمکی کرده باشم .


    [hr]مرا عهدیست با جانان که تا جان در بدن دارم هوا خواهان کویش را چو جان خویشتن دارم
    دوستان! مدتی کمتر به سایت میام ..

    دیدگاه


      #3
      پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

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

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

      یک نکته که ذهن منو مشغول کرده محیط بودن یک شیء به شیء دیگه هستش ولی فعلا اهمیت چندانی نداره و فرض ما عدم وجود چنین مطلبی هست !

      حالا این روال به نظر شما درسته ؟
      و اینکه اگه میشه در مورد پیاده سازیش با Matlab منو راهنمایی کنین چون من تا حالا با این نرم افزار میشه گفت کار نکردم .

      ممنون ... :bye
      بیمار خنده های توام بیشتر بخند
      خورشید آرزوی منی گرمتر بتاب

      دیدگاه


        #4
        پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

        با سلام و درود ؛
        دوستان به جز مطالبی که عنوان شد درباره تبدیل هتلینگ و پیاده سازی اون و یا چیزی شبیه به این تبدیل (که کاری مشابه هتلینگ رو انجام بده) میتونین کمک کنین ؟

        با تشکر !
        بیمار خنده های توام بیشتر بخند
        خورشید آرزوی منی گرمتر بتاب

        دیدگاه


          #5
          پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

          سلام.
          دوستان ببخشید من این هفته امتحان داشتم فرصت نکردم وارد بحث بشم، به زودی میام با هم بحث رو ادامه بدیم
          شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
          هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
          چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

          دیدگاه


            #6
            پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

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

            قدم اول تصویر اصلی رو داریم یه تصویر با همون ابعاد جاهای مختلف تصویر بذارید، برنامه ای بنویسید که بتونه این شی رو از تصویر جدا کنه و با شی مرجع مقایسه کنه.
            قدم بعدی سایزش رو تغییر بدید.
            قدم بعدی جهتش رو تغییر بدید
            و آخر هم هر دو با هم. اینطوری همزمان هم کار پیش میره هم ایده میدیم برای قدم های بعدی
            شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
            هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
            چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

            دیدگاه


              #7
              پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

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

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

              با تشکر!
              بیمار خنده های توام بیشتر بخند
              خورشید آرزوی منی گرمتر بتاب

              دیدگاه


                #8
                پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

                با سلام و احترام ؛
                همونطور که قرار شد ، کار رو تکه تکه انجام میدیم.و این هم تا به اینجا :

                تا اینجا تونستم که اشکال رو به صورت جداگانه و با با مرزهای مشخص از هم تفکیک کنم . که روال اون هم به این صورت بوده که بعد از gray کردن و تشخیص لبه ها ، نویز و اضافات تصویر رو با استفاده از اعمال مورفولوژیک imopen و imclose حذف کردم و بعد با استفاده از imfill holes و همچنین boundaritrace اشیاء درون تصویر رو با مرزهای مشخص تفکیک کنم و تعداد اونها رو هم در دست داشته باشم .الان مشکل فعلی من در استخراج جداگانه اشیا هستش و نمی دونم که هر کدوم رو چطور میتونم جداگانه در دست داشته باشم ؟

                مثلا برای تشخیص اینکه این تصویر زیر درون کل تصویر هست یا نه باید دایره یا هر کدوم از اشیائ رو بتونم جداگانه از تصویر خارج کنم ( البته فعلا بدون در نظر گرفتن تبدیل هتلینگ و یا تغییر دادن سایز ) و بعد اون رو با تصویر مورد نظر تطابق بدم . البته عمل تطابق رو درون کل تصویر هم میشه انجام داد ولی به شرطی که تصویر چرخش و با تغییر سایز نداشته باشه . بعد هم باید بتونیم اطلاعات درخواستی رو به کاربر بدیم (مکان ، نسبت اندازه و درصد تشابه).


                حالا سوال من اینه که چطور باید box دربرگیرنده هر یک از اشیا رو به دست بیاریم ؟
                اگه این box رو داشته باشیم میتونیم مثلا با roipoly اون رو جدا کنیم و با تصویر مورد سوال مقایسه کنیم و درضمن مکان اون در تصویر رو هم داشته باشیم .
                آیا میتونیم این کار رو با دستور regionperpose انجام بدیم و اینکه آیا شما میدونین چطور با این دستور باید کار کرد ؟

                منتظر جوابهای خوبتون هستم !
                با تشکر !



                بیمار خنده های توام بیشتر بخند
                خورشید آرزوی منی گرمتر بتاب

                دیدگاه


                  #9
                  پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

                  چرا از رنگ کمک نمیگیری؟

                  دیدگاه


                    #10
                    پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

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

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

                    دیدگاه


                      #11
                      پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

                      با سلام و احترام ؛
                      خوب تا کجا رفته بودیم ؟ تا جایی که اشیائ رو جداگونه از هم تشخیص دادیم و البته با مرزبندی مشخص اونها رو تفکیک کردیم .

                      "حالا سوال من اینه که چطور باید box دربرگیرنده هر یک از اشیا رو به دست بیاریم ؟
                      اگه این box رو داشته باشیم میتونیم مثلا با roipoly اون رو جدا کنیم و با تصویر مورد سوال مقایسه کنیم و درضمن مکان اون در تصویر رو هم داشته باشیم .
                      آیا میتونیم این کار رو با دستور regionperpose انجام بدیم و اینکه آیا شما میدونین چطور با این دستور باید کار کرد ؟"
                      این سوالهای مطرح شده خودم هم برام مشکلی شده که خودم باید راه رو پیدا کنم !
                      من برای پیدا کردن محدوده دربرگیرنده اشیا از شیوه زیر استفاده کردم که اشیا تصویر بدون نویز و البته باینری رو با bwlabel(تصویر) label دادم و بعد با دستورregionprops(L, 'basic&#039I برخی از مشخصات اشیا مشخص شده رو از جمله مرکز و محدوده اشیا رو به دست آوردم و بعد با استفاده ازimcrop()I اون محدوده ها رو میشه استخراج کرد !

                      کد:
                      L = bwlabel(bw);
                      s = regionprops(L, 'basic');
                      c = cat(1, s.BoundingBox);
                      =========================
                      s(1).BoundingBox
                      
                      ans =
                      
                        6.5000  77.5000  61.0000  58.0000
                      =========================
                       I2 = imcrop(b,[6 77 61 58]);I
                      حالا رسیدیم سر تبدیل هتلینگ و همراستا کردن اشیا با محورهای xو y.
                      این دو تا pdf مطالبی در این مورد نوشته ولی من درست متوجه نشدم چی گفتن ! اگه میشه اینبار هم به من (نه مثل پیش از این ) کمک کنین و راهنمایی کنین که این همراستا کردن چطور باید صورت بگیره !

                      Hotelling 01 , Hotelling 02 (PDF)

                      البته مساله بعد از این مساله همسایز کردن یکه دو شیء مورد بررسی ورودی و تفکیک شده از درون تصویر هستش که اگه راه حلی برای اون میدونین ؛ بیان کنین !

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

                      دیدگاه


                        #12
                        مشکل با eig ...

                        با سلام
                        دوستان در یکی از قسمتهای پروژه به مشکلی برخوردم که نمیدونم به چه علت هست و چطور باید رفعش کنم !

                        من با استفاده از دستور eig بردار ویژه ماتریس مربعی که حاصل از گرفتن cov هستش رو میخوام به دیت بیارم ولی به این خطا برخورد میکنم :

                        f=eig(C);
                        ??? Subscript indices must either be real positive integers or logicals.
                        دوستان شما میدونین مشکل از کجاست؟
                        منتظر جواب شما هستم .
                        با تشکر...
                        بیمار خنده های توام بیشتر بخند
                        خورشید آرزوی منی گرمتر بتاب

                        دیدگاه


                          #13
                          پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

                          سلام.
                          فکر میکنم به خاطر نوع داده ای هست.
                          دستور
                          C=double(C)
                          رو بنویسید بعدش eigآ‌ بگیرید ببینید درست میشه یا نه
                          شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ‌ي جهاد فيآ‌سبيلآ‌الله.
                          هجرت، هجرت از سنگينيآ‌هاست و جاذبهآ‌هايي كه تو را به خاك ميآ‌چسباند.
                          چكمهآ‌هايت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت كن.

                          دیدگاه


                            #14
                            پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

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

                            دیدگاه


                              #15
                              پاسخ : تشخیص اشیا از درون تصاویر دوبعدی...

                              با سلام؛
                              مشکل eig رو که توپست قبلی گفته بودم حل شد البته با استفاده از eigs که همون کار eig رو البته بدون اون مشکل انجام میده.

                              با این حساب نیمی از مشکل تبدیل هتلینگ برطرف شده و مونده پیدا کردن زاویه بین بردار ویژه پیدا شده با محور xها و چرخش شکل به اندازه همون زاویه که من تا به اینجا نتونستم انجامش بدم !
                              البته مشکل دیگه ای هم که به قوت خودش باقی هستش همون مشکل تغییر سایز اشکال هست که بعد از این بررسی میشه .
                              منتظر راهنمایی شما دوستان هستم .
                              با تشکر...
                              بیمار خنده های توام بیشتر بخند
                              خورشید آرزوی منی گرمتر بتاب

                              دیدگاه

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