تبدیل ویژگی مستقل از مقیاس (SIFT) یک الگوریتم در بینایی ماشین است که برای استخراج ویژگیهای مشخص از تصاویر، برای استفاده در الگوریتمهای کارهایی چون تطبیق نماهای مختلف یک جسم یا صحنه (برای نمونه در دید دوچشمی) و شناسایی اجسام به کار میرود. ویژگیهای بهدست آمده نسبت به مقیاس تصویر و چرخش ناوردا و نسبت به تغییر دیدگاه و تغییرات نورپردازی تا اندازهای ناوردایند. نام تبدیل مقیاسنابسته ویژگی از آن سو که الگوریتم دادههای تصویر را به مختصات مقیاسنابستهای نسبت به ویژگیهای محلی تبدیل میکند بر آن نهاده شد.
الگوریتم توسط دیوید لوو در دانشگاه بریتیش کلمبیا ساخته شد، که امتیاز ثبت اختراع آن در ایالات متحده را نیز دارد.
بهطور کلی تشخیص در الگوریتم sift از طریق دو بخش انجام میشود که عبارتند از:
تشخیص نقاط کلیدی تصویر بدین صورت انجام میشود که نقاط کلیدی به نقاطی از تصویر که در فضای مقیاس تصویر اکسترمم است اطلاق میشود و فضای مقیاس تصویر شامل مجموعه ای از تصاویر است. تصاویر این مجموعه با استفاده از کانولوشن تصویر اصلی با فیلترهای گوسی با مقیاسهای مختلف تولید میشوند.
برای ساخت فضای مقیاس میتوان با کانوالو کردن تصویر با یک تابع گوسی، یک نمونه بهدستآورد و با تغییر واریانس میتوان میزان اسموز شده تری از تصویر را بهدستآورد.
فضای مقیاس شامل چند تصویر است که با چند بار اعمال فیلتر گوسی بهدست میآید.
در ساخت فضای مقیاس سپس عمل ریسمپلینگ انجام میشود و یک اکتاو جدید ساخته میشود. در هر اکتاو تفاضل گوسیها (DoG)محاسبه میشود.
برای یافتن نقاط کلیدی اکسترممهای تابع d محاسبه میشود. هر نقطه با هشت همسایه و نقاط همسایه در صفحات مجاور در نظر گرفته میشود. سپس نقاط نامناسب حذف میشوند.
ا اینجا به ازای هر نقطه کلیدی، یک مختصات و یک مقیاس داریم یعنی: (x, y , δ)
بردار گرادیان در هر نقطه تصویر، جهت و اندازه بیشترین تغییرات را نشان میدهد و عمود بر لبه است.
برای ثابت بودن نسبت به دوران، یک دستگاه مختصات از روی گرادیان تعریف میشود.
در یک پنجره اطراف هر نقطه کلیدی، یک هیستوگرام از گرادیانها ساخته میشود و جهتی که بیشترین فراوانی را دارد به عنوان جهت غالب انتخاب میشود.
به هر نقطه کلیدی یک بردار ویژگی شامل ۱۲۸ مولفه اختصاص داده میشود. پنجره اطراف نقطه کلیدی به ۴*۴ زیرپنجره تقسیم میشود و در هر زیرپنجره یک هیستوگرام از گرادیانها رسم میشود (هر هیستوگرام شامل ۸ مقدار است)
تعداد ویژگیها برابر خواهد بود: ۴*۴*۸ = ۱۲۸
گامهای اصلی در محاسبه ویژگیهای تصویر عبارتاند از:
این روش یکی از روشهای اصلی استخراج ویژگی در بینایی ماشین است. دلیل اصلی که این روش را از باقی روشها جدا میسازد، مقاوم بودن این روش نسبت به اندازه، چرخش و تبدیلات افین است. آزمایشهای زیادی در راستای عملکرد روشهای گوناگون توصیفگرهای محلی انجام شده است. خلاصهای از این مطالعات در زیر آمده است:
این الگوریتم از نظر محاسباتی، الگوریتم زمانبری محسوب میشود و به همین خاطر در سالهای بعد الگوریتمهای دیگری برای کاهش این سربار معرفی شدند ولی معمولاً این کاهش سربار در ازای کاهش کیفیت نقاط تطبیق داده شده، ارائه میشود.
از جمله این الگوریتمها میتوان به SURF, ORB, PCA SIFT و KAZE اشاره کرد.
برای مثال الگوریتم SURF از همان منطق استفاده میکند اما سریعتر از روش تبدیل ویژگی مقیاس نابسته است. با این حال این سرعت در ازای دقت و مقاومت کمتر نسبت به تغییرات به دست میآید. همچنین الگوریتم ORB که در مواردی که با یک سیستم بیدرنگ سر و کار داریم استفاده میشود؛ زیرا با تلفیق ویژگیهای مثبت چند الگوریتم، روشی سریع با عملکرد قابل قبول ارائه کرده است. آما همچنان از نظر اعتمادپذیری، روش تبدیل ویژگی مقیاس نابسته در صدر قرار میگیرد.
برای استفاده از این الگوریتم کافی است که از یکی ز کتابخانههای آمادهای که در پایتون یا باقی زبانها پیادهسازی شده استفاده کنید و ویژگیهای تصویر را به کمک این الگوریتم استخراج کنید. در زبان پایتون و سیپلاسپلاس میتوانیم از کتابخانه openCV که با نام CV2 شناخته میشود استفاده کنیم و به کمک تابع cv2.drawKeypoints این نقاط را در تصویر نشان دهیم. تصاویری که در این صفحه نمایش داده شد نیز به کمک همین توابع اجرا شده بود.
این نوع الگوریتم بیشتر در کارهای شناسایی شی، شناسایی چهره، دنبال کردن شی و دنبال کردن حرکت فرد، مدلسازی سه بعدی صحنه، ساخت پانوراما، بخشبندی تصویر، شناسایی مکان، تعیین مکان ربات، نقشه ربات و … استفاده میشود. این روش احتیاجی به بخشبندی ندارد.
SIFT بخشی بنیادی از الگوریتمهای ViPR و vSLAM ساخته شده توسط شرکت اوُلوشن رباتیکز است که یک الگوریتم هدفیابی/محلیسازی بر اساس SIFT نیز برای ایبوی سونی پیادهسازی کرده است که به کمک آن ایستگاه پر کردن باتری خود را پیدا میکند. همچنین از این روش برای ساخت تصاویر پانوراما و تلفیق چند تصویر استفاده میشود. از این الگوریتم در واقعیت مجازی نیز استفاده میشود و به کمک آن اشیا سه بعدی توسط تصاویر دو بعدی تشکیل میشود.