อัลกอริทึมเพื่อเปรียบเทียบภาพสองภาพ


158

ไฟล์รูปภาพที่แตกต่างกันสองไฟล์ (ในรูปแบบที่ฉันเลือก) ฉันต้องเขียนโปรแกรมเพื่อทำนายโอกาสหากไฟล์นั้นเป็นสำเนาที่ผิดกฎหมายของไฟล์อื่น ผู้เขียนสำเนาอาจทำสิ่งต่าง ๆ เช่นหมุนหมุนลบหรือเพิ่มรายละเอียดเล็กน้อย (รวมถึงการเปลี่ยนมิติของภาพ)

คุณรู้จักอัลกอริทึมในการทำงานประเภทนี้หรือไม่?


12
คุณจะกำหนดได้อย่างไรว่าอันไหนเป็นต้นฉบับ?
jfs

1
ฉันเดาว่าเขามีต้นฉบับและต้องการตรวจสอบว่าไฟล์ต่างประเทศเป็นสำเนาที่เปลี่ยนรูปหรือไม่เกี่ยวข้องกับต้นฉบับ
unfa

คำตอบ:


304

เหล่านี้เป็นเพียงความคิดที่ฉันคิดเกี่ยวกับปัญหาไม่เคยลอง แต่ฉันชอบคิดเกี่ยวกับปัญหาเช่นนี้!

ก่อนที่จะเริ่ม

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

พิจารณาการสแกนในบริเวณที่มีโอกาสต่าง ๆ ของภาพที่สามารถแสดงส่วนที่ซูมของภาพและตำแหน่งและการหมุนต่างๆ มันเริ่มยากหากภาพหนึ่งเป็นภาพเอียงอีกภาพหนึ่งเป็นข้อ จำกัด ที่คุณควรระบุและประนีประนอม

Matlabเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการทดสอบและประเมินภาพ

ทดสอบอัลกอริทึม

คุณควรทดสอบ (อย่างน้อยที่สุด) ชุดข้อมูลทดสอบที่วิเคราะห์โดยมนุษย์ขนาดใหญ่ซึ่งเป็นที่รู้จักกันล่วงหน้า หากตัวอย่างในข้อมูลการทดสอบของคุณมี 1,000 ภาพที่ 5% ของภาพตรงกันตอนนี้คุณมีเกณฑ์มาตรฐานที่เชื่อถือได้อย่างสมเหตุสมผล อัลกอริทึมที่พบผลบวก 10% นั้นไม่ดีเท่าที่พบ 4% ของผลบวกในข้อมูลการทดสอบของเรา อย่างไรก็ตามอัลกอริทึมหนึ่งอาจพบการแข่งขันทั้งหมด แต่ก็มีอัตราบวกปลอมที่มีขนาดใหญ่ 20% ดังนั้นจึงมีหลายวิธีในการให้คะแนนอัลกอริทึมของคุณ

ข้อมูลการทดสอบควรพยายามออกแบบให้ครอบคลุมพลวัตหลายประเภทมากที่สุดเท่าที่จะเป็นไปได้ในโลกแห่งความเป็นจริง

เป็นสิ่งสำคัญที่จะต้องทราบว่าอัลกอริทึมแต่ละอย่างที่มีประโยชน์จะต้องทำงานได้ดีกว่าการคาดเดาแบบสุ่มไม่อย่างนั้นมันไร้ประโยชน์สำหรับเรา!

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

ถังสี

ด้วยภาพสองภาพสแกนแต่ละพิกเซลและนับจำนวนสี ตัวอย่างเช่นคุณอาจมี 'ถัง':

white
red
blue
green
black

(เห็นได้ชัดว่าคุณจะมีความละเอียดสูงกว่าของเคาน์เตอร์) ทุกครั้งที่คุณพบพิกเซล 'สีแดง' คุณจะเพิ่มตัวนับสีแดง ถังแต่ละใบสามารถเป็นตัวแทนของสเปกตรัมของสีความละเอียดสูงขึ้นแม่นยำยิ่งขึ้น แต่คุณควรทดสอบด้วยอัตราความแตกต่างที่ยอมรับได้

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

การตรวจจับขอบ

