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

چاپ

در این مقاله که از سری مقالات پردازش تصویر در متلب می باشد، موارد زیر را آموزش خواهید دید: 

  1. مشخص کردن نقاط کنترل با استفاده از ابزار Control Point Selection 
  2. راه اندازی ابزار Control Point Selection
  3. استفاده از ابزارهای هدایتی برای کاوش در عکس ها
  4. مشخص کردن نقاط تطابق کنترلی(Matching Control Point Pairs)
  5. استخراج نقاط کنترل در Workspace

 مشخص کردن نقاط کنترل با استفاده از ابزار Control Point Selection

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

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

 1. نام ابزار cpselect را تایپ کنید و عکس ورودی و عکس پایه را به آن بدهید(بعدا توضیح داده خواهد شد). 

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

3. حالا نقاط تطابق کنترلی را در عکس ورودی و در  عکس پایه تعیین کنید. 

4. حالا نقاط کنترل را در workspace متلب ذخیره(save) کنید. 

تصویر زیر، ظاهر ابزار cpselect را نشان می دهد:


راه اندازی ابزار Control Point Selection

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

دستورات:

moon_base = imread('moon.tif');
moon_input = moon_base;
cpselect(moon_input, moon_base);

دستور cpselect آرگومان های اختیاری دیگری نیز دارد. که بعدا به توضیح آنها خواهیم پرداخت. 

هنگامی که ابزار Control Point Selection شروع به کار می کند، سه بخش اصلی دارد که عبارتند از:

1. Details windows: به دو پنجره ی نمایش داده شده در بالای این ابزار Detail windows گفته می شود. این پنجره ها، بخشی از عکس ها که داریم بر روی آنها کار می کنیم را نشان می دهند. عکس ورودی در سمت چپ و عکس پایه در سمت راست قرار گرفته است. 

 2. Overview windows: به دو پنجره ای که در پایین ابزار مورد نظر قرار گرفته اند، پنجره های Overview گفته می شود. این پنجره ها، کلّ عکس مورد نظر را نشان می دهند. عکس ورودی در سمت چپ و عکس پایه در سمت راست قرار دارد. اینکه پنجره ی Overview نشان داده شود یا نه را می توانید در منوی View تعیین کنید. 

 3. Details rectangle: این مستطیل بر روی عکس های پنجره های Overview قرار می گیرد و به آن مستطیل های Detail گفته می شود. این مستطیل، بخشی از عکس که در پنجره ی Detail نشان داده می شود را کنترل می کند. به طور پیش فرض، مستطیل detail یک چهارم از کل عکس را پوشش می دهد و در مرکز آن عکس قرار می گیرد. برای تغییر دادن بخشی از عکس که در پنجره ی Detail نشان داده شده است، می توانید مستطیل Detail را حرکت دهید. 

تصویر زیر، این بخش ها از ابزار Control Point Selection را نشان می دهد:

 


 استفاده از ابزارهای هدایتی برای کاوش در عکس ها

 ممکن است بخواهید بخشی از عکس نشان داده شده (در پایین) را تغییر دهید و یا اینکه بخواهید بر روی بخشی از عکس زوم کنید. بخش های زیر به شما کمک می کنند تا عملیات دلخواه خود را انجام دهید:

در ادامه به آموزش موارد بالا می پردازیم.


 استفاده از اسکرول بارها برای دیدن دیگر بخش های یک عکس

برای مشاهده ی بخش هایی از یک عکس که در پنجره های Detail یا Overview قابل رویت نیستند، می توانید از اسکرول بارهای ارائه شده برای هریک از این پنجره ها استفاده کنید. همان طور که عکس مورد نظر خود را در پنجره ی Detail اسکرول می کنید، مستطیل Detail نیز در پنجره ی Overview حرکت می کند. 


استفاده از مستطیل Detail برای تغییر دادن دیدگاه

 برای مشاهده ی بخش های مختلف یک عکس در پنجره های بالای(بصورت بزرگتر) کافیست در بخش های پایینی مستطیل Detail در پنجره ی Overview را حرکت دهید. برای حرکت دادن مستطیل detail اعمال زیر را انجام دهید:

1. اشاره گر ماوس را بر روی مستطیل detail ببرید تا به شکل  در آید. 

