الگوریتم SIFT( تغییر شکل مقیاس ثابت) در صدد بازسازی و بازیابی تصویر مبتنی بر محتوا اقدام شده است اما مشکلی که در این مقاله بدان پرداخته است زمان مورد نیاز مقایسه دو تصویر است . در این مقاله سیستمی پیشنهاد شده که از الگوریتم SIFT برای استخراج نتایج جستجوی برگشت یافته توسط استاندارد CBIR استفاده شده است. با ترکیب الگوریتم SIFT در بازیابی تصویر مبتنی بر محتوا، سرعت و دقت بسیار بالاتر می رود.
در الگوریتم (CBIR) بازیابی تصویر مبتنی بر محتوا نقش اصلی را در زمینه های کاربردی از جمله سیستم های پایگاه داده چندرسانه ای را در سال های اخیر بازی کرده است. CBIR محتوا را با ایجاد فهرست بندی بهتر و بازگشت بیشتر در نتایج دقیق نمایش می دهد.
هدف سیستم CBIR پشتیبانی از بازیابی تصویر است که بر اساس محتوا مثل شکل، رنگ ، بافت و ... می باشد.
ویژگی های تصاویر به منظور مقایسه تصویر، جستجو و تطابق رنگ و شکل و یا بافت و موقعیت های مکانی به کار برده می شود. از این باب استخراج ویژگی تصاویر از اهمیت بسیاری برخوردار است.
الگوریتمSIFT دارای محدودیتهایی است که برای بهبود دادن این الگوریتم جهت ارتقای دقّت انطباق باید به نوع تصویر هم توجه کرد،زیرا انحرافهایی که بین تصاویر وجود دارد، با توجه به ماهیت تصاویر ممکن است، متفاوت باشد.
این الگوریتم،در تصاویر سنجش از دور اپتیکی، دارای دو مشکل اصلی است که عبارتند از :
الگوریتم SIFT در برنامه های کاربردی که نیاز به عملکرد زمان واقعی ، محاسبه زیاد و ظرفیت بالای ذخیره سازی با توجه به سطح چارچوب و فرآیند محاسبه تکراری در عملکرد SIFT Gaussian داشته باشد ، به طور کامل حل نشده است.
مراحل الگوریتم :
شامل چهار مرحله ای آشکارسازی نقاط کلیدی، تعیین موقعیت نقاط کلیدی، تخصیص جهت و ایجاد توصیفگر برای نقاط کلیدی است. از آنجایی که وجود اعوجاجهای هندسی بین تصاویر و تنوع حسگرها سبب می شود که ویژگیهای یک تصویر در تصویر دیگر به طور اندک ظاهر شود یا اصلاً ظاهر نشود، در نتیجه باعث تداخل در عملکرد انطباق تصویر می گردد.
مقایسه ای کوچک با الگوریتمی مشابه
الگوریتم SIFT نسبت به الگوریتم SURF در برابر تغییرات مقیاس چرخش و مات شدن از نیرومندی بیشتری برخوردار است. الگوریتم SURF با بدست آوردن نتایج مطلوب تر و سرعت بالاتر برای کاربردهای زمان بلادرنگ، همچون ناوبری مطلوبتر است.
در بخش دوم این مبحث بیشتر وارد جزئیات عملکرد sift خواهیم شد.
الگوریتم SIFT یک ابزار توصیف تصویر است که در سال 1999 معرفی شد . این الگوریتم نسبت به تغییراتی مانند دوران و تغییر مقیاس، پایدار (اینورینت ) است. نسبت به تبدیلات هایی چون affine ، تغییرات نورپردازی، نویز و تغییر زاویه دید و انسداد تا حدی پایدار است.
این نوع الگوریتم بیشتر در کارهای شناسایی شی، شناسایی چهره، دنبال کردن شی و دنبال کردن حرکت فرد، مدل سازی سه بعدی صحنه ، ساخت پانوراما، بخش بندی تصویر، شناسایی مکان، تعیین مکان ربات ، نقشه ربات و ... استفاده می شود. این روش احتیاجی به بخش بندی ندارد.
همانطور که می دانید به طور کلی تشخیص در الگوریتم sift از طریق دو بخش انجام می شود که عبارتند از :
تشخیص نقاط کلیدی تصویر: بدین صورت انجام می شود که نقاط کلیدی به نقاطی از تصویر که در فضای مقیاس تصویر اکسترمم است اتلاق می شود و فضای مقیاس تصویر شامل مجموعه ای از تصاویر است . تصاویر این مجموعه با استفاده از کانولوشن تصویر اصلی با فیلترهای گوسی با مقیاس های مختلف تولید می شوند.
برای ساخت فضای مقیاس می توان با کانوالو کردن تصویر با یک تابع گوسی ، یک نمونه بدست آورد و با تغییر واریانس می توان میزان اسموز شده تری از تصویر را بدست آورد.
فضای مقیاس شامل چند تصویر است که با چند بار اعمال فیلتر گوسی بدست می آید.
در ساخت فضای مقیاس سپس عمل ریسمپلینگ انجام می شود و یک اکتاو جدید ساخته می شود. در هر اکتاو تفاضل گوسی ها (DoG)محاسبه می شود.
برای یافتن نقاط کلیدی اکسترمم های تابع، dمحاسبه می شود. هر نقطه با هشت همسایه و نقاط همسایه در صفحات مجاور در نظر گرفته می شود. سپس نقاط نامناسب حذف می شوند.
تا اینجا به ازای هر نقطه کلیدی، یک مختصات و یک مقیاس داریم یعنی : (x, y , δ)
بردار گرادیان در هر نقطه تصویر ، جهت و اندازه بیشترین تغییرات را نشان می دهد و عمود بر لبه است.
برای ثابت بودن نسبت به دوران ، یک دستگاه مختصات از روی گرادیان تعریف می شود.
در یک پنجره اطراف هر نقطه کلیدی ، یک هیستوگرام از گرادیان ها ساخته می شود و جهتی که بیشترین فراوانی را دارد به عنوان جهت غالب انتخاب می شود که در اینجا با حرف o نمایش می دهیم.
استخراج ویژگی ها:
به هر نقطه کلیدی یک بردار ویژگی شامل 128 مولفه اختصاص داده می شود. پنجره اطراف نقطه کلیدی به 4*4 زیرپنجره تقسیم می شود و در هر زیرپنجره یک هیستوگرام از گرادیان ها رسم می شود( هر هیستوگرام شامل 8 مقدار است.)
تعداد ویژگی ها برابر خواهد بود : 4*4*8 = 128
خروجی SIFT:
فرض کنید n نقطه کلیدی داریم و به همان نسبت هم n بردار با مختصات و مقیاس و جهتِ (x,y,δ,o) داریم و n بردار 128 تایی داریم (f1,…f128)
یافتن اشیاء در تصویر به کمک الگوریتم sift:
ویژگی ها از تصاویر مورد جستجو ( موجود در پایگاه داده) و تصویر صحنه استخراج می شوند و ویژگی های تصاویر پایگاه داده در تصویر صحنه جستجو می شوند.به علت زیاد بدون ویژگی ها ، انسداد تا حدی قابل تحمل است.
کاربرد الگوریتم SIFT:
1- شناسایی چهره
2- ثبت تصاویر چند طیفی
بخشی از کدهای الگوریتم SIFT با پایتون:
import cv2
import numpy as np
img = cv2.imread('home.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
sift = cv2.SIFT()
kp = sift.detect(gray,None)
img=cv2.drawKeypoints(gray,kp)
cv2.imwrite('sift_keypoints.jpg',img)
sift = cv2.SIFT()
kp, des = sift.detectAndCompute(gray,None)
منابع:
Improving Content Based Image Retrieval using Scale Invariant Feature Transform - ISSN: 2249 – 8958, Volume-1, Issue-5, June 2012