สวัสดีชุมชน CV / รูปแบบการรับรู้
ฉันมีปัญหาร้ายแรงเกี่ยวกับการแบ่งส่วนของรูปภาพ สถานการณ์เป็นบรรยากาศภายในเตาหลอมซึ่งทำให้หัวฉันเสียสติ และฉันต้องการตรวจจับวัตถุรูปทรงของวัสดุที่แตกต่างกัน (แก้ว, เซรามิก, อัล, ไออาร์ .. ) ในช่วงเวลาสั้น ๆ (<10 วินาที) และไม่ใช่แค่กรณีพิเศษอย่างเดียว ฉันยังต้องการเส้นชั้นความสูงในแถวพิกเซลต่อเนื่องเพื่อรับรหัส ดังนั้นจำเป็นต้องใช้รหัสลูกโซ่หรือที่เรียกว่าการติดตามเส้นขอบ / รูปร่างดังนั้นรูเปิดจึงไม่ดี ในพื้นหลังไม่ใช่เสียงเชิงเส้นประมาณฝุ่นอนุภาคหรืออย่างอื่นที่ปรากฏขึ้นเป็นครั้งคราว
ยินดีต้อนรับข้อเสนอแนะ Matlab หรือ OpenCV
เพื่อให้ชัดเจนยิ่งขึ้นฉันได้โพสต์ภาพเป้าหมายและวัตถุโปร่งใสครึ่งหนึ่งซึ่งต้องตรวจจับด้วย นอกจากนี้ยังมีตัวอย่างเพิ่มเติมที่ต้องระวัง
อย่างที่คุณเห็นในภาพ # 1 มีอนุภาคอยู่ทางด้านขวาของภาพและใกล้กับรูปร่างชั้นนอกของดาวซึ่งเป็นวัตถุ ความคมชัดโดยรวมยังไม่ดีมาก วัตถุนั้นตั้งอยู่บนชั้นใต้ดินซึ่งไม่เกี่ยวข้องกับการตรวจจับเส้นชั้นความสูง รูปภาพ # 2 แสดงวัตถุแบบกึ่งโปร่งใสซึ่งเป็นไปได้เช่นกัน
ฉันต้องการค้นหารูปร่าง / ขอบเขตของวัตถุนั้นเช่นบนหน้าจอถัดไป (เส้นสีแดง) สี่เหลี่ยมสองรูป (สีเหลือง) กำลังทำเครื่องหมายจุดเริ่มต้น (ซ้าย) และจุดสิ้นสุด (ขวา) เส้นสีฟ้านั้นไม่น่าสนใจ
ตอนแรกฉันคิดว่าฉันสามารถแก้ปัญหาของบรรยากาศที่สกปรกด้วยตัวกรองเพียงอย่างเดียว แต่หลังจากใช้เวลาในการลงทุนจำนวนมากฉันเพิ่งรู้ว่าฉันต้องกำจัดหรือลดเสียงอย่างมีนัยสำคัญเพื่อเพิ่มความคมชัดของฉากหน้าและฉากหลัง ฉันได้ลองวิธีการมากมายเช่นการทำให้เท่าเทียมกันฮิสโตแกรมการปรับแต่ง Otsu แบบปรับตัวกรองเชิงเส้น (เช่น Gauss) ตัวกรองแบบไม่เชิงเส้น (ค่ามัธยฐานการแพร่), รูปทรงที่ใช้งานได้, k-Means, Fuzzy-c-mean และ Canny การตรวจจับขอบร่วมกับตัวดำเนินการทางสัณฐานวิทยา
- Canny: อนุภาคและบรรยากาศก่อให้เกิดหลุม แต่ฉันต้องการรูปร่างที่สมบูรณ์ของวัตถุ ยังคงปิดการขยายตัวของผู้ประกอบการทางสัณฐานวิทยามันไม่ดีพอ Canny ยังคงผลลัพธ์ที่ดีที่สุดของวิธีการทั้งหมดที่ฉันศึกษาเพราะ hysteresis
- Active Contours: พวกมันทำงานบนขอบ / การไล่ระดับสีด้วยเช่นกันพวกมันทำตัวบ้าคลั่งอย่างสมบูรณ์หลังจากเริ่มต้นภายในวัตถุซึ่งอาจเกิดจากแผนที่ขอบทำให้วัตถุ 'เปิด' เท่าที่ฉันรู้ว่ารูปร่างจะต้องถูกปิด พยายามใช้อนุพันธ์ต่าง ๆ (GVF / VFC / Classic Snake)
- k-Means: ผลลัพธ์รวมถึงบรรยากาศเตาหลอมเนื่องจากพื้นหลังมีหมอก เหมือนกันสำหรับ fuzzy-c-mean ฉันเลือกสองกลุ่มเนื่องจากแยกวัตถุออกจากพื้นหลัง กลุ่มอื่น ๆ นำไปสู่ผลลัพธ์ที่อ่อนแอ
- ฮิสโตแกรม / Otsu: เนื่องจากความเข้มสีเทาที่ใกล้เคียง (imho!) มันจึงรวมวัตถุกับพื้นหลัง พยายามด้วยวิธีการในระดับท้องถิ่นและระดับโลก
- ฟิลเตอร์: โดยเฉพาะอย่างยิ่ง GLPF หรือ LPF อื่น ๆ กำลังทำให้ขอบซึ่งไม่ดีและไม่ลดบรรยากาศของหมอก
- ตัวกรองที่ไม่ใช่เชิงเส้นจะรักษาขอบ ส่วนใหญ่ใช้เวลานานเกินไปในการคำนวณภาพขนาดใหญ่ ใช้ตัวกรองทวิภาคีอย่างรวดเร็วในตอนนี้ ผลลัพธ์ดูด้านล่าง
ดังนั้นวิธีการเดียวจึงไม่ดีพอสำหรับขั้นตอนหลังการประมวลผลเนื่องจากผลลัพธ์ที่ได้จากส่วนของวัตถุนั้นมีการแข่งขันที่ไม่ดีกับอัลกอริทึมที่มีอยู่ อัลกอริทึมที่มีอยู่นั้นเป็นแบบโลคัลและดังนั้นจึงใช้ได้กับสถานการณ์ที่พิเศษมากนี้
ดังนั้นฉันขอให้คุณถ้าฉันพลาดบางสิ่งบางอย่างอย่างสมบูรณ์ ... ฉันไม่มีความคิดเพิ่มเติมเกี่ยวกับวิธีการดำเนินการและวิธีการที่ฉันควรได้รับผลดีรูปร่างโดยไม่ต้องมีช่องว่างหรือหลุม .. มันเป็นไปได้โดยไม่ต้องทำการเปลี่ยนแปลงมากมาย CCD และสภาพแวดล้อมทางกายภาพ? ขอบคุณล่วงหน้า!
วิธีการล่าสุดจนถึงตอนนี้ (หลังจากการทดลอง MO คืนที่ยาวนาน):
- ตัวกรองทวิภาคี (รักษาขอบ แต่ปรับพื้นที่ให้เป็นเนื้อเดียวกัน)
- Canny (Sigma = 2, Threshold = [0.04 0.08])
- ทางสัณฐานวิทยาการดำเนินงาน (MO):
bwareopen
,closing
,remove
และbridge
bwlabel
สำหรับการเลือกเฉพาะขอบเขตของรูปร่างซึ่งขจัดเสียงที่ไม่ต้องการ ยังไม่มีภาพหน้าจอที่อัปเดต แต่ใช้งานได้กับดาว แก้วจะทำให้เกิดเส้นชั้นในซึ่งเชื่อมต่อกับเส้นชั้นนอกซึ่งสามารถดูได้จากภาพด้านล่าง
ดังนั้นฉันจึงกลัวว่าฉันต้องการอัลกอริธึมพิเศษสำหรับการเคลื่อนที่ของเส้นรอบนอก มันจะมีการค้นหาตามเข็มนาฬิกา / ทวนเข็มนาฬิกาของพื้นที่ใกล้เคียง สามารถหมุนสลับตามเข็มนาฬิกา / ทวนเข็มนาฬิกาถ้ามีจุดมุม หากมีช่องว่างเพิ่มรัศมีและมองอีกครั้ง หากมีจุดต่อไปนี้ที่เป็นไปได้สองจุดขึ้นไปให้จับผู้ที่ได้ทิศทางเดียวกันกับที่ผ่านมา คุณคิดว่าอัลกอริธึมที่ตามมาของรูปร่างนั้นเหมาะสมหรือไม่