2. کلید ماوس را فشار دهید و این مستطیل را به مکان دلخواه هدایت کنید. 


 حرکت دادن عکس نشان داده شده در پنجره ی Detail

 به منظور تغییر دادن آن بخش از عکس که در پنجره ی Detail نشان داده شده است، از ابزار pan استفاده کنید. برای انجام این کار گام های زیر را انجام دهید:

1. در نوارابزار  Control Point Selection بر روی دکمه ی pan که به شکل   است کلیک کنید و یا اینکه از منوی tools بر روی Pan کلیک کنید. 

2. حالا اشاره گر را بر روی عکس مورد نظر در پنجره ی Detail قرار دهید. خواهید دید که نشانگر ماوس به شکل  در می آید. 

3. حالا دکمه ی ماوس را فشار دهید و نگه دارید، سپس ماوس را حرکت دهید تا عکس به سمت دلخواه شما حرکت کند. 

 


 زوم کردن(بزرگ نمایی) و یا کوچک نمایی کردن بر روی یک عکس

برای بزرگ کردن یک عکس و یا کوچکتر کردن آن، می توانید بر روی آن بزرگ نمایی و یا کوچک نمایی کنید. برای بزرگ نمایی کردن یا کوچک نمایی کردن بر روی عکس پایه یا عکس ورودی، گام های زیر را انجام دهید:

1. در نوار ابزار Control Point Selection بر روی یکی از دکمه ها که به شکل ذره بین است کلیک کنید. و یا اینکه از منوی Tools بر روی Zoom In یا Zoom Out کلیک کنید. 

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


 مشخص کردن میزان بزرگنمایی عکس ها

 به منظور بزرگنمایی کردن یک عکس، می توانید از جعبه ی magnification استفاده کنید. شما همچنین می توانید برای این کار از دکمه های زوم نیز استفاده کنید. برای تغییر دادن درصد بزرگنمایی یک عکس گام های زیر را انجام دهید:

1. نشانگر ماوس را به کادر magnification ببرید و در آن کلیک کنید. 

2. حالا یک مقدار جدید را تایپ کنید و کلید Enter را فشار دهید. و یا می توانید بر روی این منو کلیک کنید و یک مقدار از پیش تعیین شده را انتخاب کنید. 


 قفل کردن بزرگنمایی نسبی عکس ورودی و عکس پایه

 به منظور حفظ نسبت بزرگنمایی عکس ورودی و عکس پایه به طور اتوماتیک، بر روی چک باکس Lock Ratio کلیک کنید. 

 

 


مشخص کردن نقاط تطابق کنترلی

وظیفه ی اصلی ابزار Control Point Selection این است که به شما امکان دهد تا نقاط کنترل را در عکس ورودی و عکس پایه انتخاب کنید. هنگامی که شما دستور cpselect را اجرا کنید، انتخاب نقاط به طور پیش فرض فعال می شود. حال شما می توانید نقاط کنترل را در پنجره ی Detail یا Overview انتخاب کنید. هر نقطه ای که در عکس ورودی انتخاب کنید، باید مطابق با آن، یک نقطه را در عکس پایه انتخاب کنید. گام های زیر را انجام دهید تا با روش انتخاب نقاط کنترل در ابزار Control Point Selection آشنا شوید:


 انتخاب نقاط کنترل بصورت دستی

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

1. در نوار ابزار  Control Point Selection بر روی دکمه ی Control Point Selection یعنی  کلیک کنید. و یا اینکه می توانید از منوی Tools گزینه ی Add Points را انتخاب کنید. (انتخاب نقاط به طور پیش فرض فعال می باشد). خواهید دید که نشانگر ماوس به یک علامت ضربدر شبیه  تبدیل می شود. 

 2. حالا بر روی یک نقطه ی خاص که در هردو تصویر بطور واضح دیده می شود کلیک کنید. خواهید دید که ابزار cpselect نمادی به شکل  را در هر دو نقطه ی انتخاب شده نشان می دهد. همچنین ابزار cpselect پس از انتخاب نقاط توسط شما، آنها را شماره گذاری می کند. 

 

 

 3. حالا شما می توانید یک نقطه ی دیگر را در همان عکس انتخاب کنید و یا اینکه می توانید در عکس دیگری، نقطه ی متناظر را انتخاب کنید. برای انتخاب نقطه ی متناظر با این نقطه ی کنترل، بر روی همان نقطه ی خاص در عکس دیگری کلیک کنید. 

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

 (شماره 1: نقطه ی انتخاب شده ی بدون تطابق. شماره 2: جفت نقاط انتخاب شده)

 


