คำถามติดแท็ก edge-detection

2
OpenGL - การตรวจจับขอบ
ฉันต้องการที่จะโหลดตาข่ายโดยพลการและวาดเส้นสีดำหนาตามขอบเพื่อให้ได้รูปเงาแบบตูน ฉันจัดการวาดเงาดำรอบ ๆ วัตถุโดยใช้ stencil buffer คุณสามารถดูผลลัพธ์ได้ที่นี่: แต่สิ่งที่ขาดหายไปคือเส้นสีดำในวัตถุนั้นเอง ฉันคิดเกี่ยวกับการตรวจสอบความไม่ต่อเนื่องตามปกติ: การตรวจสอบว่าพิกเซลข้างเคียงมีเวกเตอร์ปกติแตกต่างจากพิกเซลปัจจุบันหรือไม่ ถ้าใช่พบขอบแล้ว น่าเสียดายที่ฉันไม่รู้ว่าฉันจะใช้วิธีการนี้ได้อย่างไรทั้งใน OpenGL และใน GLSL เวอร์เท็กซ์ / ส่วนแยก ฉันยินดีเป็นอย่างยิ่งสำหรับความช่วยเหลือเกี่ยวกับวิธีการนี้หรือการตรวจจับขอบอื่น ๆ แก้ไข: ฉันไม่ได้ใช้พื้นผิวใด ๆ สำหรับตาข่ายของฉัน แม่นยำยิ่งกว่านี้ฉันต้องการสร้างโซลูชัน CAD / CAM ที่ดูมากที่สุดเช่นนี้ (นำมาจาก Top Solid https://www.youtube.com/watch?v=-qTJZtYUDB4 ):

1
OpenGL GLSL - ตัวกรองการตรวจจับขอบ Sobel
ในส่วนที่เกี่ยวกับหัวข้อนี้ฉันได้ใช้ตัวกรองการตรวจจับขอบ Sobelใน GLSL เรียบร้อยแล้ว นี่คือรหัสส่วนของตัวกรอง: #version 330 core in vec2 TexCoords; out vec4 color; uniform sampler2D screenTexture; mat3 sx = mat3( 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, -1.0, -2.0, -1.0 ); mat3 sy = mat3( 1.0, 0.0, -1.0, 2.0, 0.0, -2.0, 1.0, 0.0, -1.0 ); void main() { vec3 diffuse …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.