วิธีการเกี่ยวกับการใช้ขอบตรวจสอบ (ที่มา: wikimedia.org )ข้อความแสดงแทน

ด้วยการตรวจจับขอบภาพสองภาพที่คล้ายกันจะช่วยให้คุณใช้งานได้จริงและเชื่อถือได้

ถ่ายภาพทั้งสองและใช้การตรวจจับขอบ อาจวัดความหนาเฉลี่ยของขอบแล้วคำนวณความน่าจะเป็นที่ภาพจะถูกลดขนาดแล้วลดขนาดลงถ้าจำเป็น ด้านล่างเป็นตัวอย่างของตัวกรอง Gabor ที่ใช้(การตรวจจับขอบชนิด) ในการหมุนแบบต่างๆ

ข้อความแสดงแทน

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

ภูมิภาคที่น่าสนใจ

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

ข้อความแสดงแทน
(ที่มา: meetthegimp.org )

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

หากคุณมีความสนใจมากกว่า 2 ภูมิภาคคุณสามารถวัดระยะทางระหว่างพวกเขาได้ ทำตัวอย่างง่าย ๆ นี้:

ข้อความแสดงแทน
(ที่มา: per2000.eu )

เรามีจุดสนใจที่ชัดเจน 3 ภูมิภาค ระยะห่างระหว่างภูมิภาค 1 และ 2 อาจเป็น 200 พิกเซลระหว่าง 1 และ 3 400 พิกเซลและ 2 และ 3 200 พิกเซล

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

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

morphing

Morphingสองภาพเป็นกระบวนการของการเปลี่ยนภาพหนึ่งภาพในอื่น ๆ ผ่านชุดของขั้นตอนนี้:

ข้อความแสดงแทน

หมายเหตุนี่แตกต่างจากการซีดจางภาพหนึ่งไปอีกภาพหนึ่ง!

มีชุดซอฟต์แวร์มากมายที่สามารถเปลี่ยนภาพ มันเป็นประเพณีที่ใช้เป็นเอฟเฟ็กต์การนำส่งภาพสองภาพไม่ได้แปรเปลี่ยนไปตามปกติโดยทั่วไปแล้วหนึ่งภาพสุดขั้วไปสู่อีกขั้วหนึ่งเป็นผลลัพธ์สุดท้าย

ทำไมสิ่งนี้ถึงมีประโยชน์ ขึ้นอยู่กับอัลกอริทึม morphing ที่คุณใช้อาจมีความสัมพันธ์ระหว่างความคล้ายคลึงกันของภาพและพารามิเตอร์บางอย่างของอัลกอริทึม morphing

ในตัวอย่างที่เรียบง่ายอย่างไม่มีการลดขั้นตอนวิธีหนึ่งอาจทำงานได้เร็วขึ้นเมื่อมีการเปลี่ยนแปลงน้อยลง จากนั้นเรารู้ว่ามีความเป็นไปได้สูงกว่าที่ภาพทั้งสองนี้จะแบ่งปันคุณสมบัติซึ่งกันและกัน

เทคนิคนี้สามารถใช้งานได้ดีกับภาพที่หมุน, บิดเบี้ยว, บิดเบี้ยว, เบลอ, ซูมทุกประเภท อีกครั้งนี้เป็นเพียงความคิดที่ฉันมีมันไม่ได้ขึ้นอยู่กับสถาบันการศึกษาวิจัยใด ๆ เท่าที่ฉันรู้ (ฉันไม่ได้ดูยากเลย) ดังนั้นมันอาจจะเป็นงานจำนวนมากสำหรับคุณที่มีผลลัพธ์ จำกัด / ไม่มี

ซิป

จากคำตอบของคำถามนี้ยอดเยี่ยมมากฉันจำได้ว่าได้อ่านเกี่ยวกับเทคนิคการศึกษา AI มันค่อนข้างมีประสิทธิภาพในการเปรียบเทียบคลังศัพท์