پیش بینی کردن نقاط کنترل

به جای اینکه خودتان نقاط تطابق کنترلی را پیدا کنید، می توانید به ابزار Control  Point Selection اجازه دهید تا نقاط تطابق را به طور اتوماتیک تخمین بزند. 

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

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

 برای پیش بینی کردن نقاط، گام های زیر را انجام دهید: 

1. ابتدا حداقل، دو جفت نقطه ی کنترل را در عکس ورودی و عکس پایه انتخاب کنید. (یعنی دو نقطه در عکس ورودی و دو نقطه در عکس پایه). 

2. حالا قادر خواهید بود که از ابزار Control Point Prediction استفاده کنید. 

3. بر روی دکمه ی Control Point Prediction کلیک کنید. 

نکته: 

چون که ابزار Control Point Selection نقاط کنترل را بر اساس موقعیت های نقاط کنترل قبلی پیش بینی می کند، تا زمانی که شما حداقل دو جفت نقطه ی تطابق یافته را انتخاب نکرده باشید، نمی توانید از ابزار Control Point Prediction استفاده کنید. اما هنگامی که مینیمم نقاط تطابقی مورد نیاز انتخاب شدند، ابزار Control Point Prediction فعال خواهد شد. 

4. نشانگر ماوس را بر روی یکی از عکس های نمایش داده شده ببرید. خواهید دید که نشانگر ماوس به شکل   در می آید. 

نکته:

شما می توانید نقاط کنترل را در عکس ورودی یا عکس پایه در پنجره ی Detail ( یا پنجره ی Overview) انتخاب کنید. 

حالا  کلیک کنید. خواهید دید که ابزار Control Point Selection یک نقطه ی کنترل را در مکانی که شما انتخاب کرده اید، قرار می دهد و یک نقطه ی کنترل دیگر را بعنوان تطابق نقطه ی قبلی در عکس مقابل قرار می دهد. خواهید دید که در کنار نقطه ی پیش بینی شده، حرف p نشان داده می شود. درست مثل این شکل: . کاراکتر p مخفف کلمه ی predicted (پیش بینی شده) است. 


حرکت دادن نقاط کنترل در پردازش تصویر

برای حرکت دادن یک نقطه ی کنترل، گام های زیر را انجام دهید: 

1. بر روی دکمه ی Control Point Selection کلیک کنید. شکل آن به صورت  است. 

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

3. حالا دکمه ی ماوس را پایین نگه دارید و نقطه ی کنترل را حرکت دهید. در حین حرکت دادن، خواهید دید که آن نقطه ی کنترل، به حالت انتخاب شده در می آید. 

اگر که شما یک نقطه ی کنترل پیش بینی شده(predicted ) را حرکت دهید، این نقطه به یک نقطه عادی تبدیل خواهد شد. 


حذف کردن نقاط کنترل در پردازش تصویر

برای اینکه بتوانید یک نقطه ی کنترل و نقطه ی تطابق آن را حذف کنید، گام های زیر را انجام دهید: 

1. بر روی دکمه ی Control Point Selection کلیک کنید، یعنی این دکمه:

2. حالا بر روی نقطه ای که می خواهید آن را حذف نمایید، کلیک کنید. خواهید دید که این نقطه، به حالت انتخاب شده، درمی آید. با انجام این کار، در صورتی که برای این نقطه، یک نقطه ی تطابق انتخاب شده باشد، آن نقطه ی تطابق نیز فعال خواهد شد. حالا با استفاده از یکی از روش های زیر، نقطه یا نقاط مورد نظر را حذف کنید: 

اگر بخواهید از منوی Edit برای حذف نقاط استفاده کنید با گزینه ی های زیر روبه رو خواهید شد: 


 export کردن نقاط کنترل به محیط Workspace

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

1. در ابزار Control Point Selection بر روی منوی File کلیک کنید. 

