کار با تصاویر متوالی در متلب
در این مقاله می آموزید:
- مقدمه ای بر توابع جعبه ابزار متلب در زمینه ی کار با تصاویر متوالی
- مثالی در زمینه ی پردازش تصاویر متولی در متلب
- ماتریس های عکس چند فریمی
برخی از نرم افزارها، با مجموعه ای از عکس ها در طول زمان، کار می کنند. بعنوان مثال می توان فریم های یک فیلم یا فریم های یک عکس MRI را مثال زد، که این گونه کار می کنند. این مجموعه از عکس ها را عکس های متوالی می نامیم.
در نرم افزار متلب، توانایی ایجاد ماتریس ها ی N بعدی، یک راه مناسب برای ذخیره ی عکس های متوالی به حساب می آید. بعنوان مثال، یک ماتریس \(m\times n\times p\) می تواند یک آرایه از عکس های دوبعدی مثل عکس های سیاه و سفید یا باینری را ذخیره سازی کند. این موضوع در عکس زیر نشان داده شده است. همچنین یک ماتریس \(m\times n\times 3\) می تواند عکس های رنگی رادر خود ذخیره کند بطوری که هر عکس از سه لایه تشکیل شده باشد.
اکثر توابع جعبه ابزار، می توانند بر روی ماتریس های چند بعدی و به تبع آن بر روی عکس های متوالی کار کنند(عمل کنند). بعنوان مثال، اگر شما یک ماتریس چند بعدی را به تابع imtransform بدهید، این تابع تبدیلات دوبعدی مشابهی را بر روی تمام لایه های دوبعدی آن (در امتداد بعد بزرگتر)، اعمال می کند.
برخی از توابع جعبه ابزار متلب، که آرایه های چند بعدی را می پذیرند، به طور پیش فرض یک ماتریس \(m\times n\times p\) یا \(m\times n\times 3\) را بعنوان یک عکس متوالی در نظر نمی گیرند. برای اینکه بتوانید از این توابع در عکس های متوالی استفاده کنید، باید از سینتکس خاصی استفاده کنید و از دیگر محدودیت های آن توابع مطلع باشید.
در جدول زیر، لیستی از این توابع و راهنمایی هایی جهت استفاده از آنها در پردازش عکس های متوالی ارائه شده است.
ماتریس های عکس چند فریمی
جعبه ابزار متلب، حاوی دو تابع به نام های immovie و montage است. این توابع با یک نوع خاص از ماتریس های چند بعدی، که ماتریس های چند فریمی نامیده می شوند، کار می کنند. در این ماتریس، به عکس ها، فریم گرفته می شود. این فریم بعنوان بعد چهارم این نوع ماتریس ها مشخص می شود. ماتریس های چند فریمی، برای عکس های سیاه و سفید و ایندکس شده و باینری، به صورت \(m\times n\times 1\times p\) نمایش داده می شوند و برای عکس های رنگی(RGB) به صورت \(m\times n\times 3\times p\) نمایش داده می شوند به طوری که p مشخص کننده ی تعداد فریم ها است.
بعنوان مثال، یک ماتریس چند فریمی، که حاوی 5 عدد عکس سیاه و سفید یا ایندکس شده به صورت \(480\times 640\) باشد، به صورت \(480\times 640\times 1\times 5\) نشان داده می شود. و 5 عدد ماتریس عکس رنگی(RGB) که به صورت \(480\times 640\) باشند، به صورت \(480\times 640\times 3\times 5\) نشان داده می شوند.
نکته: برای پردازش یک ماتریس چندفریمی از عکس های سیاه و سفید، به صورت یک عکس متوالی، می توانید از تابع squeeze برای حذف بعد تکی، استفاده کنید.
شما می توانید از دستور cat برای ایجاد یک ماتریس چندفریمی استفاده کنید. بعنوان مثال دستور زیر، یک گروه از عکس ها(A1 و A2 و A3 و A4 و A5) را در یک ماتریس تکی ذخیره می کند.
$$A = cat(4,A1,A2,A3,A4,A5)$$
همچنین شما می توانید فریم ها(عکس ها) را از یک عکس چندفریمی، استخراج کنید. بعنوان مثال اگر شما یک عکس چندفریمی به نام MULTI داشته باشید، با استفاده از دستور زیر می توانید فریم(عکس) سوم را استخراج کنید:
$$FRM3 = MULTI(:,:,:,3)$$
توجه کنید که در یک ماتریس از عکس های چند فریمی، عکس ها باید سایز یکسانی داشته باشند و هر کدام از آنها باید تعداد لایه های یکسانی داشته باشند. همچنین در یک عکس چندفریمی از نوع ایندکس شده، عکس ها باید از نقشه ی رنگ یکسانی استفاده کنند.
- نوشته شده توسط احسان عباسی
- بازدید: 6188
دیدگاهها
با سلام
ببخشید من کد تابع invmoment با متلب نیاز دارم.اگز دارین لطفا بذارین.
ممنون
سلام. متاسفانه چنین کدی در اختیار ندارم.