การเพิ่มประสิทธิภาพที่น่าสนใจอย่างหนึ่งเมื่อทำการเปรียบเทียบคลังข้อมูลคือคุณสามารถลบคำที่ถือว่าเป็นคำที่ธรรมดาเกินไปเช่น 'The', 'A', 'และ' ฯลฯ คำเหล่านี้ทำให้เจือจางผลลัพธ์ของเราเราต้องการหาว่าคลังข้อมูลทั้งสองนั้นแตกต่างกันอย่างไร ดังนั้นสิ่งเหล่านี้สามารถลบออกได้ก่อนการประมวลผล บางทีอาจมีสัญญาณทั่วไปที่คล้ายกันในภาพที่สามารถถอดได้ก่อนการบีบอัด? มันอาจคุ้มค่าที่จะดู

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

ความโปร่งใส

ฉันไม่แน่ใจอีกครั้งว่าข้อมูลความโปร่งใสถูกเก็บไว้สำหรับภาพบางประเภท, gif png ฯลฯ แต่จะแยกออกได้และจะทำหน้าที่เป็นตัวย่อที่มีประสิทธิภาพตัดออกมาเพื่อเปรียบเทียบกับชุดข้อมูลของคุณโปร่งใส

สัญญาณอินเวอร์เตอร์

ภาพเป็นเพียงสัญญาณ หากคุณเล่นเสียงรบกวนจากลำโพงและคุณเล่นเสียงตรงกันข้ามในลำโพงอื่นด้วยการซิงค์ที่สมบูรณ์แบบในระดับเสียงเดียวกันพวกเขาจะยกเลิกซึ่งกันและกัน

ข้อความแสดงแทน
(ที่มา: themotorreport.com.au )

กลับภาพและเพิ่มลงในภาพอื่นของคุณ ขยาย / วางตำแหน่งวนซ้ำจนกว่าคุณจะพบภาพผลลัพธ์ที่มีพิกเซลมากพอที่เป็นสีขาว (หรือดำฉันจะเรียกมันว่าเป็นผืนผ้าใบที่เป็นกลาง) เพื่อให้คุณได้คู่ที่เป็นบวกหรือจับคู่บางส่วน

อย่างไรก็ตามให้พิจารณาสองภาพที่มีความเท่าเทียมกันยกเว้นหนึ่งในนั้นมีเอฟเฟกต์ที่สว่างขึ้นมาใช้กับมัน:

ข้อความแสดงแทน
(ที่มา: mcburrz.com )

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

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

โครงสร้างข้อมูลต้นไม้

ตอนแรกสิ่งเหล่านี้ดูเหมือนจะไม่เหมาะกับปัญหา แต่ฉันคิดว่าพวกเขาสามารถทำงานได้

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

สิ่งนี้อาจใช้ไม่ได้ แต่เป็นแนวคิด โครงสร้างข้อมูลtrieนั้นยอดเยี่ยมในการจัดเก็บ lexicons เช่น dictionarty มันเป็นต้นไม้คำนำหน้า บางทีมันอาจเป็นไปได้ที่จะสร้างภาพที่เทียบเท่ากับพจนานุกรม (อีกครั้งที่ฉันสามารถนึกถึงสี) เพื่อสร้างคู่ชีวิต หากคุณลดขนาดรูปภาพขนาด 300x300 ลงเป็น 5x5 สี่เหลี่ยมแล้วให้ย่อยแต่ละตาราง 5x5 ลงในลำดับสีที่คุณสามารถสร้าง trie จากข้อมูลที่ได้ หากจตุรัส 2x2 มี:

FFFFFF|000000|FDFD44|FFFFFF

เรามีรหัส trie ที่ไม่เหมือนใครซึ่งขยายได้ 24 ระดับการเพิ่ม / ลดระดับ (IE การลด / เพิ่มขนาดของตารางย่อยของเรา) อาจให้ผลลัพธ์ที่แม่นยำยิ่งขึ้น

การเปรียบเทียบต้นไม้ทั้งสองควรง่ายพอสมควรและเป็นไปได้ที่จะให้ผลลัพธ์ที่มีประสิทธิภาพ

แนวคิดเพิ่มเติม

ฉันพบสิ่งที่น่าสนใจเกี่ยวกับการจัดประเภทของภาพถ่ายดาวเทียมโดยสรุป:

การวัดพื้นผิวที่พิจารณาคือ: เมทริกซ์ cooccurrence, ความแตกต่างระดับสีเทา, การวิเคราะห์พื้นผิวโทน, คุณสมบัติที่ได้จากสเปกตรัมฟูริเยร์และตัวกรอง Gabor คุณลักษณะของฟูเรียร์และตัวกรอง Gabor บางตัวพบว่าเป็นตัวเลือกที่ดีโดยเฉพาะเมื่อมีการใช้แถบความถี่เดียวสำหรับการจำแนกประเภท

อาจเป็นประโยชน์ในการตรวจสอบการวัดเหล่านั้นในรายละเอียดเพิ่มเติมแม้ว่าบางส่วนอาจไม่เกี่ยวข้องกับชุดข้อมูลของคุณ

สิ่งอื่นที่ต้องพิจารณา

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

แต่ละวิธีอาจจะต้องมีการทดสอบและปรับแต่งอย่างละเอียดถี่ถ้วนหากคุณมีข้อมูลเกี่ยวกับประเภทของภาพที่คุณจะตรวจสอบเช่นนี้จะเป็นประโยชน์ ตัวอย่างเช่นโฆษณาหลาย ๆ อันจะมีข้อความอยู่ในตัวดังนั้นการจดจำข้อความจึงเป็นวิธีที่ง่ายและน่าเชื่อถือมากในการค้นหาการจับคู่โดยเฉพาะเมื่อรวมกับโซลูชันอื่น ๆ ตามที่กล่าวไว้ก่อนหน้านี้พยายามใช้ประโยชน์จากคุณสมบัติทั่วไปของชุดข้อมูลของคุณ

การรวมการวัดและเทคนิคทางเลือกเข้าด้วยกันซึ่งสามารถมีการลงคะแนนถ่วงน้ำหนัก (ขึ้นอยู่กับประสิทธิผล) จะเป็นวิธีหนึ่งที่คุณสามารถสร้างระบบที่สร้างผลลัพธ์ที่แม่นยำยิ่งขึ้น

หากใช้อัลกอริทึมหลายตัวดังที่กล่าวไว้ในตอนต้นของคำตอบนี้อาจพบว่าผลบวกทั้งหมด แต่มีอัตราบวกเป็นเท็จ 20% มันจะเป็นที่สนใจในการศึกษาคุณสมบัติ / จุดแข็ง / จุดอ่อนของอัลกอริทึมอื่น ๆ มีประสิทธิภาพในการกำจัดผลบวกปลอมที่ส่งคืนจากที่อื่น

ระวังอย่าให้ตกอยู่ในความพยายามที่จะทำโครงการที่ไม่มีวันจบขอให้โชคดี!


22
การตอบสนองที่ยอดเยี่ยม ความรุ่งโรจน์สำหรับความคิดที่ดีและคำตอบที่ตรัสรู้
Andrew Hubbs

ขอบคุณ! ฉันหวังว่าจะขยายในวันพรุ่งนี้ฉันมีความคิดเพิ่มเติมที่ฉันต้องการคิดและค้นหา
Tom Gullen

สวัสดีทอม - คุณรู้จักห้องสมุดตรวจจับขอบโอเพนซอร์ซ, pref in java หรือไม่?
Richard H

1
สวัสดีริชาร์ดไม่ได้ขอโทษ แต่ฉันแน่ใจว่ามีบางอย่างที่นั่น ค้นหา "ตัวกรอง Java Gabor" บน Google หรือ "การตรวจจับขอบ Java" และฉันแน่ใจว่าคุณจะเจอหนึ่งหรือสองตัว
Tom Gullen

ลิงก์สำหรับรูปภาพ ( blog.meetthegimp.orgwp-content / uploads / 2009/04 / 97.jpg ) ผิดพลาด โปรดทราบว่า stackoverflow ตอนนี้มีบริการโฮสต์รูปภาพ
ThomasW

36

อ่านกระดาษ: Porikli, Fatih, Oncel Tuzel และ Peter Meer “ การติดตามความแปรปรวนร่วมโดยใช้การอัปเดตโมเดลตามวิธีการใน Riemannian Manifolds” (2006) การมองเห็นและการจดจำรูปแบบของคอมพิวเตอร์ IEEE

