ترکیب تصاویر در متلب — 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 ارائه شد. همچنین به این مسئله اشاره شد که با توجه به ماهیت متلب و نحوه پیاده‌سازی آن، این نرم افزار برنامه نویسی برای انجام محاسبات ماتریسی عملکرد مطلوبی را از خود نشان می‌دهد. سپس، کدهای مربوط به ترکیب دو قطعه تصویر به دو روش عمودی و افقی ارائه و تصاویر نتیجه برای اجرای کدها نیز نمایش داده شدند.

اگر این مطلب مفید واقع شده است، استفاده از دوره‌های آموزشی و مطالب زیر نیز پیشنهاد می‌شوند:

منبع [+]

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *