ترکیب تصاویر در متلب — Image Stitching در متلب بدون استفاده از همبستگی
در این مقاله کدهای مربوط به ترکیب تصاویر با متلب به صورت افقی و عمودی ارائه و توضیحاتی پیرامون چگونگی پیوند تصاویر یا همان Image Stitching در برنامه نویسی متلب شرح داده شده است.
ترکیب تصاویر چیست ؟
در تعریف ویکیپدیا بیان شده است که ترکیب تصاویر (پیوند تصاویر | Image stitching) فرآیندی از ترکیب چندین تصویر به همراه چند میدان دید (Field of View) همپوشانی شده یا بدون همپوشانی میدان دید محسوب میشود. از ترکیب تصاویر برای ایجاد یک پانورامای تقسیم شده (Segmented Panorama) یا یک تصویر با کیفیت بالا (High-Resolution) استفاده میشود. تقریباً اکثر روشهای ترکیب تصاویر که به طور معمول از طریق استفاده از نرم افزارهای کامپیوتری انجام میشوند، نیاز به همپوشانی بین تصاویر و انجام نورگیریهایی (Exposure) برای تولید نتایج یکپارچه و بدون نقص وجود دارد.
- مقاله پیشنهادی: پانوراما در فتوشاپ (+ دانلود فیلم آموزش گام به گام)
چرا ترکیب تصاویر با متلب آسان است؟
فرآیند ترکیب تصاویر با متلب نیز به سادگی قابل انجام است؛ چرا که یک تصویر، ماتریسی از اعداد صحیح (Integer) به حساب میآید و متلب هم مختص انجام عملیات و محاسبات ماتریسی است. ترکیب تصاویر یک مسئله ساده کار با ماتریسها به حساب میآید. در صورتی که اطلاع از نحوه انجام تغییرات و محاسبات ماتریسی وجود داشته باشد، میتوان به سادگی ترکیب تصاویر در متلب را انجام داد.
نکته: در رویکرد ارائه شده برای ترکیب تصاویر در این مقاله از همبستگی (Correlation | وابستگی) قطعات عکس برای پیوند استفاده نشده است. بنابراین، در صورتی که همپوشانی میان محتوای تصاویر ترکیب شده وجود داشته باشد، منجر به مخدوش شدن تصویر خواهد شد؛ چرا که حاوی تکرار در تصاویر خواهد بود.
- مقاله پیشنهادی: ترکیب کردن تصاویر در فتوشاپ (بخش اول) — آموزک [ویدیوی آموزشی]
ترکیب تصاویر در متلب
برای شروع فرآیند ترکیب تصاویر در متلب ابتدا باید یک تصویر را انتخاب کرد. در این آموزش، تصویری از رشتهکوههای هیمالیا به کار گرفته شده است:
اکنون تنها با هدف آزمایش و تحقیق، تصویر فوق به دو بخش تقسیم شده است و در ادامه سعی خواهد شد تا ترکیب این دو قطعه عکس در متلب برای ایجاد منظره «دید وسیع» (سرسرا نما | Panoramic) رشته کوههای هیمالیا انجام شود.
هر یک از دو بخش قطعه شده تصویر اصلی در ادامه ملاحظه میشوند. قطعه تصویر سمت چپی با نام ۱p.jpg در کدهای متلبی که در ادامه آمدهاند به صورت زیر است:
بخش سمت راستی تصویر اصلی هم در کدهای متلب با نام ۱q.jpg شناخته میشود و در ادامه ملاحظه میشود:
حالا زمان آن فرا رسیده است تا کدهای متلب مورد نیاز برای ترکیب این دو قطعه تصویر یا پیوند آنها به صورت دلخواه نوشته شوند.
کدهای متلب برای ترکیب تصاویر به صورت عمودی
کدهای متلب برای زمانی که قصد ترکیب تصاویر به صورت عمودی در متلب وجود داشته باشد در ادامه ملاحظه میشوند:
clc
close all
clear all
a= imread('1p.jpg'); %read the left part of the image
b=imread('1q.jpg'); %read the right part of the image
sa= size(a); %get the size of the left image
sb = size(b);%get the size of the left image
b= imresize(b,[sa(1) sa(2)]); %now resize 'b' as per the size of 'a' in order to get perfect sized image
c= [a;b]; % club the image a & b into another new image after making their size same
%note the semicolon in the above line inside bracket
imshow(c) % show the image
نتیجه اجرای کدهای فوق در ادامه آمده است:
نکته: تصویر «b» مطابق با تصویر «a» تغییر اندازه داده شده است. میتوان عکس این کار را هم انجام داد و منعی وجود ندارد. به خصوص این مسئله منجر به ایجاد اعوجاج در حالتی میشود که تفاوت بسیار زیادی در اندازه عکسهای ترکیب شده وجود داشته باشد.
نکته: در صورتی که نیاز باشد تصویر ۱p.jpg به جای ۱q.jpg در بالا قرار بگیرد، فقط باید متغیرها را در خط یکی مانده به آخر با هم جابهجا کرد. یعنی c= [a;b] به c= [b;a] تغییر میکند.
کدهای متلب برای ترکیب تصاویر به صورت افقی
کدهای متلب برای زمانی که قصد ترکیب تصاویر به صورت افقی در متلب وجود داشته باشد در ادامه آمده است:
clc
close all
clear all
a= imread('1p.jpg'); %read the left part of the image
b=imread('1q.jpg'); %read the right part of the image
sa= size(a); %get the size of the left image
sb = size(b);%get the size of the left image
b= imresize(b,[sa(1) sa(2)]); %now resize 'b' as per the size of 'a' in order to get perfect sized image
c= [a b]; % club the image a & b into another new image after making their size same
%note the missing semicolon in the above line inside bracket
imshow(c) % show the image
تصویر حاصل شده پس از اجرای کدهای فوق به صورت زیر خواهد بود:
نکته: در صورتی که قصد جابهجایی تصویر ۱p.jpg با ۱q.jpg برای پیوند وجود داشته باشد، تنها کافی است تا باز هم جای متغیرهای مربوطه در خط یکی مانده به آخری تغییر داده شود. یعنی، c= [a b] به c= [b a] تغییر میکند.
جمعبندی
در این مقاله نحوه ترکیب تصاویر در متلب شرح داده شد. ابتدا توضیحاتی در خصوص چیستی ترکیب تصاویر یا همان Image stitching ارائه شد. همچنین به این مسئله اشاره شد که با توجه به ماهیت متلب و نحوه پیادهسازی آن، این نرم افزار برنامه نویسی برای انجام محاسبات ماتریسی عملکرد مطلوبی را از خود نشان میدهد. سپس، کدهای مربوط به ترکیب دو قطعه تصویر به دو روش عمودی و افقی ارائه و تصاویر نتیجه برای اجرای کدها نیز نمایش داده شدند.
اگر این مطلب مفید واقع شده است، استفاده از دورههای آموزشی و مطالب زیر نیز پیشنهاد میشوند:
- مجموعه دورههای آموزش نرم افزار متلب (MATLAB)
- دوره آموزش آموزش پردازش تصویر در متلب
- مجموعه دورههای آموزش نکات و ترفندهای نرم افزار متلب (MATLAB)
- پردازش تصویر در متلب — راهنمای جامع
- پردازش تصویر با پایتون — راهنمای کاربردی
- تبدیل هاف (Hough Transform) در پردازش تصویر — از صفر تا صد
- ضریب همبستگی (Correlation Coefficients) و شیوه محاسبه آنها — به زبان ساده (+دانلود فیلم آموزش رایگان)
منبع [+]
مجموعه: برنامه نویسی متلب, پردازش تصویر, پردازش تصویر و سیگنال برچسب ها: Image Stiching, Image stitching in Matlab, Image stitching with Matlab, Matlab, stitching Images, stitching Images in matlab, آموزش پردازش تصویر, آموزش پردازش تصویر در متلب, آموزش متلب, ادغام تصویر در متلب, الصاق تصاویر در متلب, پردازش تصویر, پروژه پیوند تصویر با متلب, پیوند تصاویر با متلب, پیوند تصاویر در متلب, ترکیب تصاویر با متلب, ترکیب کردن تصاویر با متلب, دوختن تصاویر در متلب, فیلم آموزش پردازش تصویر, فیلم آموزش متلب, متلب, معرفی فیلم های آموزش پردازش تصویر, معرفی فیلم های آموزش متلب
تا الان هرچی خوندم بدرد بخور بوده
محتوای بسیار عالی و خوب بود و موفق باشید و خسته نباشید
بسیار عالی بود و موفق باشید و خسته نباشید
بسیار عالی بودو موفق باشید و خسته نباشید
بسیار جذاب و خوب و جالب بود و موفق باشید