ฉันสามารถตรวจจับภูมิภาคที่ทับซ้อนกันในภาพที่ถ่ายจากเว็บแคมที่อยู่ติดกันโดยใช้เทคนิคที่นำเสนอในบทความนี้ เมทริกซ์ความแปรปรวนร่วมของฉันประกอบด้วย Sobel, แสนรู้และ SUSAN เอาต์พุต / การตรวจจับขอบภาพเช่นเดียวกับพิกเซลเฉดสีเทาดั้งเดิม


1
@Satoru ตรรกะ: ฮิตแสดงให้เห็นว่าการค้นหาของ Google บนกระดาษ: google.com/...
Nick

34

ความคิด:

  1. ใช้เครื่องตรวจจับ keypoint เพื่อค้นหา descriptor ที่ปรับขนาดและเปลี่ยนแปลงของบางจุดในภาพ (เช่น SIFT, SURF, GLOH หรือ LESH)
  2. พยายามจัดตำแหน่งจุดสำคัญด้วยคำอธิบายที่คล้ายกันจากทั้งสองภาพ (เช่นในการเย็บแบบพาโนรามา) อนุญาตให้มีการแปลงภาพบางภาพหากจำเป็น (เช่นขนาด & หมุนหรือการยืดแบบยืดหยุ่น)
  3. หากมีจุดสำคัญหลายจุดสอดคล้องกัน (การแปลงดังกล่าวมีข้อผิดพลาดการจัดตำแหน่งจุดสำคัญต่ำหรือการเปลี่ยนแปลง "พลังงาน" ต่ำ ฯลฯ ) คุณอาจมีภาพที่คล้ายกัน

ขั้นตอนที่ 2 นั้นไม่สำคัญ โดยเฉพาะอย่างยิ่งคุณอาจต้องใช้อัลกอริทึมสมาร์ทเพื่อค้นหาประเด็นสำคัญที่คล้ายกันที่สุดในภาพอื่น ๆ Point descriptors มักจะเป็นมิติสูงมาก (เช่นพารามิเตอร์ร้อย) และมีหลายจุดที่ต้องมองผ่าน kd-trees อาจมีประโยชน์ที่นี่การแฮชการค้นหาทำงานได้ไม่ดี

สายพันธุ์:

  • ตรวจจับขอบหรือคุณสมบัติอื่น ๆ แทนที่จะเป็นจุด

2
ฉันคิดว่านั่นเป็นแนวทางที่ถูกต้องเช่นกัน เพียงรายละเอียด: SIFT, SURF, GLOH ไม่ใช่เครื่องมือตรวจจับจุดสำคัญ พวกเขาเป็นตัวบ่งชี้ประเด็นสำคัญ เครื่องตรวจจับ keypoint ทั่วไปคือเครื่องตรวจจับ DoG, Harris หรือ Eigenvalue
Niki

สำหรับขั้นตอนที่ 2 คุณสามารถใช้เพื่อนบ้านที่ใกล้ที่สุดซึ่งใช้ระยะทางแบบยุคลิดระหว่างตัวอธิบาย
MobileCushion

15

มันง่ายกว่าที่คิด :-) ข้อเสนอแนะของ Nick ดีมาก

ในการเริ่มต้นโปรดจำไว้ว่าวิธีการเปรียบเทียบที่คุ้มค่าจะใช้งานได้เป็นอย่างดีโดยการแปลงภาพให้อยู่ในรูปแบบที่แตกต่างกัน - แบบฟอร์มที่ทำให้ง่ายต่อการเลือกคุณสมบัติที่คล้ายกัน โดยปกติแล้วสิ่งนี้ไม่ได้ทำให้การอ่านเบามาก ...


