اطلاعیه

Collapse
No announcement yet.

کانولوشن دو ماتریس .....

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

    کانولوشن دو ماتریس .....

    با سلام ... :smile:

    میخواستم بدونم دو ماتریس رو چه جوری داخل هم کانولوشن میکنیم ؟؟ و یه مثال در موردش ... و اینکه ماتریس حاصل چی رو نشون میده ؟؟؟ :(
    مصادیق اظهار محبت به همسر
    بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
    ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
    اثر قصه گویی برای کودکان

    #2
    پاسخ : کانولوشن دو ماتریس .....

    نوشته اصلی توسط _مریم زارع _
    با سلام ... :smile:

    میخواستم بدونم دو ماتریس رو چه جوری داخل هم کانولوشن میکنیم ؟؟
    فکر نکنم کانوالو برای ماتریسها تعریف شده باشه ، آخه دستور کانوالو توی متلب هم فقط بردار میگیره و ماتریس قبول نمیکنه
    ولی در مورد بردارها میشه گفت که دو برداری که قرار هست با هم کانوالو بشن رو میشه این جوری توجیه کرد که اگر یکی از این بردارها پاسخ ضربه یک سیستم گسسته در زمان باشه و بردار دیگر ورودی اون سیستمی باشه اون موقع حاصل کانوالو همون خروجی سیستم رو بهتون میده
    رابطه ش هم اینه
    http://dl.drelahi.net

    دیدگاه


      #3
      کانولوشن دو ماتریس .....

      با سلام .... :smile:

      با تشکر از پاسختون .... :agree:

      فکر نکنم کانوالو برای ماتریسها تعریف شده باشه ، آخه دستور کانوالو توی متلب هم فقط بردار میگیره و ماتریس قبول نمیکنه
      این که تعریف میشه هیچ شکی ندارم ...... توی متلب هم برای یه بعدی و هم دوبعدی تعریف میشه ....

      جدای این ها یه سری دیگه هم تابع برای کاولوشن هست ولی خوب نمی دونم برای چی هست !!!

      برای یه بعدی از تابع conv استفاده میشه ..... که خودش حالا سه حالت مختلف same ؛ full ؛ valid رو داره ...

      برای دو بعدی هم از تابع conv2 استفاده میشه .... که اون هم مثل بالا همون سه حالت رو داره ......

      من خودم از این توابع استفاده کردم ...ولی نتایج با محاسبات دستی ام فرق داره ...نمیدونم چه جوری هست

      بعضی وقت ها درست هست !!!!! بعضی وقت ها غلط میشه !!!!!!

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

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

      در هر صورت ممنون از پاسختون ...........

      مصادیق اظهار محبت به همسر
      بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
      ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
      اثر قصه گویی برای کودکان

      دیدگاه


        #4
        کانولوشن دو ماتریس .....

        با سلام .... :smile:

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

        در کل دو اصطلاح در این رابطه باید گفته بشه :
        کانولوشن یا پیچش :
        کارولیشن یا همبستگی :
        دو ماتریس میتونن با هم کانولوشن بکنیم یا با هم کارولیشن بشن ...هر دو یه مفهموم رو داره ...ولی در حالت اول یعنی کانولوشن فلیتر یا کرنل یا تمپلیت یا نقاب ( همه این اصطلاحات استفاده میشه ) ابتدا نقاب 180 درجه چرخیده میشه بعد کرنل رو روی تک تک پیکسل های ماتریس اصلی یا به عبارتی ماتریس تصویر اعمال میشه و خونه های متناظر در هم ضرب شده و در نهایت حاصل با هم جمع میشه و نتیجه در پیکسلی که کرنل به اون اعمال شده قرار میگیره در صورتی که در کارولیشن مرحله اول( یعنی چرخش 180 درجه ) اتفاق نمیفته ...و مستقیما خانه های متناظر کرنل و ماتریس اصلی در هم ضرب شده و در نهایت با هم جمع و جایگزین پیکسل مورد نظر میشود ..حالا سه حالت مختلف هم داره ....(که البته این موضوع در تابع imfilter فقط دو حالت full و same رو داره اما توی تابع imfilter2 هر سه حالت رو داره ) توی حالت same تصویر خروجی با وردی دقیقا هم اندازه هست ...در حالت vali تصویر خروجی از ورودی کوچیکتر هست این امر ناشی از این هست که دیگه zero padding اضافه نمیشه کرنل فقط به پیکسل هایی از تصویر اصلی اعمال میشه که ازماتریس تصویر بیرون زدگی نداشته باشه و در full تصویر خروجی از ورودی هم بزرگتر هست این امر از این ناشی میشه که مثلا اگه شما برا ی مشکل مرز ها از حالت مثلا zero padding استفاده کنید(البته حالت های دیگه هم داره این رایج تر هست ) توی حالت full نقاب روی صفرهایی هم که اضافه شده اعمال میشه البته تنها اون صفر هایی که نفاب از تصویر اصلی بیرون زدگی نداشته باشه ....ولی توی حالت same کرنل فقط به پیکسل های تصویر اعمال میشه نه اونی که اضافه کردیم ...
        توی متلب برای کانولوشن ماتریس از تابع conv2 ؛ conv ؛ convn استفاده میشه اولی برای کانولوشن دوبعدی ...دومی برای کانولوشن یک بعدی و سومی برای کانولوشن n بعدی استفاده میشه ...
        در رابطه با پیکسل مرکزی کرنل هم باید بگم توی کانولوشن یا کارولیشن هایی از رابطه زیر استفاده میشه :


        floor(([r c]+1)/2).

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

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

        این هم بگم در حالت پیش فرض imfilter از همون کارولیشن استفاده میکنه ....


        مصادیق اظهار محبت به همسر
        بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
        ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
        اثر قصه گویی برای کودکان

        دیدگاه

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