انجام تبديلات دوبعدي مكاني دلخواه
براي انجام يك تبديل مكاني دلخواه سه مرحله بايد طي شود:
1- تعيين پارامترهاي تبديل مكاني
2- ايجاد ساختاري به نام TFORM
3- انجام تبديل به كمك دستور imtransform
يك ساختار TFORMساختاري است كه شامل تمام پارامترهاي لازم براي انجام يك تبديل دوبعدي مي باشد. براي توليد يك ساختارTFORM، مي توان از دستور maketform استفاده كرد.
شكل زير مراحل فوق را نشان مي دهد:
مثال: انجام يك تبديل مكاني دوبعدي
در اين مثال، يك تبديل ساده به نام انتقال انجام مي شود.
گام 1: خواندن تصوير ورودي
cb = checkerboard;
imshow(cb)
گام 2: تعريف تبديل
براي تعريف بسياري از تبديلات استفاده از يك ماتريس مربعي به طول 3 كافي است. شما مي توانيد با تعيين چند جفت نقطه متناظر از تصوير ورودي و خروجي نيز، تبديل را مشخص و از دستور maketform براي ايجاد ماتريس مربعي مذكور استفاده كنيد. در اين مثال از ماتريس تبديل زير استفاده م يشود (معادل عمل انتقال است):
xform = [ 1 0 0
0 1 0
40 40 1 ]
اولين عدد 40 (از چپ) معرف ميزان جابجايي در راستاي افقي و دومين عدد 40 معرف ميزان جابجايي در راستاي عمودي است.
گام 3: ايجاد ساختار TFORM
براي ايجاد يك ساختار TFORM ميتوان از دستور maketform استفاده كرد. از جمله آرگومانهاي ورودي اين دستور، تعيين نوع تبديل و تعيين ماتريس (يا مجموعهي جفت-نقاط) تبديل است. نوع تبديل شامل انواع زير ميتواند باشد (براي توضيحات بيشتر به صفحه ي مرجع مراجعه كنيد):
‘affine’ Affine transformation in 2‐D or N‐D
‘projective’ Projective transformation in 2‐D or N‐D
‘custom’ User‐defined transformation that can be N‐D to M‐D
‘box’ Independent affine transformation (scale and shift) in each dimension
‘composite’ Composition of an arbitrary number of more basic transformations
در اين مثال، از پارامتر نوع تبديلِ affine’ بايد استفاده كنيم:
tform_translate = maketform(‘affine’,xform);
گام 4: انجام تبديل
براي انجام تبديل، از دستور imtransform به همراه تصوير ورودي و ماتريس تبديل مورد نظرمان استفاده مي كنيم.
[cb_trans xdata ydata]= imtransform(cb, tform_translate);
مختصات افقي (راستاي x) و ( مختصات عمودي (راستايy) آرگومانهاي خروجي به ترتيب شامل نتيجه ي تبديل (تصوير تبديل يافته) و گوشه هاي تصوير تبديل يافته مي باشند.
توجه: در اين بخش از سيستم مختصات دهي مكاني استفاده مي شود.
شكل زير تبديل انجام شده در اين مثال را به صورت گرافيكي نشان مي دهد. ملاحظه مي كنيد كه پيكسل واقع در مختصات ( 1،1 ) از تصوير ورودي به مختصات ( 41،41 ) در تصوير خروجي منتقل شده است.
البته توجه كنيد كه تبديل انجام شده، تاثيري روي مقادير پيكسلها ندارد. اما اگر برخي تبديلات مانند تغيير مقياس و چرخش انجام دهيم، بايد مقادير برخي پيكسلهاي جديد به روش درونيابي محاسبه شوند (براي ديدن انواع روشهاي موجود براي درونيابي به صفحه ي مرجع دستور imtransform مراجعه كنيد).
گام 5: نمايش تصوير خروجي
figure, imshow(cb_trans)
ممكن است فكر كنيد كه چون تصوير خروجي مشابه تصوير ورودي شده، پس عمل تبديل تاثيري نداشته است؛ اما، واقعيت اين است كه تبديل انتقال تاثيري روي مقادير پيكسلها ندارد بلكه روي مختصات آنها تاثيرگذار است. اگر به مقادير آرگومانهاي خروجيِ دستورِ imtransform يعني ydata و xdata نگاهي بيندازيد، ملاحظه مي كنيد كه مقادير مختصات مكاني تغيير كرده اند.

اگر مي خواهيد كه تصوير خروجي نسبت به مبدا مختصات جديد نمايش داده شود، از ويژگيهاي YData و XData به صورت زير استفاده كنيد:
cb_trans2 = imtransform(cb, tform_translate,…
‘XData’, [1 (size(cb,2)+ xform(3,1))],…
‘YData’, [1 (size(cb,1)+ xform(3,2))]);
figure, imshow(cb_trans2)
نتيجه:
توجه:
نویسنده: دکتر هادی گرایلو






