SIFT descriptor สำหรับพิกเซลมุมในรูปภาพ

ฉันต้องการสร้างฟังก์ชันสำหรับการคำนวณตัวอธิบายการกรองที่รับอาร์กิวเมนต์สองตัวเป็นอินพุต ตัวหนึ่งคือรูปภาพ และตัวที่สองในเวกเตอร์ของจุดใดจุดหนึ่งในรูปภาพ ผลลัพธ์จะเป็นแถวของตัวอธิบายการร่อนขนาด 128 มิติ โดยแต่ละแถวจะสอดคล้องกับตัวอธิบายของจุดใดจุดหนึ่งในรูปภาพ สำหรับการคำนวณตัวอธิบาย SIFT เราจำเป็นต้องครอบตัดแพตช์บางส่วนรอบจุดสำคัญ (เช่น 32 x 32) และทำการประมวลผลภาพบางอย่าง (ฮิสโตแกรมของการวางแนวและทั้งหมด) คำถามของฉันที่นี่คือวิธีจัดการกับพิกเซลมุมในภาพ ตัวอย่างเช่นถ้าฉันจะให้ตำแหน่งพิกเซล (1,1) เป็นอินพุตของฟังก์ชัน แล้วจะครอบตัดแพตช์ได้อย่างไรหรือจะคำนวณคำอธิบายสำหรับตำแหน่งดังกล่าวในรูปภาพได้อย่างไร ??


person vijay    schedule 05.08.2015    source แหล่งที่มา
comment
คุณสามารถสร้างเส้นขอบรอบๆ รูปภาพขนาด 32 พิกเซล เพื่อสะท้อนภาพต้นฉบับได้ ดังนั้นแม้แต่มุมของคุณก็จะมีสี่เหลี่ยมผืนผ้าขนาด 32x32 ที่ถูกต้องอยู่รอบๆ ใน OpenCV คุณจะต้องใช้ copyMakeBorder และ BORDER_REFLECT_101   -  person Miki    schedule 05.08.2015
comment
มันจะไม่ส่งผลต่อประสิทธิภาพของ descriptor เหรอ??   -  person vijay    schedule 06.08.2015
comment
แน่นอน. นั่นเป็นเหตุผลที่คุณไม่ควรคำนวณการร่อนใกล้ขอบเขต   -  person Miki    schedule 06.08.2015
comment
โดยพื้นฐานแล้ว ตามที่ @Miki ชี้ให้เห็น คุณลักษณะในพิกเซลของภาพจะถูกคำนวณในย่านรัศมี r ยิ่ง r ยิ่งใหญ่ (ขึ้นอยู่กับคุณสมบัติ) จำนวนพิกเซลที่สูญเสียข้อมูลในภาพก็จะยิ่งมากขึ้นเท่านั้น ตัวอย่างเช่น สำหรับ r = 5 แถบพิกเซล 5 รอบๆ ขอบเขตของรูปภาพจะสูญเสียข้อมูลเมื่อคำนวณคุณลักษณะต่างๆ หากต้องการ แก้ปัญหา นี้มี เงื่อนไขขอบเขต คุณสามารถ สะท้อน, ตั้งค่าเป็น 0 หรือ ตัด รูปภาพอยู่นอกขอบเขต แต่ผลลัพธ์จะเหมือนเดิม ข้อมูลสูญหาย ดังนั้นอย่าพึ่งพาคุณสมบัติใกล้ขอบเขตมากเกินไป   -  person Imanol Luengo    schedule 07.08.2015
comment
ดูคำตอบอื่น ๆ นี้: stackoverflow.com/questions/5715220/   -  person Imanol Luengo    schedule 07.08.2015
comment
อืม โอเค... ขอบคุณนะ :)   -  person vijay    schedule 08.08.2015


คำตอบ (1)


ตามที่คนอื่นๆ ชี้ให้เห็นในความคิดเห็น ในการประมวลผลภาพ เป็นเรื่องปกติที่จะสะท้อนภาพไปที่ขอบเขต หรือบางครั้ง คุณสามารถเพิ่มศูนย์ที่ขอบเขตได้ด้วย

หาก "เวกเตอร์ของจุดสำคัญ" ที่คุณอ้างถึงคือ "จุดสำคัญ" คุณสามารถใช้ opencv เพื่อแยกคุณลักษณะ SIFT ซึ่งจะส่งคืนเวกเตอร์คุณลักษณะขนาด 128 มิติสำหรับแต่ละจุดสำคัญ

คุณไม่จำเป็นต้องคำนวณ SIFT descriptor ด้วยตนเองอย่างชัดเจน เนื่องจาก OPENCV มีวิธีการสำหรับการคำนวณดังกล่าวตามที่อธิบายไว้ใน ตัวอธิบาย SIFT

person kmario23    schedule 30.10.2016