หนึ่งในตัวอย่างที่ง่ายที่สุดที่ฉันนึกได้ก็คือใช้พื้นที่สีของแต่ละภาพ หากภาพสองภาพมีการกระจายสีที่คล้ายกันมากคุณสามารถมั่นใจได้ว่าภาพเหล่านั้นแสดงในสิ่งเดียวกัน อย่างน้อยคุณสามารถมีความมั่นใจเพียงพอที่จะติดธงทำเครื่องหมายหรือทำการทดสอบเพิ่มเติม การเปรียบเทียบภาพในพื้นที่สีจะต่อต้านสิ่งต่างๆเช่นการหมุนการปรับขนาดและการครอบตัดบางอย่าง แน่นอนว่ามันจะไม่ต่อต้านการดัดแปลงภาพอย่างหนักหรือการเปลี่ยนสีใหม่อย่างหนัก (และแม้แต่การเปลี่ยนเฉดสีที่เรียบง่ายก็ยังค่อนข้างยุ่งยาก)

http://en.wikipedia.org/wiki/RGB_color_space
http://upvector.com/index.php?section=tutorials&subsection=tutorials/colorspace


อีกตัวอย่างหนึ่งเกี่ยวข้องกับสิ่งที่เรียกว่า Hough Transform การแปลงนี้จะทำให้รูปภาพแตกสลายเป็นชุด จากนั้นคุณสามารถนำเส้นที่ 'แข็งแกร่งที่สุด' ในแต่ละภาพและดูว่าพวกเขาเข้าแถวกันหรือไม่ คุณสามารถทำงานพิเศษเพื่อลองและชดเชยการหมุนและการปรับสเกลได้เช่นกันและในกรณีนี้เนื่องจากการเปรียบเทียบสองสามบรรทัดนั้นเป็นงานคำนวณที่น้อยกว่าการทำแบบเดียวกันกับภาพทั้งหมด - มันจะไม่เลวร้ายนัก

http://homepages.inf.ed.ac.uk/amos/hough.html
http://rkb.home.cern.ch/rkb/AN16pp/node122.html
http://en.wikipedia.org/wiki/ Hough_transform


8

ในแบบฟอร์มที่คุณอธิบายปัญหานั้นยาก คุณพิจารณาการคัดลอกวางส่วนของภาพไปยังอีกภาพที่ใหญ่กว่าเป็นสำเนา เป็นต้น

หากคุณย้อนกลับไปคุณจะสามารถแก้ไขได้ง่ายกว่าหากคุณใส่ลายน้ำในภาพต้นแบบ คุณจะต้องใช้รูปแบบลายน้ำเพื่อฝังโค้ดลงในภาพ เมื่อต้องการย้อนกลับไปเมื่อเทียบกับวิธีการระดับต่ำบางอย่าง (การตรวจจับขอบ ฯลฯ ) ที่เสนอโดยบุคคลบางคนวิธีการใส่ลายน้ำจึงเหนือกว่าเพราะ:

มันทนต่อการโจมตีการประมวลผลสัญญาณ►การเพิ่มประสิทธิภาพสัญญาณ - ความคมชัดความคมชัด ฯลฯ ►การกรอง - ค่ามัธยฐาน, ความถี่ต่ำ, ความถี่สูง, ฯลฯ ►สัญญาณรบกวนเพิ่มเติม - แบบเกาส์, เครื่องแบบ, ฯลฯ ►การบีบอัดแบบสูญหาย - JPEG, MPEG เป็นต้น

มันทนต่อการโจมตีทางเรขาคณิต► Affine transforms ►การลดข้อมูล - การครอบตัดการตัดและอื่น ๆ ►การบิดเบือนในพื้นที่แบบสุ่ม►การแปรปรวน

