ฉันอยากจะแนะนำให้พิจารณาย้ายออกจากการใช้เพียง RGB ฮิสโตแกรม
ภาพของคุณจะได้รับการย่อยที่ดีขึ้นหากคุณใช้คลื่น 2d Haar ของภาพ (มันง่ายกว่าที่คิดมากมันเป็นเพียงค่าเฉลี่ยจำนวนมากและรากที่สองบางส่วนที่ใช้ในการถ่วงน้ำหนักสัมประสิทธิ์ของคุณ) และเพียงแค่รักษา k ที่ใหญ่ที่สุด ค่าสัมประสิทธิ์การถ่วงน้ำหนักในเวฟเล็ตเป็นเวกเตอร์กระจัดกระจายทำให้เป็นมาตรฐานและบันทึกเพื่อลดขนาด คุณควรปรับขนาด RG และ B โดยใช้น้ำหนักการรับรู้ล่วงหน้าอย่างน้อยที่สุดหรือขอแนะนำให้เปลี่ยนไปใช้ YIQ (หรือ YCoCg เพื่อหลีกเลี่ยงเสียงรบกวนเชิงปริมาณ) เพื่อให้คุณสามารถสุ่มตัวอย่างข้อมูลโครเมียมที่มีความสำคัญลดลง
ตอนนี้คุณสามารถใช้ดอทโปรดัคของเวกเตอร์ปกติแบบกระจัดกระจายสองตัวนี้เป็นตัววัดความคล้ายคลึงกันได้ ภาพที่จับคู่กับผลิตภัณฑ์จุดที่ใหญ่ที่สุดจะมีโครงสร้างใกล้เคียงกันมาก สิ่งนี้มีประโยชน์ในการทนต่อการปรับขนาดการเปลี่ยนสีและการกำหนดลายน้ำเล็กน้อยและใช้งานง่ายและกะทัดรัด
คุณสามารถแลกเปลี่ยนพื้นที่เก็บข้อมูลและความแม่นยำได้โดยเพิ่มหรือลด k
การจัดเรียงตามคะแนนตัวเลขเดียวจะยากสำหรับปัญหาการจำแนกประเภทนี้ หากคุณคิดว่ามันต้องการให้รูปภาพสามารถ 'เปลี่ยน' ตามแกนเดียวเท่านั้น แต่ไม่สามารถทำได้ นี่คือเหตุผลที่คุณต้องมีเวกเตอร์ของคุณสมบัติ ในกรณีของเวฟเล็ต Haar เป็นจุดที่เกิดความไม่ต่อเนื่องที่คมชัดที่สุดในภาพโดยประมาณ คุณสามารถคำนวณระยะห่างระหว่างรูปภาพแบบคู่กันได้ แต่เนื่องจากสิ่งที่คุณมีคือตัวชี้วัดระยะทางการจัดลำดับเชิงเส้นจึงไม่มีทางที่จะแสดง 'สามเหลี่ยม' ของ 3 ภาพที่มีระยะห่างเท่ากัน (เช่นนึกถึงภาพที่เป็นสีเขียวทั้งหมดภาพที่เป็นสีแดงทั้งหมดและภาพที่เป็นสีน้ำเงินทั้งหมด)
นั่นหมายความว่าวิธีแก้ปัญหาที่แท้จริงของคุณจะต้องมีการดำเนินการ O (n ^ 2) ในจำนวนภาพที่คุณมี ในขณะที่ถ้าเป็นไปได้ที่จะทำให้การวัดเป็นเชิงเส้นคุณอาจต้องการเพียงแค่ O (n log n) หรือ O (n) ถ้าการวัดนั้นเหมาะสมกับการจัดเรียงแบบรัศมี ที่กล่าวว่าคุณไม่จำเป็นต้องใช้ O (n ^ 2) เนื่องจากในทางปฏิบัติคุณไม่จำเป็นต้องกรองทั้งชุดคุณเพียงแค่ต้องหาของที่ใกล้กว่าเกณฑ์บางอย่าง ดังนั้นการใช้หนึ่งในเทคนิคหลายอย่างในการแบ่งพื้นที่เวกเตอร์กระจัดกระจายของคุณคุณจะได้รับ asymptotics ที่เร็วกว่ามากสำหรับปัญหา 'find me k ของภาพที่คล้ายกันมากกว่าเกณฑ์ที่กำหนด' มากกว่าการเปรียบเทียบทุกภาพกับทุกภาพอย่างไร้เดียงสา คุณน่าจะต้องการ ... หากไม่ตรงกับสิ่งที่คุณขอ
ไม่ว่าในกรณีใดฉันใช้สิ่งนี้เมื่อสองสามปีก่อนเพื่อให้เกิดผลดีเป็นการส่วนตัวเมื่อพยายามลดจำนวนพื้นผิวที่แตกต่างกันที่ฉันจัดเก็บ แต่ก็มีเสียงการวิจัยจำนวนมากในพื้นที่นี้แสดงให้เห็นถึงประสิทธิภาพ (และในกรณีนี้เปรียบเทียบ เป็นรูปแบบการจำแนกฮิสโตแกรมที่ซับซ้อนยิ่งขึ้น):
http://www.cs.princeton.edu/cass/papers/spam_ceas07.pdf
หากคุณต้องการความแม่นยำในการตรวจจับที่ดีขึ้นอัลกอริทึม minHash และ tf-idf สามารถใช้กับ Haar wavelet (หรือฮิสโตแกรม) เพื่อจัดการกับการแก้ไขได้อย่างมีประสิทธิภาพมากขึ้น:
http://cmp.felk.cvut.cz/~chum/papers/chum_bmvc08.pdf
สุดท้ายสแตนฟอร์ดมีการค้นหารูปภาพตามรูปแบบที่แปลกใหม่กว่าของวิธีการประเภทนี้โดยอาศัยการแยกคุณสมบัติเพิ่มเติมจากเวฟเล็ตเพื่อค้นหาส่วนที่หมุนหรือปรับขนาดของภาพ ฯลฯ แต่นั่นอาจจะเกินจำนวนงานของคุณ ต้องการทำ
http://wang14.ist.psu.edu/cgi-bin/zwang/regionsearch_show.cgi