2. حالا گزینه ی  Export Points to Workspace را انتخاب کنید. 

خواهید دید که ابزار Control Point Selection جعبه ی مکالمه ی زیر را نشان می دهد: 

 

 ابزار Control Point Selection به طور پیش فرض، مختصات x و مختصات y نقاطی که انتخاب کرده اید را در داخل دو آرایه به نام های input_points و base_points ذخیره می کند(اما شما می توانید برای این دو آرایه نام های دیگری را انتخاب کنید). ابعاد این آرایه ها به صورت n×2 می باشد. و n نشان دهنده ی تعداد جفت نقاط معتبر انتخاب شده می باشد. 

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

مثال(انتخاب نقاط کنترل در متلب و پردازش تصویر)

input_points =
215.6667 262.3333
225.7778 311.3333
156.5556 340.1111
270.8889 368.8889

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

 


 نحوه ی ذخیره کردن نشست در ابزار  Control Point Selection

برای اینکه وضعیت فعلی ابزار Control Point Selection را ذخیره کنیم، کافیست از منوی File گزینه ی Export Points to Workspace را انتخاب کنیم. حالا در داخل جعبه ی مکالمه ی Export Points to Workspace گزینه ی Structure with all points را انتخاب کنید.

 این گزینه باعث می شود که تمامی نقاط کنترل انتخاب شده توسط شما، و وضعیت فعلی آنها، در داخل یک ساختار به نام cpstruct ذخیره شود. 

مثال(انتخاب نقاط کنترل در متلب و پردازش تصویر)

cpstruct =
inputPoints: [4x2 double]
basePoints: [4x2 double]
inputBasePairs: [4x2 double]
ids: [4x1 double]
inputIdPairs: [4x2 double]
baseIdPairs: [4x2 double]
isInputPredicted: [4x1 double]
isBasePredicted: [4x1 double]

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

انتخاب گزینه ی مذکور، زمانی به درد می خورد که شما تعداد زیادی نقطه ی کنترل را انتخاب کرده باشید، و مثلا بخواهید بعدا به کار خود ادامه دهید. 

ابزار Control Point Selection نقاط کنترلی که جفت آنها انتخاب نشده باشد و همچنین نقاط کنترلی که پیش بینی شده باشند، را در داخل آرایه های input_points و base_points قرار نمی دهد. 

به منظور استخراج کردن مختصات نقاط کنترلی معتبر انتخاب شده از داخل ساختار cpstruct می توانید از تابع cpstruct2pairs استفاده کنید. 

 


 استفاده از همبستگی برای بهبود دقت نقاط کنترل

ممکن است شما بخواهید نقاط کنترل انتخاب شده توسط دستور cpselect را به طور دقیق تنظیم کنید. شما می توانید گاهی اوقات با استفاده از همبستگی(ارتباط) متقابل(cross-correlation) دقت نقاط انتخاب شده توسط چشم را، در هنگام استفاده از ابزار Control Point Selection بهبود ببخشید. 

برای استفاده از همبستگی متقابل، کافیست مجموعه نقاط کنترلِ عکس ورودی و عکس پایه را همراه با خود این عکس ها، به تابع cpcorr بدهید. بعنوان مثال به صورت زیر: 

مثال(استفاده از همبستگی برای بهبود دقت نقاط کنترل)

input_pts_adj= cpcorr(input_points, base_points, input, base);

تابع cpcorr ناحیه هایی را به دور نقاط کنترل، در داخل عکس ورودی و همچنین به دور نقاط تطابق در عکس پایه تعریف می کند، و سپس ارتباط بین مقادیر هر یک از پیکسل های درون ناحیه ی مورد نظر را محاسبه می کند. 

سپس تابع cpcorr به دنبال موقعیتی که دارای بیشترین ارتباط با آن مقدار است می گردد و از آن بعنوان موقعیت بهینه سازی شده برای نقطه ی کنترل مورد نظر استفاده می کند. 

تابع cpcorr تنها نقاط کنترل را حداکثر تا 4 پیکسل بر اساس نتایج همبستگی متقابل حرکت می دهد. 

 اگر تابع cpcorr نتواند بین برخی از نقاط کنترل، همبستگی پیدا کند، مقادیر آنها را در input_points دست نخوره باقی می گذارد.