انطباق تصاویر در متلب و پردازش تصویر

چاپ

در این فصل، به تشریح و توضیح قابلیت انطباق تصاویر(image registration) در نرم افزار متلب می پردازیم. 


 انطباق دادن یک تصویر در نرم افزار متلب

 تعریف: به فرآیند تراز کردن دو یا چند عکس که از یک صحنه گرفته شده اند،انطباق تصاویر گفته می شود. 

در انطباق تصاویر، معمولا یک عکس پایه(عکس مرجع) در نظر گرفته می شود و سپس دیگر عکس ها که آنها را عکس ورودی می نامیم، با آن عکس مورد مقایسه قرار می گیرند. 

 منظور از انطباق دادن این است که با انجام تبدیلات فضایی بر روی عکس ورودی، کاری کنیم که این عکس با عکس پایه(مرجع) هم تراز شود. 

 یک تبدیل فضایی،درواقع  موقعیت های درون یک عکس را با موقعیت های درون یک عکس دیگر مورد بررسی قرار می دهد و ترسیم می کند. 

 


انتخاب نقاط

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

همان طور که در تصویر زیر مشاهده می کنید، فرآیند انجام کار نشان داده شده است:

 


مثال: تطابق دادن یک تصویر در نرم افزار متلب

در مثال زیر، سعی کرده ایم تا با استفاده از روش انتخاب نقاط(point mapping) دو تصویر را با یکدیگر تطابق دهیم. 

گام شماره 1: خواندن عکس ها در متلب

ما در این مثال از یک عکس به نام westconcordorthophoto.png استفاده می کنیم که در نرم افزار متلب از قبل تعبیه شده است و بصورت سیاه و سفید می باشد. همچنین عکسی که قرار آن را تطابق دهیم و تراز کنیم، westconcordaerial.png نام دارد، که یک عکس رنگی دیجیتال است و از قبل در نرم افزار متلب وجود دارد. 

همان طور که در مثال زیر مشاهده می کنید، این دو عکس را با استفاده از دستورات، در متلب می خوانیم و نمایش می دهیم: 

مثال(خواندن عکس ها در متلب)

orthophoto = imread('westconcordorthophoto.png');
figure, imshow(orthophoto)
unregistered = imread('westconcordaerial.png');
figure, imshow(unregistered)

 این تصاویر به صورت زیر خواهند بود:

 


گام شماره 2: انتخاب نقاط کنترل در عکس ها

جعبه ابزار متلب، یک ابزار تعاملی به ما ارائه داده است که نام آن ابزار Control Point Selection(انتخاب نقاط کنترل) می باشد. شما می توانید با استفاده از این ابزار نقاط متناظری را در هردو عکس انتخاب کنید. برای اینکه این ابزار شروع به کار کند، دستور cpselect را در متلب وارد کنید و بعنوان آرگومان اول و دوم، عکس ورودی و عکس پایه(مرجع) را به آن بدهید. درست مثل زیر:

مثال

cpselect(unregistered, orthophoto)

 ابزار Control Point Selection دو عکس مذکور را به ما نشان می دهد به طوری که می توانیم با کلیک کردن بر روی آنها، نقاط کنترل را انتخاب کنیم. تعداد نقاطی که باید انتخاب کنید، به نوع تبدیلاتی که می خواهید انجام دهید بستگی دارد. 

 


گام شماره 3: ذخیره کردن نقاط انتخاب شده در متلب

 در ابزار Control Point Selection بر روی منوی File کلیک کنید و گزینه ی Export Points to Workspace را انتخاب کنید.


گام شماره 4: تنظیم دقیق نقاط کنترل(اختیاری)

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


گام شماره 5: مشخص کردن نوع تبدیلات و پارامترهای آن

 در این گام، نقاط کنترل را به تابع cp2tform می دهیم. این تابع پارامترهای تبدیلات را به منظور تراز کردن عکس تعیین می کند و پارامترها را بصورت یک ساختار تبدیلی به نام TFORM برمی گرداند. 

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

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

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

مثال

mytform = cp2tform(input_points, base_points, 'projective');

 گام شماره 6: انطباق دادن تصویر

بعنوان گام نهایی، می خواهیم عکس ورودی را با عکس پایه تراز کنیم. برای انجام این کار از تابع imtransform برای انجام تبدیلات استفاده می کنیم و عکس ورودی و ساختار TFORM را به آن می دهیم. سپس تابع imtransform عکس تبدیل شده را برمی گرداند. 

مثال

registered = imtransform(unregistered, mytform);

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