نقل قول:
نوشته اصلي بوسيله mahdiii
همون طوری که اشاره شد شما اینجا به مختصات نقاط نیازی ندارین
چون مختصات نقاط به عنوان ویژگی برای شما محسوب نمیشن.
مثلا تو یه مساله با مختصات نقاط میشه دو کلاسو از هم جدا کرد. اونجا مختصات نقاط برامون مهمه و عامل تفکیک. ولی اینجا مختصات نقاط هیچ ربطی و هیچ کمکی در پیدا کردن و کلاسه بندی سطوح معیوب و سالم نمیکنه. اینجا برای ما استخراج ویژگیهایی پایدار و مستقل در تصاویر هست که برای هرنقطه همین بردار 128تایی همین کارو میکنه. این بردار با درنطر گرفتن یک پنجره مربعی -که به 4*4 زیر مربع تقسیم شده- اطراف اون نقطه استخراجی و محاسبه جهت و گرادیان در هر زیرمربع (360 درجه به هشت بازه تقسیم شده پس میشه 4*4*8=128) و ساخت یک بافت نگار 128تایی به دست اومده ، پس باید این نقاطو مثلا 100*128 از تصویر سالم اول استخراج شده و 128*50 از تصویر سالم بعدی و همین طور تا آخر. اینا مربوط به کلاس سطوح سالم هستن. هر نقطه در فضای 128 بعدی درنظرگرفته شده. پس تمام این نقاط 100 برای تصویر سالم اول، 50 برای تصویر سالم دوم و ... با برچسب سالم باید به svm داده بشه و برای تصاویر معیوب هم به همین صورت تمام نقاط با برچسب معیوب به svm داده میشه. مساله شما یه کلاسه بندی به دو کلاس سالم و معیوب در فضای 128 بعدی، با داشتن نقاط 128 بعدی با برچسب سالم و معیوب هست.
فقط نکته ای رو بگم که با pca میشه طول بردارو کاهش داد یعنی به جای اینکه هر نقطه با 128 عدد توصیف شود با طول کمتری مثلا 64 توصیف شود. این یک نکته اسم روششم pca sift هست
و برای اینکه تعداد نقاطتون کمتر بشه و نقاط برجسته تر و مهم تر از تصویر انتخاب بشن نه 1000 تا نقطه باید مقدار آستانه مربوط به الگوریتم sift رو تغییر بدین. الگوریتم sift پارامترهایی داره که با تنظیم اون میتونین نقاط استخراجی برجسته تر رو انتخاب کنین. بنابراین تعداد این نقاط کمتر میشه.
|
با سلام و تشکر از راهنمایی هایتان.
در بخشی از تابعی که من از sift دارم نقاط کلیدی را با استفاده از دستور زیر بدست می آورد. و سپس تعداد نقاط دو در متغیر num میریزد.
كد:
command = [command ' <tmp.pgm >tmp.key'];
eval(command);
% Open tmp.key and check its header
g = fopen('tmp.key', 'r');
if g == -1
error('Could not open file tmp.key.');
end
[header, count] = fscanf(g, '%d %d', [1 2]);
if count ~= 2
error('Invalid keypoint file beginning.');
end
num = header(1);
len = header(2);
به چه صورت میشه نقاط رو کاهش داد؟
آیا کاهش resolution پیشنهاد خوبیست؟ من این کار رو برای تصویری که نقاط کلیدی اش 1649 بود انجام دادم نقاط کلیدی اش 1104 شد..... و با تغییر سایز تصویر نقاط 604 شد......
با تشکر.