การจำแนกพื้นผิวด้วย DCT


12

มันจะทำงานได้อย่างไรในการจำแนกพื้นผิวของภาพโดยใช้คุณสมบัติจากการแปลงโคไซน์แบบแยก? Googling "การจำแนกพื้นผิว dct" จะพบรายงานทางวิชาการเพียงเรื่องเดียวในหัวข้อนี้โดยใช้เครือข่ายประสาท

สำหรับแอปพลิเคชันของฉันฉันมีคลังข้อมูลขนาดใหญ่ของภาพซึ่งในภาพทั้งหมดเป็นพื้นผิวที่สอดคล้องกัน (เช่นภาพโคลสอัพของผ้าห่มเปลือกไม้ต้นไม้ทุ่งหญ้า ฯลฯ )

ได้รับแรงบันดาลใจจากการตอบคำถามก่อนหน้านี้ฉันกำลังพิจารณาแนวทางต่อไปนี้:

  1. แยกแต่ละภาพออกเป็นบล็อก NxN ของพิกเซล
  2. ใช้ DCT ของแต่ละบล็อก
  3. บีบ DCT แต่ละอันให้เป็นอาร์เรย์ 1xM และป้อนเข้ากับอัลกอริทึมการจัดกลุ่ม K-Means และรับฉลากคลัสเตอร์สำหรับ DCT แต่ละตัว
  4. คำนวณฮิสโตแกรมของการทำคลัสเตอร์ป้ายสำหรับแต่ละภาพโดยการนับแต่ละป้ายต่อภาพจาก # 3
  5. ฝึกอบรมตัวจําแนก SVM โดยป้อนชุด [(ฮิสโตแกรม, ป้ายรูปภาพ)

มันจะทำงานได้ดีแค่ไหน? ฉันใช้ระบบที่คล้ายกันโดยใช้คุณสมบัติที่แยกผ่านอัลกอริทึม SIFT / SURF แต่ฉันสามารถได้รับความแม่นยำประมาณ 60% เท่านั้น

ฉันสามารถใช้ DCT ในวิธีอื่นในการจำแนกพื้นผิวได้อย่างไร?


1
นี้เกือบจะเสียงเหมือนการกำหนดเครือข่ายประสาทฉันเพิ่งมีการทำเพื่อ ml-class.org
Ivo Flipse

2
@IvoFlipse: +1 สำหรับ ml-class.org อย่างไรก็ตามคำถามนี้เกี่ยวกับคุณสมบัติ ในที่สุดหากคุณสมบัติของคุณไม่เหมาะสมสำหรับปัญหามันไม่สำคัญว่าอัลกอริทึมการจำแนกของคุณดีแค่ไหน
Dima

ธนาคารแห่ง Gabor กรองอาจมีประโยชน์มากสำหรับการจำแนก textute
mrgloom

คำตอบ:


6

จนถึงสิ่งที่คุณเสนอให้ฟังดูเหมือนเป็นแนวทางที่สมเหตุสมผล อย่างไรก็ตามฉันไม่คิดว่าคุณจะรู้ว่ามันทำงานได้ดีเพียงใดจนกว่าคุณจะลองเช่นเดียวกับที่คุณลอง SIFT

ฉันมีคำถามว่า เหตุใดคุณ จำกัด ตัวเองให้ DCT มีตัวแทนจำนวนมากที่ใช้สำหรับการจำแนกพื้นผิว: การฝึกอบรมร่วม, รูปแบบไบนารีท้องถิ่น ฯลฯ ความจริงที่ว่าคุณได้พบเพียงหนึ่งกระดาษที่ใช้ DCT สำหรับการจำแนกพื้นผิวจะแนะนำว่านี่ไม่ใช่คุณสมบัติที่ใช้บ่อยที่สุด สำหรับปัญหานี้ ฉันอยากจะแนะนำให้คุณขยายการค้นหาวรรณกรรมของคุณเพื่อดูว่ามีคุณสมบัติอื่น ๆ ที่ผู้คนใช้ไปแล้วและพวกเขาทำงานได้ดีแค่ไหน


4

หากคุณไม่แยกภาพออกเป็นบล็อก NxN แต่ใช้หน้าต่างแบบเลื่อน - คำนวณ DCT สำหรับบล็อกที่อยู่กึ่งกลางแต่ละจุดของภาพโดยใช้วิธีการของเวฟเล็ต ภาพแยกของคุณเป็นบล็อกเหมือนกับการใช้หน้าต่างแบบเลื่อนและภาพสุ่ม โดยพื้นฐานแล้วคุณใช้รูปแบบการแบ่งส่วนเวฟเล็ตที่ลดลง Gabor ใช้เวฟเล็ตแทน DCT โดยทั่วไปเพราะ: มันมีพารามิเตอร์มากกว่า (+ สเกลและ + ทิศทาง) และการลดทอนที่ราบรื่น (แทนที่จะเป็นขอบคมของหน้าต่าง)


3

หนึ่งในสิ่งที่ดึงดูดใจมากที่สุดว่าทำไมเราจึงต้องการที่จะทำการแบ่งส่วน / การจำแนกพื้นผิวตาม DCT (หรือกิจกรรมอื่น ๆ ) คือข้อเท็จจริงที่ว่าภาพ JPEG และวิดีโอ MPEG ส่วนใหญ่อยู่ใน DCT อยู่แล้ว ในทางกลับกันก็เชื่อกันโดยทั่วไปว่าวิธีการตาม Gabor เป็นค่าใช้จ่ายในการคำนวณ

DCT co-efficients MID กับความถี่สูงและหรือความถี่ในแนวทแยงสะท้อนให้เห็นถึงการเป็นตัวแทนที่ดีของการเปลี่ยนแปลงในท้องถิ่นในโดเมนพิกเซล

อย่างไรก็ตามสิ่งนี้อาจไม่ดีเท่าที่ควร ก่อนอื่นในบล็อกมาตรฐาน DCT ส่วนใหญ่มีขนาด 8x8 ดังนั้นความหมายโดยนัยก็คือถ้าฉากมีรูปแบบซึ่งมีระยะจุดพิกเซล 8 จุดเอฟเฟกต์การสะท้อนแสงนี้จะมองเห็นได้ในแง่ของความคล้ายคลึงกันของประสิทธิภาพร่วมที่สอดคล้องกันของบล็อกที่อยู่ติดกัน

ทำความเข้าใจกับความแตกต่างที่สำคัญระหว่างบล็อกบริสุทธิ์ของ DCT กับ Gabor คือ Gabor มีสเกล ดังนั้นหากคุณเปลี่ยน "ระยะเวลา" หรือ "ความละเอียด / ความหยาบ" ของพื้นผิว Gabor จะค้นพบว่าขนาดการบล็อกคงที่ที่ 8x8 บล็อกของ DCT จะไม่เหมาะสม

อย่างไรก็ตามสิ่งที่เราต้องตระหนักก็คือการสร้างรูปแบบดังกล่าวโดยการดูหลายบล็อกด้วยกันเพื่อประเมินปรากฏการณ์ของสเกล เป็นแนวทางพื้นฐานเช่นถามว่าฉันจะมีบล็อกขนาด 16x16 หรือขนาดบล็อกขนาด 32x32 จะมีรูปแบบผลลัพธ์ใดใน co-efficients หรือไม่ ผู้มีส่วนร่วมในสถานที่นั้นจะมีความสัมพันธ์ในการใช้ประโยชน์และอนุญาตให้หนึ่งค้นพบขนาดที่แท้จริงของพื้นผิว

นี่เป็นหัวข้อการวิจัยที่ดีที่ควรทำ

หมายเหตุ: แม้แต่ MPEG7 (ซึ่งอยู่ใกล้กับคณะกรรมการที่สร้าง MPEG) - พวกเขาเสนอคุณสมบัติแบบ Gabor สำหรับพื้นผิวมากกว่าแบบ DCT

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.