تثبيت انجام تصوير و انتخاب نقاط كنترلي

تثبيت انجام تصوير و انتخاب نقاط كنترلي

تعريف تثبيت تصوير : قرار دادن چند تصوير مختلف اما مربوط به يك صحنه روي هم طوري كه اشياء يكسان و مشترك در تصاوير روي هم بيفتند.

اهميت تثبيت تصوير : تثبيت تصوير معمولاً يك مرحله‌ي مقدماتي در برخي فرآيندهاي پردازش تصوير است.

از بين چند تصويري كه قصد تثبيت آن‌ها را داريم، معمولاً يكي به عنوان تصوير پايه يا تصوير مرجع انتخاب مي‌شود تا ديگر تصاوير (كه تصاوير ورودي ناميده مي‌شوند) باآن مقايسه شوند. هدف از تثبيت تصوير انجام يك تبديل مناسب است طوري كه تصاوير ورودي به طور « مناسب »روي تصوير مرجع قرار بگيرند.

مهم‌ترين مرحله از مراحل تثبيت تصوير، تعيين پارامترهاي تبديل مناسب است. براي تعيين پارامترهاي تبديل، شما بايد يك سري جفت نقاط را در تصوير مرجع و تصوير ورودي مشخص (و در صورت لزوم تصحيح) كنيد. اين جفت نقاط مربوط به ويژگي‌ها و يا محل‌هاي مشترك در دو تصوير مي‌باشند. حال با مقايسه و تطابق نقاط (و يا به اصطلاح نگاشت نقطه) مي‌توان تبديل مناسب را يافت.

توجه كنيد كه ممكن است لازم باشد شما عمليات فوق‌الذكر را چندين بار تكرار و تبديل‌هاي مختلفي را بررسي و ارزيابي كنيد تا به نتيجه‌ي مطلوب دست بيابيد. در برخي مواقع شما بايد با انجام مكرر تثبيت تصوير، ابتدا اعوجاجات (يا ناهمساني‌هاي) عمده، و سپس اعوجاجات جزئي و كوچك را حذف كنيد. شكل زير مراحل مختلف و متداول عمليات تثبيت تصوير را نشان مي‌دهد.

مثال : تثبيت تصوير نسبت به تصوير هوايي تصحيح شده

تصاوير عكس‌برداري هوايي بدليل كروي بودن سطح زمين شامل اعوجاجاتي در راستاي x و y می‌باشند. اگر اين اعوجاجات از تصاوير عكس‌برداري هوايي حذف شوند، تصوير حاصل را تصوير هوايي تصحيح شده مي‌نامند. در اين مثال بين يك تصوير عكسبرداري هوايي و يك تصوير هوايي تصحيح شده، عمل تثبيت انجام مي‌شود.

گام 1 : خواندن تصاوير

در اين مثال، تصوير تصحيح شده به عنوان تصوير پايه استفاده شده و westconcordorthophoto.png نام دارد كه يك تصوير سطح خاكستري بوده و انواع مختلف اعوجاجات در آن حذف شده است. تصوير تثبيت نشده westconcordaerial.png نام داشته و شامل برخي انواع اعوجاجات مي‌باشد.

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

گام 2 : انتخاب نقاط كنترلي در تصاوير

در اينجا از يك ابزار تعاملي براي انتخاب نقاط كنترلي متناظر در دو تصوير پايه و تثبيت نشده (يا تصوير ورودي) استفاده مي‌كنيم. اين نقاط كنترلي معمولاً نشانه‌هايي شامل تقاطع جاده‌ها و يا عوارض طبيعي زمين مي‌باشند.

براي شروع اين ابزار تعاملي به صورت زير عمل كنيد:

cpselect(unregistered, orthophoto)

حال در پنجره ظاهر شده جفت نقاط را تعيين مي‌كنيم. در شكل زير سه جفت نقطه مشخص شده است. حداقل تعداد جفت نقاط بستگي به نوع تبديلي دارد كه قصد انجام آن را داريد.

در پنجره‌اي كه به كمك آن جفت نقاط را تعيين كرده‌ايد، از منوي file گزینه‌ی Export Points to workspace را انتخاب كنيد. براي مثال، سه جفت نقطه‌ي زير كه در مختصات مكاني بيان شده‌اند، مربوط به نقاط انتخاب شده در تصوير ورودي مي‌باشند. ستون سمت چپ، مقادير مختصه‌ي x و ستون سمت راست، مقادیر مختصه‌ی y می‌باشند.

input_points = 118.0000 96.0000 304.0000 87.0000 358.0000 281.0000 127.0000 292.0000

گام 4 : اصلاح محل نقاط كنترلي (اختياري)