ทำวิจัยเกี่ยวกับอัลกอริธึมการใส่ลายน้ำและคุณจะอยู่บนเส้นทางที่ถูกต้องในการแก้ปัญหาของคุณ (หมายเหตุ: คุณสามารถเกณฑ์มาตรฐานวิธีการของคุณโดยใช้ชุดข้อมูลSTIRMARKมันเป็นมาตรฐานที่ยอมรับสำหรับการใช้งานประเภทนี้


5

นี่เป็นเพียงข้อเสนอแนะมันอาจใช้งานไม่ได้และฉันพร้อมที่จะรับการเรียกใช้ในสิ่งนี้

สิ่งนี้จะสร้างผลบวกที่เป็นเท็จ แต่หวังว่าจะไม่ใช่เชิงลบที่เป็นเท็จ

  1. ปรับขนาดภาพทั้งสองเพื่อให้มีขนาดเท่ากัน (ฉันถือว่าอัตราส่วนของความกว้างต่อความยาวเท่ากันในภาพทั้งสอง)

  2. บีบอัดบิตแมปของภาพทั้งสองด้วยอัลกอริทึมการบีบอัดแบบ lossless (เช่น gzip)

  3. ค้นหาคู่ของไฟล์ที่มีขนาดไฟล์ใกล้เคียงกัน ตัวอย่างเช่นคุณสามารถเรียงลำดับไฟล์ทุกคู่ที่คุณมีโดยขนาดไฟล์ที่คล้ายกันและเรียกใช้ X อันดับสูงสุด

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


ฉันชอบโซลูชันนี้มากใช้งานง่ายและฉันเชื่อว่ามันจะให้อัตราการระบุที่ดีกว่าแบบสุ่ม
Tom Gullen

นี่เป็นคำถาม: มันใช้งานได้หรือไม่ถ้าสำเนาถูกบันทึกด้วยความละเอียดที่ต่างกัน?
ดร. เบลิซาเรียส

4

ฉันเชื่อว่าถ้าคุณยินดีที่จะใช้วิธีการในทุกทิศทางที่เป็นไปได้และรุ่นที่เป็นลบการเริ่มต้นที่ดีในการจดจำรูปภาพ (ด้วยความน่าเชื่อถือที่ดี) คือการใช้ eigenfaces: http://en.wikipedia.org/wiki/Eigenface

ความคิดอีกอย่างหนึ่งก็คือการแปลงภาพทั้งสองให้เป็นองค์ประกอบของเวกเตอร์ วิธีที่ดีในการทำเช่นนี้คือการสร้างเวกเตอร์ที่ทำงานในมิติ x * y (x คือความกว้างของภาพของคุณและ y เป็นความสูง) โดยมีค่าสำหรับแต่ละมิติที่ใช้กับค่าพิกเซล (x, y) จากนั้นจึงเรียกใช้ตัวแปร K- เพื่อนบ้านที่ใกล้ที่สุดที่มีสองประเภท: การจับคู่และไม่มีการแข่งขัน ถ้ามันใกล้เคียงกับภาพต้นฉบับพอสมควรภาพนั้นจะอยู่ในหมวดหมู่การจับคู่หากไม่เป็นเช่นนั้น

K Neighbourhood ที่ใกล้ที่สุด (KNN) สามารถพบได้ที่นี่มีคำอธิบายที่ดีอื่น ๆ บนเว็บเช่นกัน: http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm

ประโยชน์ของ KNN คือยิ่งคุณเปรียบเทียบสายพันธุ์ต่างกับภาพต้นฉบับมากเท่าไหร่ขั้นตอนวิธีก็ยิ่งแม่นยำมากขึ้นเท่านั้น ข้อเสียคือคุณต้องมีแคตตาล็อกภาพเพื่อฝึกฝนระบบก่อน


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

เว้นแต่ฉันจะเข้าใจผิดว่าคุณตั้งใจจะใช้
ทอมกัลเลน

ที่จริงฉันเชื่อว่าอัลกอริทึมทำงานโดยไม่คำนึงถึงเรื่องดังนั้นถ้าคุณเปรียบเทียบต้นไม้มันก็จะมีประโยชน์ มันเกิดขึ้นที่เรียกว่า Eigenfaces เพราะมันเกี่ยวข้องกับการจดจำใบหน้า ตราบใดที่รายการที่จะค้นหามีคุณสมบัติโดยรวมเช่นเดียวกับรายการที่คุณเปรียบเทียบกับรายการก็ยังใช้งานได้
Nick Udell

ยาวเกินกว่าที่จะเพิ่มลงในความคิดเห็นก่อนหน้า: เช่นกัน: Eigenfaces เปรียบเทียบภาพทั้งหมดไม่ใช่แค่ใบหน้าบนหน้าจอ ตัวอย่างในวิกิพีเดียใช้ใบหน้าที่ถูกครอบตัดเท่านั้นเนื่องจากแอปพลิเคชันดั้งเดิมคือการจดจำใบหน้าซึ่งมีเพียงใบหน้าเท่านั้นที่มีประโยชน์ หากนักแสดงของคุณปรากฏในตำแหน่งที่แตกต่างกันก็จะถูกตั้งค่าสถานะที่แตกต่างกัน
Nick Udell

1
ฉันสงสัยว่าการใช้ KNN โดยตรงกับค่าพิกเซลแบบดิบจะช่วยได้มากเช่นกัน โดยทั่วไปการแปล / การหมุนภาพขนาดเล็กจะนำไปสู่ความแตกต่างอย่างมากในค่าพิกเซลแบบดิบโดยเฉพาะอย่างยิ่งหากภาพมีความคมชัดหรือเส้นบาง ๆ ดังนั้นการแปลงภาพเวอร์ชั่นเดียวกันโดยพลการไม่ได้อยู่ใกล้กันในพื้นที่นั้น (พวกเขาไม่ตกอยู่ในกลุ่ม) และ KNN ก็ทำงานได้ไม่ดีนัก ฉันคิดว่ามันสามารถทำงานได้ดีกับฮิสโทแกรมภาพหรือการแปลงรูปที่ไม่แปรเปลี่ยนอื่น ๆ
Niki

1

หากคุณยินดีที่จะพิจารณาวิธีการที่แตกต่างกันทั้งหมดเพื่อตรวจสอบสำเนาที่ผิดกฎหมายของภาพของคุณคุณสามารถพิจารณาลายน้ำ (จาก 1.4)

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

แม้ว่ามันจะเป็นฟิลด์ที่ซับซ้อน แต่ก็มีเทคนิคที่ช่วยให้ข้อมูลลายน้ำยังคงอยู่ผ่านการแก้ไขภาพรวม: (จาก 1.9)

... การแปลงสัญญาณใด ๆ ที่มีความแข็งแรงพอสมควรไม่สามารถลบลายน้ำได้ ดังนั้นโจรสลัดที่ต้องการลบลายน้ำจะไม่ประสบความสำเร็จเว้นแต่พวกเขาจะทำการลดทอนเอกสารมากเกินไปเพื่อผลประโยชน์เชิงพาณิชย์

แน่นอนว่า faq เรียกใช้วิธีนี้: "... ท้าทายมาก" แต่ถ้าคุณประสบความสำเร็จคุณจะได้รับความมั่นใจสูงว่าภาพนั้นเป็นสำเนาหรือไม่แทนที่จะเป็นเปอร์เซนต์โอกาส


มีข้อมูลเพิ่มเติมว่าลายน้ำยังคงมีอยู่หลังจากการแก้ไขอย่างหนักหรือไม่? ฟังดูน่าสนใจมาก
Tom Gullen

1

หากคุณใช้ Linux ฉันขอแนะนำเครื่องมือสองอย่าง:

align_image_stack จากแพ็คเกจ hugin-tools - เป็นโปรแกรม commandline ที่สามารถแก้ไขการหมุนการปรับขนาดและการบิดเบือนอื่น ๆ โดยอัตโนมัติ (ส่วนใหญ่ใช้สำหรับการจัดองค์ประกอบการถ่ายภาพ HDR แต่ทำงานกับเฟรมวิดีโอและเอกสารอื่น ๆ ด้วย) ข้อมูลเพิ่มเติม: http://hugin.sourceforge.net/docs/manual/Align_image_stack.html

เปรียบเทียบจากแพคเกจ imagemagick - โปรแกรมที่สามารถค้นหาและนับจำนวนพิกเซลที่แตกต่างกันในสองภาพ นี่คือบทช่วยสอนที่เรียบร้อย: http://www.imagemagick.org/Usage/compare/ uising the -fuzz N% คุณสามารถเพิ่มการยอมรับข้อผิดพลาดได้ ยิ่งค่า N สูงเท่าใดความอดทนต่อข้อผิดพลาดก็จะยิ่งสูงขึ้นเท่าเดิม

align_image_stack ควรแก้ไขออฟเซ็ตใด ๆ ดังนั้นคำสั่งเปรียบเทียบจะมีโอกาสตรวจจับพิกเซลเดียวกันได้

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