blobs_buffer[n] == [] case
1.จะเช็ค array ที่ถูกเก็บอยู่ใน blobs_buffer ทุกตัว คือตั้งแต่ blobs_buffer[1], blobs_buffer[2], blobs_buffer[3]
2.เมื่อเช็คจนครบทุกตัวแล้ว n + 1 > buffer_size จากนั้น จะ set id ให้กับ blob และ นำ [blob.centroid, blob.centroid] ไปเก็บใส่ไว้ใน blobs_movement ที่ตำแหน่ง i ( ตำแหน่งของตัวใน array จะเท่ากับ id ของ blob)
(น่าจะเป็นช่วงที่ มีเฟรม 2 ผ่านเข้ามา และต้องเอาไปใช้เทียบกับเฟรม 1)
blobs_buffer[n] != [] case ( blobs_buffer[n] มีค่า)
1.วนลูปเช็คหาว่า blob ที่ได้มากับ blobs_buffer[n][j] เป็น blob อันเดียวกันมั้ย //เช็คว่า blob ของ frame ก่อนหน้า กับ frame ปัจจุบัน ว่าเป็นอันเดียวกันหรือไม่
2.ถ้าเป็น blob เดียวกัน ให้เอา id จาก blobs_buffer[n][j] มาเก็บใน new_id และตั้งตัวแปร exist = false
3.วนลูปเช็คว่า id ของ blob ใน blobs มีค่าซ้ำกับ new_id หรือไม่ ถ้ามันซ้ำกัน จะเปลี่ยนค่า exist เป็น True
4.ถ้า exist = true
4.1 ถ้า n + 1 < buffer_size จะให้ทำ blobs_track(blob, i, n+1)
4.2 ถ้า n + 1 > buffer_size จะให้
- new_id = 1
- วนลูปหา id ที่มากที่สุดจาก old_id + 1 ที่มากกว่า new_id และเปลี่ยนค่า new_id เป็น max(old_id) + 1
- set id ให้ blob เป็น new_id
- ใส่ new_id ไปใน old_id[0]
- นำ [blob.centroid, blob.centroid] ไปเก็บใส่ไว้ใน blobs_movement ที่ตำแหน่ง new_id
5.ถ้า exist = False
5.1 set id ให้กับ blob เป็น new_id
5.2 เช็คว่า blobs_buffer[n][j] มีลักษณะเป็นมือหรือไม่ ถ้าเป็น ให้ set blob เป็นมือ
5.3 ใส่ blob.centroid ลงใน blobs_movement ที่ตำแหน่ง new_id
5.4 ให้ blobs_movement ที่ตำแหน่ง new_id เป็น blobs_movement 20 ตำแหน่งท้ายสุด
6. ถ้าเจอ blob ที่ไม่ใช่ id เป็น -1 ให้ออกจากลูป
7. ถ้า id ของ blob เป็น -1
7.1 ถ้า n + 1 < buffer_size ให้ทำ blobs_track(blob, i, n + 1) // หา id ของ blob ที่ไม่เท่ากับ -1
7.2 ถ้า n + 1 >= buffer_size ให้ทำ
- new_id = 1
- วนลูปหา id ที่มากที่สุดจาก old_id + 1 ที่มากกว่า new_id และเปลี่ยนค่า new_id เป็น max(old_id) + 1
- set id ให้ blob เป็น new_id
- ใส่ new_id ไปใน old_id[0]
- นำ [blob.centroid, blob.centroid] ไปเก็บใส่ไว้ใน blobs_movement ที่ตำแหน่ง new_id
ไม่มีความคิดเห็น:
แสดงความคิดเห็น