ممكن است نقاط كنترلي كه در مرحله‌ي قبل انتخاب كرده‌ايد، كاملاً دقيق و منطبق بر محل‌هاي موردنظرتان نبوده باشد؛ بنابراين، بهتر است محل نقاط مذكور را اصلاح كنيد. يك راه انجام اصلاح، استفاده از همبستگي متقابل به كمك دستور cpcorr است. البته، يك شرط لازم براي استفاده از اين دستور اين است‌كه دو تصوير بايد نسبت به هم چرخش نداشته و نيز داراي يك مقياس باشند. در مثالي كه در حال بررسي آن هستيم، دو تصوير (يعني تصوير پايه و تصوير ورودي) نسبت به هم چرخش دارند؛ بنابراين، در اينجا نمي‌توان از دستور cpcorr استفاده كرد (بعداً استفاده از آن را خواهيم ديد).

گام 5 : تعين نوع تبديل و به‌دست‌آوردن پارامترهاي مربوطه

در اين مرحله، نقاط كنترلي را به دستور cp2tform مي‌دهيم تا پارامترهاي تبديل مربوطه را محاسبه كند. البته در اين دستور شما بايد نوع اصلي تبديل را نيز تعيين كنيد. براي اين كار با توجه به اعوجاجي كه در تصوير مشاهده مي‌كنيد بايد يكي از پنج نوع تبديلي كه در بخش بعدي (بخش انواع تبديلات) مي‌آيد را انتخاب كنيد. در ضمن توجه كنيد كه تصاوير ممكن است بيش از يك نوع اعوجاج داشته باشند. در مثال فعلي، مهمترين اعوجاجي كه در تصوير ورودي وجود دارد، اعوجاج پرسپكتيو است؛ بنابراين، ما بايد نوع تبديلِ projective را انتخاب كنيم:

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

گام 6 : انجام تبديل روي تصوير ورودي (يا تثبيت نشده)

حال نوبت به انجام تبديل به كمك دستور imtransform است.

registered = imtransform(unregistered, mytform);

با توجه به مراحلي كه در مثال قبلي طي كرده بوديم، در اين مثال هم مي‌توانيد تصوير نيمه شفافي از تصوير تثبيت شده را روي تصوير پايه قرار داده و هر دو را (به منظور ارزيابي بهتر عمل تثبيت تصوير) با هم نمايش دهيم. نتيجه به صورت شكل زير است:

انواع تبديلات

ليست تبديلات موجود براي استفاده در دستور cp2tform به ترتيب پيچيدگي آن‌ها به صورت زير است:

• 'nonreflective similarity' • 'affine' • 'projective' • 'polynomial' (Order 2, 3, or 4) • 'piecewise linear' • 'lwm'

براي ديدن اطلاعات بيشتر در مورد اين تبديلات و نيز دانستن حداقل تعداد نقاط كنترلي لازم براي هر كدام از آن‌ها به صفحه‌ي مرجع دستورات cp2tform و cpselect مراجعه كنيد.

The first four transformations, 'nonreflective similarity', 'affine', 'projective', and 'polynomial' are global transformations. In these transformations, a single mathematical expression applies to an entire image. The last two transformations, 'piecewise linear' and 'lwm' (local weighted mean), are local transformations. In these transformations, different mathematical expressions apply to different regions within an image. When exploring how different transformations affect the images you are working with, try the global transformations first. If these transformations are not satisfactory, try the local transformations: the piecewise linear transformation first, and then the local weighted mean transformation.

انتخاب نقاط كنترلي

استفاده از همبستگي براي اصلاح نقاط كنترلي براي اصلاح خودكار نقاط كنترلي كه شما قبلاً با چشم خود آنها را انتخاب كرده‌ايد، مي‌توانيد از دستور cpcorr استفاده كنيد. البته همان طور كه قبلاً نيز بيان شد، بايد دو شرط مربوط به چرخش و مقياس برقرار باشند.

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

تمرين : با توجه به راهنماي زير، در مورد نحوه‌ي عملكرد دستور cpcorr توضيح دهيد.

>> help cpcorr CPCORR Tune control point locations using cross‐correlation. INPUT_POINTS = CPCORR(INPUT_POINTS_IN,BASE_POINTS_IN,INPUT,BASE) uses normalized cross‐correlation to adjust each pair of control points specified in INPUT_POINTS_IN and BASE_POINTS_IN. INPUT_POINTS_IN must be an M‐by‐2 double matrix containing the coordinates of control points in the input image. BASE_POINTS_IN is an M‐by‐2 double matrix containing the coordinates of control points in the base image. CPCORR returns the adjusted control points in INPUT_POINTS, a double matrix the same size as INPUT_POINTS_IN. If CPCORR cannot correlate a pairs of control points, INPUT_POINTS will contain the same coordinates as INPUT_POINTS_IN for that pair. CPCORR will only move the position of a control point by up to 4 pixels. Adjusted coordinates are accurate up to one tenth of a pixel. CPCORR is designed to get subpixel accuracy from the image content and coarse control point selection. Note that the INPUT and BASE images must have the same scale for CPCORR to be effective. CPCORR cannot adjust a point if any of the following occur: ‐ points are too near the edge of either image ‐ regions of images around points contain Inf or NaN ‐ region around a point in input image has zero standard deviation ‐ regions of images around points are poorly correlated



نظرات کاربران



عبارت امنیتی : حاصل 3 × 3 می شود :
متن پیام :