ชื่อโครงงาน - prince of songkla...

63
ชื่อโครงงาน Motion Detection By Background Substraction ผูจัดทํา นาย สนั่น งานวิวัฒนถาวร รหัสนักศึกษา 4610533 สาขาวิชา วิศวกรรมคอมพิวเตอร ปการศึกษา 2551 ___________________________________________________________________ อาจารยที่ปรึกษาโครงงาน .................................................. (ดร. นิคม สุวรรณวร) อาจารยที่ปรึกษาโครงงานรวม .................................................. (ดร. ธเนศ เคารพาพงศ ) อาจารยที่ปรึกษาโครงงานรวม .................................................. (รศ.ดร. มนตรี กาญจนเดชะ) โครงการนี้เปนสวนหนึ่งของรายวิชา Computer Engineering Project I-II ตาม หลักสูตรปริญญาวิศวกรรมศาสตรบัณฑิต สาขาวิศวกรรมศาสตรคอมพิวเตอร มหาวิทยาลัยสงขลานครินทร .................................................. ผศ.ดร. พิชญา ตัณฑัยย (หัวหนาภาควิชาวิศวกรรมคอมพิวเตอร )

Upload: others

Post on 05-Jan-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

ชื่อโครงงาน Motion Detection By Background Substraction

ผูจัดทํา นาย สนั่น งานวิวัฒนถาวร รหัสนักศึกษา 4610533

สาขาวิชา วิศวกรรมคอมพิวเตอร

ปการศึกษา 2551

___________________________________________________________________

อาจารยท่ีปรึกษาโครงงาน

..................................................

(ดร. นิคม สุวรรณวร)

อาจารยท่ีปรึกษาโครงงานรวม

..................................................

(ดร. ธเนศ เคารพาพงศ)

อาจารยท่ีปรึกษาโครงงานรวม

..................................................

(รศ.ดร. มนตรี กาญจนเดชะ)

โครงการน้ีเปนสวนหนึ่งของรายวิชา Computer Engineering Project I-II ตามหลักสูตรปริญญาวิศวกรรมศาสตรบัณฑิต สาขาวิศวกรรมศาสตรคอมพิวเตอร มหาวิทยาลัยสงขลานครินทร

..................................................

ผศ.ดร. พิชญา ตัณฑัยย

(หัวหนาภาควิชาวิศวกรรมคอมพิวเตอร)

Page 2: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

หนังสือรับรองความเปนเอกลักษณ

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

……………………………….

สนั่น งานวิวัฒนถาวร

ผูจัดทํา

17 ตุลาคม พ.ศ. 2551

Motion Detection By Background Substraction 1

Page 3: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

สารบัญ

หนังสือรับรองความเปนเอกลักษณ .............................................................................................................. 1

สารบัญ .......................................................................................................................................................... 2

สารบัญรูปภาพ .............................................................................................................................................. 4

สารบัญตาราง ................................................................................................................................................ 6

กิตติกรรมประกาศ ................................................................................................................................... 7

บทคัดยอ .................................................................................................................................................. 8

บทท่ี 1 บทนํา ...................................................................................................................................... 10

1.1 ความเปนมา (Motivation) ....................................................................................................... 10

1.2 วัตถุประสงคของโครงงาน ...................................................................................................... 10

1.3 ขอบเขตของโครงงาน ............................................................................................................. 10

1.4 ข้ันตอนการทํางาน .................................................................................................................. 11

1.5 แผนการดําเนินงานของโครงงาน ............................................................................................ 11

1.6 ตารางการดําเนินงานของโครงงาน ......................................................................................... 12

1.7 เครื่องมือท่ีจําเปนสําหรับการพัฒนา ........................................................................................ 13

บทท่ี 2 ความรูพื้นฐาน ......................................................................................................................... 14

2.1 การเปรียบเทียบจุดสี ................................................................................................................ 14

2.2 การเปรียบเทียบเฟรม .............................................................................................................. 14

2.3 เทคนิคการหาภาพวัตถุท่ีเคลื่อนไหว ....................................................................................... 15

2.4 วิธีการหาผลตางของเฟรม ....................................................................................................... 17

2.5 วิธีการหาพื้นหลัง .................................................................................................................... 17

2.6 Motion Template .................................................................................................................... 18

Motion Detection By Background Substraction 2

Page 4: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

2.7 วิธีการและอัลกอริธึมทางดาน Background Substraction ....................................................... 20

2.8 ขอแตกตางระหวางอลักอริธมึ ...................................................................................................... 23

2.9 การประมวลผลภาพกับรูปรางและโครงรางของภาพ (Morphological Image Processing) ......... 26

2.10 การขยายภาพ(Dilation) ........................................................................................................... 26

2.11 การยอภาพ(Erosion) ............................................................................................................... 27

2.12 Running Gaussian Average By Selectivity ............................................................................ 29

บทท่ี 3 การออกแบบระบบ ................................................................................................................. 30

3.1 โครงสรางของระบบ IP Camera ................................................................................................. 30

3.2 Flow Diagram ......................................................................................................................... 31

บทท่ี 4 รายละเอียดการทํางาน ............................................................................................................. 33

4.1 การทํางานของโปรแกรมตัดพืน้หลังเชิงเทคนิค ...................................................................... 33

4.2 ข้ันตอนวิธีการทํา Running Gaussian Average ....................................................................... 42

4.3 ข้ันตอนการทํา Erosion / Dilation ........................................................................................... 47

4.4 Running Gaussian Average By Selectivity ............................................................................ 50

บทท่ี 5 สรุปผลและขอเสนอแนะ ........................................................................................................ 56

สรุปผล ................................................................................................................................................... 56

ปญหาและแนวทางการแกไข ................................................................................................................. 56

บรรณานุกรม .............................................................................................................................................. 58

Motion Detection By Background Substraction 3

Page 5: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

สารบัญรูปภาพ

รูปภาพ 2-1 ภาพตนฉบับและหลังจากตัด background ออก ....................................................................... 14

รูปภาพ 2-2 การเปรียบเทียบเฟรม .............................................................................................................. 15

รูปภาพ 2-3 เทคนิคการหาภาพวัตถุท่ีเคลื่อนไหว ....................................................................................... 16

รูปภาพ 2-4 Optical Flow ............................................................................................................................ 17

รูปภาพ 2-5 MHI ( Motion History Image ) ............................................................................................... 18

รูปภาพ 2-6 ภาพโครงรางท่ีทํา Motion Gradian ......................................................................................... 19

รูปภาพ 2-7 ภาพโครงรางท่ีทํา Motion Gradian หลังจากทํา Nomalize ...................................................... 19

รูปภาพ 2-8 Finding Regional Orientation ................................................................................................. 20

รูปภาพ 2-9 Mixture of Gaussian ............................................................................................................... 22

รูปภาพ 3-1 โครงสรางของระบบ IP Camera ............................................................................................ 30

รูปภาพ 3-2 Flow Diagram ......................................................................................................................... 32

รูปภาพ 4-1 ภาพประกอบการทํา frame buffer ........................................................................................... 37

รูปภาพ 4-2 ภาพตนฉบับ ............................................................................................................................ 41

รูปภาพ 4-3 ภาพวัตถ ุ................................................................................................................................... 41

รูปภาพ 4-4 ภาพพื้นหลัง ............................................................................................................................. 42

รูปภาพ 4-5 ภาพตนฉบับ ............................................................................................................................ 45

รูปภาพ 4-6 ภาพคาเฉลี่ย ............................................................................................................................. 45

รูปภาพ 4-7 ภาพคาความแปรปรวน ............................................................................................................ 46

รูปภาพ 4-8 ภาพผลลัพธ ............................................................................................................................. 46

รูปภาพ 4-9 ภาพผลลัพธ ............................................................................................................................. 49

รูปภาพ 4-10 ภาพหลังการทํา Erode/Dilate ................................................................................................ 49

Motion Detection By Background Substraction 4

Page 6: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

รูปภาพ 4-11 ภาพตนฉบับ .......................................................................................................................... 53

รูปภาพ 4-12 K1=10 ................................................................................................................................... 54

รูปภาพ 4-13 K2 = 20 ................................................................................................................................ 54

รูปภาพ 4-14 K3 = 1 .................................................................................................................................. 55

Motion Detection By Background Substraction 5

Page 7: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

สารบัญตาราง

ตาราง 1-1 ข้ันตอนการทํางาน ............................................................................................... 12

ตาราง 2-1 เปรยีบเทียบอัลกอริทึม .......................................................................................... 24

Motion Detection By Background Substraction 6

Page 8: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

กิตติกรรมประกาศ 5

โครงงาน Motion Detection By Background Substraction สามารถดําเนินงานใหบรรลุวัตถุประสงคท่ีต้ังไว เนื่องจากไดรับความสนับสนุนและชวยเหลือในดานตางๆจากบุคคลตอไปนี้

อาจารยดร. นิคม สุวรรณวร ซึ่งเปนอาจารยท่ีปรึกษาโครงงาน ไดใหความรู ขอเสนอแนะ และชวยเหลือ ตลอดจนแนวคิดในการจัดทําโครงงาน

อาจารยธเนศ เคารพาพงศ อาจารยมนตรี กาญจนเดชะ ซึ่งเปนอาจารยท่ีปรึกษารวมโครงงาน ท่ีไดใหขอแนะนําและตรวจสอบโครงงาน

และขอขอบคุณคณาจารยภาควิชาวิศวกรรมคอมพิวเตอรทุกทานท่ีไดประสิทธิ์ประสาทวิชาความรู

ขอขอบคุณเจาหนาท่ีของวิศวกรรมคอมพิวเตอรทุกทาน ท่ีไดอํานวยความสะดวกในดานตางๆ

ขอขอบคุณเพ่ือน ๆ และรุนพ่ีทุกคน ท่ีใหความรวมมือในการทดสอบโครงงาน และเปนกําลังใจท่ีดีในการจัดทําโครงงานน้ีมาโดยตลอด

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

สนั่น งานววิัฒนถาวร

ผูจัดทํา

Motion Detection By Background Substraction 7

Page 9: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

บทคัดยอ

ระบบ Motion Detection คือ ระบบท่ีมีไวสําหรับตรวจสอบการเคลื่อนไหวของวัตถุ เพือ่ใชในระบบการตรวจตรา จับการเคลื่อนไหว ซึง่ระบบดังกลาวนี้แบงไดเทคนิดใหญได 2 ประเภทคือ background subtraction เหมาะสําหรับกลองแบบอยูนิ่ง และ optical flow เหมาะสําหรับกลองแบบเคลื่อนท่ี ในโครงงานของขาพเจาไดเนนกรณีศึกษาท่ีตัวกลองอยูนิ่ง โดยท่ีขอมูล input ของโครงงานน้ีจะเปนจวิดีโอสตรีมมาจากกลอง IP Camera ท่ีติดอยูท่ัวทางเขาออกของมหาวิทยาลัย สงขลานครินทร นั่นคือเราจะตองตรวจสอบรถที่เขาออกในมหาวิทยาลัยขณะนั้นโดยใชข้ันตอนวิธีในการตัดพื้นหลัง โดยหาการคาเฉลี่ยของจุดสีของคลิปวิดีโอท้ังหมดเพ่ือไดพืน้หลังแลวนําไปตัดออกจากภาพตนฉบับเพื่อเหลือแคถาพวัตถุขณะน้ัน ทําให output ของงานจะเปนเฉพาะรถอยางเดียว ซึ่งโดยปกติแลวหนวยรักษาความปลอดภัยจะตองเกบ็คลิปวิดีโอเหลามาทําการดูยอนหลังทุกวินาที ทําใหเสียเวลาเปนอยางมาก ขาพเจาหวังเปนอยางยิ่งวาผลของโครงงานนี้จะมีสวนสําคัญตอการพัฒนาระบบรักษาความปลอดภัย

Motion Detection By Background Substraction 8

Page 10: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

Abstract

Motion detection is a crutial step in the 3th generation of surveillance system. Two principal approches of detection techniques could be classified: background subtraction and optical flow, depending on the camera types (fixed or pan-tilt-zoom). We emphasize in this project on the background modeling which is the fundamental process in background subtraction method. We review some of the classical algorithms such as running average, guanssian and etc and propose an adaptive method that improves the quality of detection which suitable for surveillance context. The experimentation is demonstrated with the image sequences obtained from IP Cameras of the PSU’s security system. The computational time of the proposed algorithm is also tested which is executed in a specified real time. The encouraged results show some avantages that may be used in the real situation of surveillance circomstances.

Motion Detection By Background Substraction 9

Page 11: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

บทท่ี 1 บทนํา

ความเปนมา (Motivation) 1.1

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

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

1.2 วัตถุประสงคของโครงงาน

นําเทคโนโลยีการวิเคราะหผลทางดาน Image Processing เพื่อตรวจจับการเคลื่อนไหวของวัตถุจากขอมูลภาพท่ีไดมาจากกลอง IP Camera ของระบบ Surveillance System ในมหาวิทยาลัยสงขลานครินทร

-

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

ขอบเขตของโครงงาน 1.3

สามารถนํา Algorithm ท่ีศึกษามาเปรียบเทียบคุณสมบัติกันเพื่อใหไดมาซ่ึง Algorithm ท่ีดีท่ีสุดและเหมาะสมท่ีสุด เพื่อนํามาประยุกตใชกับการสรางเปนโปรแกรมจําลอง เพื่อการศึกษาAlgorithm ตอไป

Motion Detection By Background Substraction 10

Page 12: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

ข้ันตอนการทํางาน 1.4

1. ศึกษาอัลกอรธิึมท่ีใชสําหรับการตรวจจับการเคลื่อนไหว

2. พัฒนาโปรแกรมท่ีไดจากการปรับปรุงแนวคิด

3. นําโปรแกรมท่ีพัฒนาไปใชกับระบบความปลอดภยั IP Camera Network

4. ใชอัลกอริธึมทางการตรวจจบัวัตถุในภาพท่ีมีอยูมาทําการการปรับปรุงแนวคิดและออกแบบใหดีข้ึนสําหรับระบบ Surveillance System

แผนการดําเนินงานของโครงงาน 1.5

-ข้ันตอนท่ี 1 ศึกษาปญหาและแนวคิดของโครงงาน

ข้ันตอนท่ี 2 ทําการ Implement ทดสอบแนวคิด -

-ข้ันตอนท่ี 3 ทําการปรับปรุงแนวคิดและออกแบบใหดีข้ึน

ข้ันตอนท่ี 4 ทําการ Implement สวนการปรบัปรุงแนวคิด -

ข้ันตอนท่ี 5 Classified and Tracking สวน Objects หลายช้ินท่ีอยูเฟรมเดียวกัน -

ข้ันตอนท่ี 6 Implement สวนการ Classified and Tracking -

ข้ันตอนท่ี 7 Integrate กับระบบกลอง IP Camera และ Serverใหใชงานไดจริง -

ข้ันตอนท่ี 8 จัดทําสวนของ File Description ในแบบเอกสาร XML เชนเดียวกับ log file -

ข้ันตอนท่ี 9 ทดสอบ Implement ท้ังหมด -

Motion Detection By Background Substraction 11

Page 13: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

ตารางการดําเนินงานของโครงงาน 1.6

มิถุนายน กรกฏาคม สิงหาคม กันยายน ตุลาคม พฤศจิกายน ธันวาคม มกราคม เดือน กุมภาพันธ

ข้ันตอนท่ี 1

ข้ันตอนท่ี 2

ข้ันตอนท่ี 3

ข้ันตอนท่ี 4

ข้ันตอนท่ี 5

ข้ันตอนท่ี 6

ข้ันตอนท่ี 7

ข้ันตอนท่ี 8

ข้ันตอนท่ี 9

ตาราง 1-1 ขั้นตอนการทํางาน

Motion Detection By Background Substraction 12

Page 14: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

Motion Detection By Background Substraction 13

1.7 เครื่องมือท่ีจําเปนสําหรับการพัฒนา

1. ระบบปฏิบัติการ Microsoft Window

2. โปรแกรม Microsoft Visual C++ 6.0 สําหรับ Editor และ Complier

3. Library ของ OpenCV สําหรับการเรียกใชฟงกชันการทํางานตางๆ

4. PC 1 เครื่องสําหรับการเขียนโปรแกรม

5. กลอง IP Camera ท่ีติดอยูบริเวณทางเขาออกของมหาวิทยาลัย

Page 15: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

บทท่ี 2 ความรูพ้ืนฐาน

ในบทนี้จะกลาวถึงความรูพื้นฐานท่ีจําเปนจะตองใชในการพัฒนาโครงงานนี้ โดยจะประกอบไปดวยหัวขอดังตอไปนี้ซึ่งน่ันคือ ความรูในดานการวางแผนการเคล่ือนท่ี Algorithm ตลอดจน เครื่องมือท่ีใชพัฒนาโปรแกรม

การเปรียบเทียบจุดสี 2.1

เนื่องจากภาพ bitmap จะประกอบไปดวยจุดเล็กๆท่ีเรียกวา pixel เราสามารถหาคาสีแตละจุดของภาพได ซ่ึงออกมาในรูปแบบ RGB (สีแดง สีเขียว สีน้ําเงิน) เราสามารถนํามาเปรียบเทียบกบัจุดสีอ่ืนๆไดโดยวิธีการวนลูปแกน x และ แกน y ของภาพ bitmap นั้นๆ

รูปภาพ 2-1 ภาพตนฉบับและหลังจากตัด background ออก

ท้ัง 2 รูปแสดงถึงการตัดสี background ออกโดยใชข้ันตอนวิธีเปรียบเทียบจุดสี

การเปรียบเทียบเฟรม 2.2

เนื่องจากคลิปวิดีโอประกอบดวย bitmap หลายๆภาพมาแสดงผลเรียงกัน เราเรียก bitmap แตละตัววา เฟรม (frame) เราจําเปนจะตองเปรียบเทียบเฟรมหลายเฟรมเขาดวยกันเพื่อหาวาชวงเวลาใดท่ีมีรถเขามาโดยวิธีตามกรณีดังนี ้

ถาเฟรมปจจุบัน ( current frame ) เหมือนกับเฟรมถัดไป (next frame) ใหคิดวาไมมีรถเขาออก

1.

Motion Detection By Background Substraction 14

Page 16: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

2. ถาเฟรมปจจบัุน ( current frame ) ตางกับเฟรมถัดไป (next frame) ใหคิดวามีรถเขาออก และตรวจจับคาจุดสีของเฟรมถัดไป เพื่อหาภาพท่ีเคล่ือนไหวโดยตัด background ออก

2.1 นําภาพแตละเฟรมท่ีเคลื่อนไหวและตัด background ออกมาทําการลด noise เพื่อม ี คุณภาพดีข้ึน 2.2 นําภาพจากหัวขอ 2.1 มาบันทึกเปนไฟลท้ังหมด

รูปภาพ 2-2 การเปรียบเทียบเฟรม

เทคนิคการหาภาพวัตถุที่เคลื่อนไหว 2.3

Background Subtraction

เปนข้ันตอนวิธตัีดพื้นหลังออกจากเฟรมวิดโีอ มีหลักการคือ เมื่อภาพของเฟรมหนึ่งๆ มาลบกับพ้ืนหลังจะไดเปน object นั้นๆ ดังสมการ

O = I – B

เมื่อ O คือ Object

I คือ ภาพของเฟรมหน่ึงๆ

B คือ ภาพพื้นหลัง

- สําหรับข้ันตอนการประมวลผลจําเปนจะตองทําใหภาพเปน Gray Scale (ขาวดํา) เพื่อลดหนวยความจําท่ีใช เพราะ Gray Scale 1 จุดใช 8 bit ในขณะท่ี RGB ใช 24 bit

รูปข้ันตอนการประมวลผลโดยวิธี Background Substracttion

Motion Detection By Background Substraction 15

Page 17: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

รูปภาพ 2-3 เทคนิคการหาภาพวัตถุที่เคลื่อนไหว

( X,Y ) คือ คาจุดสีแบบ Gray Scale ของภาพท่ีจุด X ,Y

N คือ จํานวนเฟรมท้ังหมดของ buffer ท่ีนํามาจองหนวยความจําเอาไว

นํามาเขาสมการไดดังน้ี

นั่นคือ ผลรวมของคาสี Gray Scale ท่ีจุด X,Y ของภาพ หารดวยจํานวนของเฟรมท้ังหมดของ buffer จะไดคา background เฉลี่ยท้ังหมดโดยตองกําหนดให background คือสวนของภาพในเฟรมท่ีไมเหมือนกัน

Motion Detection By Background Substraction 16

Page 18: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

Optical Flow

เปนวิธีการหาเว็กเตอรลพัธของสวนท่ีภาพเคลื่อนไหวไปแลว ดังรูป

รูปภาพ 2-4 Optical Flow

รูปภาพจะมี Object ท่ีเคลื่อนไหวไปมาเราสามารถนํามาหาเวคเตอรลัพธของการเคลื่อนท่ีของ Object นั้ไดโดยตองรูพิกัดท่ี จุด X ,Y ของเฟรมเริ่มตนและเฟรมสุดทาย

วิธีการหาผลตางของเฟรม | framei – framei‐1 |   Th 

2.4

framei คือ เฟรมปจจุบัน framei-1 คือ เฟรมกอนหนา Th คือ คา threshold

วิธีนี้จะสมมุติให background ท่ีประมาณคาไดเปนเฟรมกอนหนาเพ่ืองายตอการประมวลผล และคาความเร็วของวัตถุกับจํานวนเฟรมตอวนิาที(FPS) ก็สงผลตอวิธีนี้เชนกัน สวนวิธีนี้ไวตอคา Threshold เปนอยางมาก

วิธีการหาพ้ืนหลัง 2.5

- นิยมใชวิธีการหา background คาเฉลี่ย( average ) หรือ ฐานนิยม( median ) - วิธีนี้คอนขางจะเร็วแตใช memory คอนขางเยอะ เนื่องจากตองการจอง memory เปน

จํานวนเฟรม x ขนาดภาพ

Motion Detection By Background Substraction 17

Page 19: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

2.6 Motion Template

เปนการทํางานเก่ียวกับการออกแบบสรางการเคลื่อนไหวจําลองตอเนื่องกันจากจุดท่ีเกิดการเคลื่อนไหว วาเกิดข้ึนอยางไร ทิศทางอยางไร ซึ่งอลักอริธึมเหลาน้ีถูกเขียนข้ึนโดย Mr. Davis and Bobick และ Bradski and Davis สวนการทํางานบนรูปภาพของ output ของเฟรม หรือ การหาผลตางของ background หรือวิธีการทํา Image Seqmentation ท้ังหลายเหลาน้ันจะทําในรูปแบบภาพ Grayscale นั่นคือ 1 channel นั้นเอง

MHI ( Motion History Image )

จากรูปทางดานซายแสดงภาพโครงรางของวตัถุ( foreground silhouette)ของวัตถุท่ีเคลื่อนไหวในภาพ หรอืคน ซึ่งวิธีท่ีไดมาของภาพโครงรางของวัตถุมาจากเทคนิคของการตัดภาพพ้ืนหลังในรูปแบบตางๆ ซึ่งวิธีการตัดพืน้หลังสําหรับคนหรือการเคลื่อนไหวของวัตถ ุ จะทําโดยการคัดลอกภาพพื้นหลังท่ีมีการอัพเดทคาลาสุดใน Motion History Image ซึ่งจะทําการสรางเลเยอรประวัติ ( layered history) ของภาพสุดทาย โดยปกติแลวคาลาสุดจะเปนแคคา timestamp ของเวลาท่ีผานไปซ่ึงแสดงผลในหนวย millisecond

รูปทางขวาแสดงผลลัพธท่ีเรียกวา MHI ( Motion History Image ) ซึ่งบอกถึงระดับของพิกเซล หรอื threshode ของเวลาท่ีเปลี่ยนแปลง

รูปภาพ 2-5 MHI ( Motion History Image )

การเคลื่อนไหวท่ีอัพเดทลาสุดจะมีคาสูงสุด และการเคลื่อนไหวกอนหนาจะมีคานอยไปเรื่อยๆ ซึ่งกระบวนการของ Motion Template จะกลาวถัดไป

Motion Template Processing

A) Updating MHI Images

Motion Detection By Background Substraction 18

Page 20: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

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

B) Making Motion Gradient Image

เปนการสรางทิศทางการเคลื่อนไหวของภาพโครงรางท้ังหมด แตเนื่องจากทิศทางท่ีไดจากการคํานวณจะคาคลาดเคลื่อนไปบาง ดังน้ันจึงตองมีการทํา Noramlize

รูปภาพ 2-6 ภาพโครงรางที่ทํา Motion Gradian

รูปภาพ 2-7 ภาพโครงรางที่ทํา Motion Gradian หลังจากทํา Nomalize

C) Finding Regional Orientation

ปกติแลวไมจําเปนตองคํานวณคามุมของการเคลื่อนท่ีท้ังหมด ดังน้ันการกําหนดพื้นท่ีของการเคลื่อนไหวจะกระทําโดยเคลื่อนท่ีช้ินสวนของวัตถุท้ังหมด ซึ่งทุกครั้งท่ีภาพ MHI ถูกสรางข้ึน ภาพโครงรางลาสุดจําเปนตองใชคาสูงสุดหลายๆตัวในการสแกน แลวเขาสู contour ของภาพโครงรางเพือ่ชวยในการหาพื้นท่ีของการเคลื่อนไหว เชน time stamp ลาสุด อัลกอริธึมสําหรับสราง mask ไปยังพื้นท่ี segment motion เปนดังน้ี

สแกนรูป MHI จนกระท่ังเจอภาพโครงรางลาสุด(รูป a) 1.

2. สํารวจไปยังพื้นท่ีของภาพโครงรางลาสุดแลวทําการลบจุดท่ีมี step ของ motion history เมื่อเจอ step ท่ีดีท่ีสุด จะทําเครื่องหมายไวลงใน stack ถาขนาดของท่ีใสเพียงพอแลวก็ zero out พื้นท่ี (รูป b)

Motion Detection By Background Substraction 19

Page 21: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

3. เพิ่มเติม

- บันทึก ตําแนงท่ีนอยท่ีสุดแลวทําการ downfill (รูป c)

- แบง floodfill up จากการตรวจสอบตําแหนง (รูป d)

- รวมสวนยอยโดย logic AND สําหรับ upfill และ downfill

4. จัดเก็บสวนท่ีตรวจเจอพ้ืนท่ี segmented motion ไปสู mask

ตอสวนของการสํารวจจนกระท่ังหมดภาพโครงรางท้ังหมด 5.

เพิ่มเติม ไปยงัขอ 1 จนกระท่ังเจอพื้นท่ีภาพโครงรางท้ังหมด 6.

รูปภาพ 2-8 Finding Regional Orientation

วิธีการและอัลกอริธึมทางดาน Background Substraction 2.7

ปญหาที่พบ 1. ดานภาพ

- วิถีเอยีงของภาพ - กลุมควัน และ หมอก

2. การเคลื่อนไหวของภาพ - มุมกลอง

Motion Detection By Background Substraction 20

Page 22: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

- วัตถุพื้นหลังท่ีมีความถี่สูง เชน กิ่งไม คลื่นทะเล 3. การเปลี่ยนแปลงของภาพพ้ืนหลัง

- การจอดรถ วิธีที่ 1 : running average โดยใชสมการ

Bi 1    α * Fi    1 – α  * Bi  Bi+1 คือ background ของเฟรมถัดไป Bi คือ background ของเฟรมปจจุบัน α คือ คาสัมประสิทธิ์ ปกติมีคา 0.05 Fi คือ คาจุดสีของเฟรมปจจบัุน เนื่องจากวิธีนี้เปนวิธีงายท่ีสุดของการคํานวณโดยท่ีไมจําเปนตองใชหนวยความจํา เพียงแคทดคาตัวแปรตางๆเขาสูสมการแลววนลูปไปก็ได background ของเฟรมถัดไปมาใชได วิธีที่ 2 : running average แบบ selectivity หลักการ

- แตละเฟรมใหมท่ีเขามา แตละจุดสีจะตองมีการจําแนกเปน foreground หรอื background

- สิ่งท่ีเปนการจําแนกของ background model i. ถาจุดสีจําแนกเปน foreground จะถูกตัดท้ิงใน backgroung model

สมการแนวคิดของ ีนี ้วิธ background

i 1  y   1 – α  * Bt  x,y  กรณีท่ี 1 ถา Ft เปน

B x,y  α * Ft  x, foreground Bi 1  x,y    Bi  x,y  

กรณีท่ี 2 ถา Ft เปน

วิธีนี้ใหคลายกับวิธีแรกเพียงแตมีการแยกพื้นหลัง (background) กับ วัตถุ (foreground) เพื่อแยกประมวลผลแตละสมการ เห็นไดวาเม่ือ Ft เปน foreground คาของ background ของเฟรม ถัดไปจะเทากับเฟรมกอนหนา วิธีที่ 3 : ใชวิธี Running Gaussian Average หลักการ

ให μ เปนคาการก ปร นของ Gaussian ระ อง Gaussian และ เปนคาความแปร วµt 1    αF    1 – α   µt σ 2t 1    α Ft –µt 2     1 – α   σ 2t 

จายข σ-

Motion Detection By Background Substraction 21

Page 23: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

วิธีที่ 4 : ใชวิธี Mixture of Gaussian หลักการ -ใหคา ωi มีการเปลี่ยนแปลงตลอดเวลาทุกๆ เฟรมใหม - ในทุกๆเฟรมใหมคาของ Gaussian จะตรงกับคาปจจุบันทําใหคา μ,σ มีการเปลี่ยนแปลงตลอด - วิธีนี้จะตองหาท้ังคา background และ foreground เพื่อหาคาความแปรปรวน - จําเปนจะใชคาสถิติมาเปรียบเทียบ

รูปภาพ 2-9 Mixture of Gaussian

วิธีท่ี 5 : Kernel Density Estimator

- หาคา PDF (x)ใชข้ันตอนวิธี background PDF ซึ่งนํามาจาก histogram ท่ีมีคาจุดสีของมากท่ีสุดของเฟรมลาสุด

- ถา PDF (x) > Th , ท่ี x pixel จะเปน background - มีปญหาดานการจอง memory ( n * size(frame))

วิธีที่ 6 : Mean-shift Base Estimation หลักการ

- ใชวิธี หา gradian เพื่อหาคาฐานนิยมจากการแปรปรวนของขอมูล ตามสมการ

m (x) คือ คา mean shift vectori x คือ คาจุดใดๆบนภาพ

Motion Detection By Background Substraction 22

Page 24: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

xi คือ เปนเซ็ตของจุดขอมูล h คือ คาของ bandwidth ท่ีไดรับวิเคราะหมาแลว g(u) คือ อนุพันธอันดับ 1 ของฟงกชันรวม k(u) โดยท่ี k(u) คือ kernel profile

ปญหาของวิธีนี้

- การทํางานของสมการน้ี (วนรอป) จะชา - มีการจอง memory : (n * size(frame))

วิธีที่ 7 : Eigenbackground หลักการ

1. จํานวนเฟรมจะถูกจัดเรียงใหมในรูปของแมทริกซ A

2. หาคา covariance metrix โดย

C = AAT

หาคา eigenvalue L และ eigenvector metrix Ф จาก C 3. 4. เก็บคา eigen vector metrix M เอาไว 5. ขณะท่ีภาพใหมเขามา ( / )จะมีการทํา sub-space กับคา M แลวเก็บเปนคา /’ 6. หาผลตางของ / - /’ จะไดคา foreground object

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

2.8 ขอแตกตางระหวางอัลกอริธึม

เห็นไดวาแตละวิธีการแตละชนิดมีขอไดเปรียบหรือเสียเปรยีบอยางเห็นไดชัด โดยปกติจะเปนปญหาทางดานการใชหนวยความจํามาก เพราะจําเปนตองใชในการเก็บคายอนหลังเพ่ือเปรียบเทียบ

อัลกอริธึม ขอเปรียบเทียบ

Motion Detection By Background Substraction 23

Page 25: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

ความเท่ียงตรง การใชหนวยความจํา ความซับซอน

running average

selectivity Mixture of Gaussian

Kernel Density Estimator

Mean-shift Estimation

Eigenbackground

นอย ไมใช งาย

นอย ไมใช งาย

ปานกลาง ใชการเก็บแบบสถิติ -

- - ใชมาก

สูง ใชมาก ยาก

สูง ใชเฉพาะสราง metrix ยาก

ตาราง 2-1 เปรียบเทียบอัลกอริทึม

Running Gaussian Average Model

เริ่มตน model อันนี้เปน model ท่ีมาจากการหาคา Gaussian Probably Density (pdf) ในคาของ pixel สุดทายของภาพ ในแตละ pixel ใหคาเฉลี่ยของภาพ μt และ คาความแปรปรวน σ ในแตละ channel ของจุดสี ซึ่งการหาคาเฉลี่ยทําไดจากการนําผลรวมของคาเฟรมท้ังหมดหารดวยจาํนวนภาพ

และ คาความแปรปรวนหาไดจาก คา

แตในความเปนจริงการหาคาเหลาน้ีไมสามารถนํามาใชจริงในรูปแบบงาน video streamไดเนื่องจากเราไมทราบคาของ frame ท้ังหมดเพ่ือแทนคาในสมการน้ีได จึงไดมีการคิดสมการเพ่ือใชกับ

video stream จริงไดโดย

ใหเปนสมการท่ี 1 µt 1     α Ft    1 – α   µt σ 2t 1   α Ft –µt 2     1 – α   σ 2t ใหเปนสมการท่ี 2

Motion Detection By Background Substraction 24

Page 26: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

Fout     | Ft ‐ µt |      Th ใหเปนสมการท่ี 3

สมการท่ี 1 เปนการหาคาเฉลี่ยของภาพ ( μ ) ณ เวลาปจจบัุน โดยม ี

Ft คือ คา Input Image

μt คือ คาเฉลี่ยของภาพ ตัวกอนหนา มีคาเริม่ตนเปน 0

μt+1 คือ คา คาเฉลี่ยของภาพ ตัวปจจุบัน α คือ คาสัมประสิทธิ์

สมการท่ี 2 เปนการหาคาความแปรปรวนของภาพ ( σ ) ณ เวลาปจจุบัน โดยม ี

Ft คือ คา Input Image

μt คือ คาเฉลี่ยของภาพ

σ t คือ คา ความแปรปรวนของภาพ ตัวกอนหนา มีคาเริ่มตนเปน 0

σ t+1 คือ คา ความแปรปรวนของภาพตัวปจจุบัน α คือ คาสัมประสิทธิ์

สมการท่ี 3 เปนการหาคาภาพผลลัพธ ( Fout )

Ft คือ คา Input Image

μt คือ คาเฉลี่ยของภาพ

Th คือ คาของ threshold แทนดวย k * σ t

Fout คา ภาพผลลัพธมีคา เปน 0 หรือ 1 ( จุดสีดําหรือขาว )

Motion Detection By Background Substraction 25

Page 27: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

2.9 การประมวลผลภาพกับรูปรางและโครงรางของภาพ

(Morphological Image Processing)

Morphological Image Processing เปนการประมวลผลภาพโดยการเปล่ียนแปลงลักษณะรูปรางหรอืโครงสรางของภาพ โอเปอเรช่ันพืน้ฐานโดยท่ัวไปไดแก การ Dilation Erosion และ Skeleton โดยการ Dilation คือการขยายภาพโดยมีสัดสวนเทากันท่ัวท้ังภาพ(Uniform) การ Erosion คือ

การยอภาพ สวนการทํา Skeleton เปนการหาโครงสรางหลักของวัตถ ุนอกจากโอเปอเรช่ันพ้ืนฐานดังท่ีไดกลาวขางตนแลวยังมีโอเปอเรชั่นอ่ืน ๆ อีกท่ีไดแกการ Opening และ Closing เปนตน

การขยายภาพ(Dilation) 2.10

การขยายภาพในท่ีนี้จะพิจารณาสําหรับขอมูลภาพท่ีเปนแบบไบนารีโดยการใชเทคนิคการ Hit และ Miss ตามท่ีไดกลาวไว การขยายภาพจะทําไดโดยกําหนดTemplate (ซึ่งสามารถสรางไดจาก * และ 1 โดยมีจุดเริ่มตนท่ีกําหนดโดยวงกลม) และนํา Template นี้สแกนไปบนขอมูลภาพตามลําดับตลอดท้ังภาพซึ่งในขณะท่ีจุดเริ่ม (Origin) ของ Template ตรงกับตําแหนงขอมูลภาพท่ีพิกเซลมีคาเทากับ 1 นั้นก็จะทําการยูเนียน Template นี้เขากับขอมูลภาพดังตัวอยาง

ขอมูลภาพ Template

1111111****1111111****1*11111****1111111*****11*11*****1***1*******1**1******

11*1

ขอมูลภาพและTemplate

ขอมูลแถวแรกของภาพเปนดังน้ี

*1**1******

ขอมูลแถวแรกของภาพ

เมื่อทําการยูเนียนกับ Template ณ. ตําแหนงขอมูลภาพท่ีพิกเซลเทากับ 1 ในแถวแรก

Motion Detection By Background Substraction 26

Page 28: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

*1*11**********1******

ยูเนียนกับ Template ณ. ตําแหนงขอมูลภาพที่พิกเซลเทากับ 1 ในแถวแรก

และเม่ือยูเนียนกับ Template เขากับพิกเซลท่ีมีคาเทากับ 1 ณ. ตําแหนงพิกเซลท่ีสองในแถวแรก

11*11**********1******

ยูเนียนกับ Template เขากับพิกเซลที่มีคาเทากับ 1 ณ. ตําแหนงพิกเซลที่สองในแถวแรก

และเม่ือทําการยูเนียนท้ังภาพจะไดภาพสุดทายดังน้ี

11111111****11111111****11111111****11111111****11111111****1111111******11*11********1**1******

ยูเนียนท้ังภาพ

การยอภาพ(Erosion) 2.11

การยอภาพเปนลักษณะของการลบขอมูลภาพบริเวณขอบของภาพ การยอภาพสามารถทําไดมีลักษณะคลายกับการขยายภาพโดยการสราง Template ข้ึนแลวนํา Template ไปสแกนตามขอมูลภาพ

สําหรับทุกตําแหนงท่ีเลื่อน Template ไปบนภาพก็จะมีการเปรียบเทียบกับขอมูลภาพ ถาขอมูลภาพมีคาเหมือนกับ Template จะทําการกําหนดคาขอมูลภาพในตําแหนงท่ีตรงกับจุดเริ่มตน(Origin)ของ Template ถูกกําหนดใหมีคาเทากับ 1

ขอมูลภาพ Template

Motion Detection By Background Substraction 27

Page 29: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

Motion Detection By Background Substraction 2828

* 11

1111111****1111111****1*11111****1111111****11*11*****1***1*******1**1******

1*

ขอมูลภาพและTemplate

ผลท่ีไดจะมีเพียง 3 ตําแหนงเทาน้ันท่ีมีคาเหมือนกับ Template

ตําแหนงที่มีคาเหมือนกับ Template

ผลท่ีไดตาม ขอมูลภาพท่ีผานการทําโอเปอเรช่ันกับ Template แลวพบวามีขอมูลของภาพเพียง

3 ตําแหนงเทาน้ันท่ีเหมือนกับ Template ถามีการเปลี่ยน Template เปน 1 ผลท่ีไดมีลักษณะ

ดังน้ีคือ 111

*111111*******1111******11111******1**1**************************************

ขอมูลภาพที่ผานการทําโอเปอเรชั่นกับ Template

*************1********************1**1***************************************

Page 30: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

ผลท่ีไดตามรูปท่ี 5-13 จะเห็นวาจะเปนการยอขนาดของภาพแตสามารถยอขนาดไดนอยกวา

เม่ือใช Template ซึ่งไดผลเปนท่ีนายอมรับมากกวาดังน้ันในการเลือก Template เปนสิ่งท่ีสําคัญ

อยางหน่ึงในการยอและขยายภาพ 11*1

2.12 Running Gaussian Average By Selectivity

เปนการเลือกใชอัลกอรธิึม Running Gaussian Average ของในแตละกรณีท่ีไดกําหนดไว

กรณีท่ี 1 เมื่อภาพเคลื่อนไหวท่ีเปน output > 90% ของพ้ืนท่ีภาพท้ังหมดใหใชคาภาพเฉลี่ยแบบ

ปกติ

กรณีท่ี 2 เมื่อภาพเคลื่อนไหวท่ีเปน output < 1% ของพ้ืนท่ีภาพท้ังหมดใหใชคาภาพเฉลี่ยแบบตัด

วัตถุออกไป

เมื่อทําผลท่ีไดเสร็จแลวนําไปแจกแจง output ตามคาของ k

29Motion Detection By Background Substraction

Page 31: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

บทท่ี 3 การออกแบบระบบ

3.1 โครงสรางของระบบ IP Camera

รูปภาพ 3-1 โครงสรางของระบบ IP Camera

คือ กลองวีดโีอท่ีตรวจจับรถทางเขาตัวท่ี 1...k IP1 … IPk

คือ คอมพิวเตอรท่ีนํามาประมวลผลตัวท่ี 1...k PC1 …PCk

คือ algorithm ท่ีใชในการประมวลผล A

คือ server ท่ีเก็บขอมูลเฉพาะวิดีโอท่ีประมวลผลมาจาก PC แลว Management Server Database

ขอมูล input ของโปรแกรมนี้เปนไฟลวิดีโอสตรีมซึ่งรับคามาจาก IP Camera (IP1…IPk) ผานเครือขายอินเตอรเน็ต สงขอมูลเขาสู PC หลังจากน้ันเอามาเขากระบวนการคํานวณผลลัพธโดยใช

Motion Detection By Background Substraction 30

Page 32: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

เนื่องจากข้ันตอนประมวลผล algorithm จะใชทรัพยากรเปนอยางสูงจึงจําเปนจะตองแบงการทํางานใหกับ PC อื่นๆ

ในสวนของอัลกอริธึมเราจําเปนจะตองทดสอบแตละวิธีใหละเอียดเพื่อใหเราทําการ Implement จากอัลกอริธึมท่ีเราไดเลือกแลวทําการปรับปรุงใหดีข้ึน

เมื่อเสร็จสิ้นการประมวลผล PC แตละตัวจะสง output เขาสู server ทําการจัดเก็บเปนฐานขอมูล ทําให เราจะดูแค output ของโปรแกรมท่ีเปนไฟล clip ท่ีมีเฉพาะสวนของรถวิง่จากไฟลวิดีโอ ซึ่งจะลดเวลาท่ีจะตองดูยอนหลงัและลดทรัพยากรจัดเก็บไดเปนอยางมาก

3.2 Flow Diagram

จากการออกแบบสรุปไดเปน Flow Diagram ของโปรแกรมดังน้ี

ข้ันตอนการทํางานของโปรแกรม เมือ่โปรแกรมเริ่มทํางานจะมีการ Initial System ซึ่งประกาศตัวแปรท่ีจะใชในโปรแกรม กําหนดคาเริ่มตนใหแกตัวแปรตางๆ ตามโคดท่ีจะนําเสนอตอไป หลังจากท่ีผานการ initial System แลว โปรแกรมจะทําการติดตอกับ sever เพื่อติดตอไปยัง IP camera ดวยหมายเลข IP ของกลอง หลังจากน้ันโปรแกรมจะทําการตรวจสอบเงื่อนไขวาตองการจะหยุดการประมวลผลโปรแกรมตอไปหรือไม ถาตองการก็จะหยุดการทํางานของโปรแกรม แตถาไมตองการโปรแกรมก็จะ ทํางานตอไป โดยเริ่มจาก capture ภาพจากท่ีกลองบันทึกไดมาเปนภาพแบบไฟล bitmap เนื่องจาก input ขอมูลเปนวิดีโอสตรีมจําเปนจะตองบันทึกกอนแลวจงึจะนํามาใช จากนั้นทําการจะทําการลดขนาดของภาพ และแปลงเปนภาพแบบขาวเทา เพื่อการคํานวณท่ีรวดเร็วข้ึน โปรแกรมจะนาํภาพท่ีไดจากการลดขนาดและแปลงเปนภาพแบบ Grayscale แลวมาทําการ ประมวลผลคํานวณหาผลลัพธตามอัลกอริทึมท่ีตองการซ่ึงโครงงานน้ีท่ีนี้คือ การทําBackground Subtraction ดวย Running Average อัลกอรทึิม หลังจากท่ีคํานวณหาผลลัพธของพ้ืนหลังดวยอัลกอริทึมแลวก็นํามาหาวัตถุพรอมท้ังจําลองรูปแบบการเคลื่อนไหวของภาพวัตถุโครงรางดวยวิธี Simulate image with MHI เพื่อแสดงผลภาพเคาโครงของวัตถุได

Motion Detection By Background Substraction 31

Page 33: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

รูปภาพ 3-2 Flow Diagram การทํางานของโปรแกรม

Motion Detection By Background Substraction 32

Page 34: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

บทท่ี 4 รายละเอียดการทํางาน

การทํางานของโปรแกรมตัดพ้ืนหลังเชิงเทคนิค 4.1

1. Initial System

1.1 ทําการสราง Form ข้ึนมา

ทําในสวน method onInitDialog ของ CDialog

CDialog::OnInitDialog(); 1.2 กําหนดตัวแปรของระบบ

// define constant string

#define WCV_NAME "LOADIMAGE"

#define WCV_BKG "BACKGROUND"

#define WCV_OBJ "OBJECT"

#define WCV_FILE_NAME "file1.bmp"

#define WCV_IP "192.168.17.131"

// Initial system variable

IplImage *gray_img, *bkg_img, *acc_img, *obj_img, *result_img;

IplImage *rsize_img,*rsize_acc ,*rsize_bkg;

// Set system variable value

rsize_img = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 3 );

rsize_acc = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 3 );

rsize_bkg = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 3 );

Motion Detection By Background Substraction 33

Page 35: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

gray_img = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 1 );

acc_img = cvCreateImage( cvSize(320, 240), IPL_DEPTH_32F, 1 );

obj_img = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 1 );

bkg_img = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 1 );

result_img= cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 3 );

ทําการสรางตัวแปรของภาพ พื้นหลัง วัตถุ และ ภาพแสดงผล ในขนาดความกวาง 320 ความสูง 240 พิกเซล และกําหนดขนาดจํานวน bit และ จํานวน channel

1.3 สรางหนาตางแสดงผล

// Create background and object windows

cvNamedWindow(WCV_BKG);

cvNamedWindow(WCV_OBJ);

สรางสวนแสดงผลของพ้ืนหลังและวัตถุ

2. Connect to Server Program

m_Xmpeg.Connect(WCV_IP);

เริ่มการเช่ือมตอไปยัง Server program โดยใชคา WCV_IP คือ 192.168.17.131

3. Capturing Image Stream

IplImage *img;

m_Xmpeg.SaveImage(WCV_FILE_NAME);

img = cvLoadImage(WCV_FILE_NAME);

เนื่องจาก input ของโปรแกรมเปน stream ดังน้ันเราตองจับภาพเปน realtime เพื่อทําหารโหลดขอมูลภาพมาใชในแตละเฟรมใชหลักการเดียวกับบัฟเฟอร

Motion Detection By Background Substraction 34

Page 36: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

4. Resize and Convert to Gray

cvResize(img, rsize_img);

cvReleaseImage(&img);

cvCvtColor( rsize_img, gray_img, CV_BGR2GRAY );

เพื่อการคํานวณภาพท่ีรวดเรว็ยิง่ข้ึนจําเปนตองใชภาพท่ี resize แบบ Gray Scale

5. Calculating with Algorithm

นําคาของภาพท่ี resize แลวมาคํานวนโดยใชวิธี Running Average เพื่อหาคาของพ้ืนหลังเพ่ือนําไปใชในการจําลองระบบ

cvRunningAvg(*img, *acc, alpha, NULL);

cvConvertScale(*acc, *bkg, 1.0, 0.0);

โดยท่ี

alpha = 0.005

acc คือ คาท่ีทดเอาไวเพื่อนํามาใสคาใน bkg พรอมท้ังเปลี่ยนขนาด 1 เทา

6. Silmulate motion with MHI

เปนการจําลองระบบดวยวิธี MHI (Motion History Image) ใน function

update_mhi( rsize_img,bkg_img, result_img, 30 );

โดยท่ี

คือ คา รูปภาพ capture ท่ีทําการ resize แลว rsize_img

bkg_img คือ คาพ้ืนหลังของรูปท่ีทําการคํานวณจาก algorithm แลว

result_img คือ คาของภาพท่ีตองการใหแสดงผลในหนาตาง object

100 คือ คา threshold ท่ีกําหนดไว 1) Initial Variable

// numble of cyclic frame

Motion Detection By Background Substraction 35

Page 37: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

const int N = 4;

// ring image buffer

IplImage **buf = 0;

IplImage* silh = 0; //คาของรูปจําลอง output object

CvSeq* seq; //คา segmentation mask

IplImage *mhi = 0; // MHI คา MHI

IplImage *orient = 0; // orientation คามุมองศา

IplImage *mask = 0; // valid orientation mask คา mask ของมุมองศา

IplImage *segmask = 0; // motion segmentation map คา segmentation mask

CvMemStorage* storage = 0; // temporary storage คาหนวยเก็บขอมูลช่ัวคราว 2) Allocating buffer image

buf = (IplImage**)malloc(N*sizeof(buf[0]));

สราง array ของตัวแปร IplImage ตามจํานวน N x buf ตัวแรก

memset( buf, 0, N*sizeof(buf[0]));

จองหนวยความจําใหแก buf จํานวน N x buf ตัวแรก

3) Create buffering cyclic

for( i = 0; i < N; i++ ) {

cvReleaseImage( &buf[i] );

buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 );

cvZero( buf[i] );

}

Motion Detection By Background Substraction 36

Page 38: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

สราง buffer image N (N = 4) ตัวท่ีมีการ update ตลอดเวลา พรอมท้ังใหคาเริ่มตนเปน 0 จากรูป

รูปภาพ 4-1 ภาพประกอบการทํา frame buffer

Create MHI and Segmentation variable

// create MHI image with 32 bit color 1 channel

mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 );

cvZero( mhi ); // clear MHI at the beginning

orient = cvCreateImage( size, IPL_DEPTH_32F, 1 );

segmask = cvCreateImage( size, IPL_DEPTH_32F, 1 );

Motion Detection By Background Substraction 37

Page 39: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

mask = cvCreateImage( size, IPL_DEPTH_8U, 1 );

4) Change image to gray scale buffer

cvCvtColor( img, buf[last], CV_BGR2GRAY ); // convert frame to grayscale

5) Find object and Update MHI

1 cvAbsDiff( buf[idx1], bkg, silh ); // get difference between frames

2 cvThreshold( silh, silh, diff_threshold, 1, CV_THRESH_BINARY ); // and threshold it

3 cvUpdateMotionHistory( silh, mhi, timestamp, MHI_DURATION ); // update MHI

// Note ทํากา on cvAbsDiff() จากคา รหาผลตางของ frame โดยใช functi

buf idx1  – bkg    silh   

// Note ทําการปรับคา threshold ให object เพื่อการแสดงผลท่ีดีข้ึน โดยใช thresholde = 100

// Note ทําการ update MHI จาก object silh ไปสู mhi ในชวงเวลา 1 ลูกคลื่นของนาฬิกา

6) Convert scale MHI and Calculate Motion Gradian

1 cvCvtScale( mhi, mask, 255./MHI_DURATION,

(MHI_DURATION - timestamp)*255./MHI_DURATION );

cvZero( dst );

2 cvCvtPlaneToPix( mask, 0, 0, 0, dst );

// calculate motion gradient orientation and valid orientation mask 3 cvCalcMotionGradient( mhi, mask, orient, MAX_TIME_DELTA,

MIN_TIME_DELTA, 3 ) 1) ทําการ convert ภาพ MHI ไปเปนภาพ mask 8 bit 2) นําคา mask ไปใสใน dst เพื่อรอการวาด

Motion Detection By Background Substraction 38

Page 40: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

3) คํานวณองศา motion gradian จาก MHI ไปใสใน mask จาก MIN_TIME_DELTA ไปสู MAX_TIME_DELTA

7) Create Storage and Segmentation

if( !storage )

storage = cvCreateMemStorage(0);

else

cvClearMemStorage(storage);

// ขณะท่ียังไมมีการสราง storage ก็ใหสรางมิฉะน้ัน จะเคลียร storage

// segment motion: get sequence of motion components

// สราง segment เพื่อเก็บการเคลื่อนไหวโดยรวมของภาพ

seq = cvSegmentMotion( mhi, segmask, storage, timestamp, MAX_TIME_DELTA );

// iterate through the motion components,

for( i = -1; i < seq->total; i++ ) {

// ถาเปนการทํางานรอปแรกใหกําหนดเสนสีขาว มีรัศมี 100 พิกเซลและกลองขนาด 320 x 240

if( i < 0 ) { // case of the whole image

comp_rect = cvRect( 0, 0, size.width, size.height );

color = CV_RGB(255,255,255); //color = white

magnitude = 100;

}

else { // i-th motion

// หา element ตัวท่ี i ของอนุกรมภาพ ( sequence image)

comp_rect = ((CvConnectedComp*)cvGetSeqElem( seq, i ))->rect;

Motion Detection By Background Substraction 39

Page 41: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

//ถา ขนาดของ element ตัวท่ี i เล็กมากใหวนรอปตอไป

if( comp_rect.width + comp_rect.height < 50 ) // skip very small components

continue;

// กําหนดสีของเสนเปนสีแดง และมีรัศมี 100 พิกเซล

color = CV_RGB(255,0,0); // color = red

magnitude = 30; // fixed magnitude

} 8) Select Component ROI

// select component ROI

cvSetImageROI( silh, comp_rect );

cvSetImageROI( mhi, comp_rect );

cvSetImageROI( orient, comp_rect );

cvSetImageROI( mask, comp_rect );

นําภาพ silh , mhi , orient , mask ไปใสไวในกลองส่ีเหลี่ยม 9) Draw empty circles

// หาจุดศูนยกลางของภาพ

center = cvPoint( (comp_rect.x + comp_rect.width/2),

(comp_rect.y + comp_rect.height/2) );

// วาดวงกลมมีเฉพาะขอบใหมีสีท่ีระบุ ความหนา 3 pixel รัศมี magnitude x 1.2

cvCircle( dst, center, cvRound(magnitude*1.2), color, 3, CV_AA, 0 );

7. Draw Background and Result

cvShowImage(WCV_BKG, bkg_img);

cvShowImage(WCV_OBJ, result_img);

//สั่งใหโปรแกรมแสดงภาพพืน้หลัง และ ภาพเคารางวัตถุ

Motion Detection By Background Substraction 40

Page 42: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

รูปภาพ 4-2 ภาพตนฉบับ

รูปภาพ 4-3 ภาพวัตถุ

Motion Detection By Background Substraction 41

Page 43: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

รูปภาพ 4-4 ภาพพ้ืนหลัง

ข้ันตอนวิธีการทํา Running Gaussian Average 4.2

1) Initial Parameter

- กําหนดคา k , α

static double alpha = 0.5;

static int k = 8;

- ทําการสรางรูปท่ีเก็บคา gray scale ของ σ และ μ

IplImage mue = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 1 );

IplImage omega= cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 1 );

Process realtime image

1) Receive output

Motion Detection By Background Substraction 42

Page 44: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

- ทําการรับคา output จากเฟรมกอนหนา ไดแกคา μ , σ โดยรับคาจาก function calRGA ท่ีเขียนข้ึนมา

VSAAPI(void) calRGA(IplImage *input ,IplImage *mue, IplImage *omega , IplImage *output)

{

.

.

.

}

2) Compute output

- หาคา Iout   | Iin – Iµ |   kIσ

if( abs( ((int)(unsigned char)input->imageData[i] -(int)(unsigned char)mue->imageData[i])) >

(k * (int)(unsigned char)omega->imageData[i]) )

output->imageData[i] = (char)-1; //คา -1 เปนสีดํา

else

output->imageData[i] = (char)0; // คา 0 เปนสีขาว

3)Update μ

- หาคา Iµt 1   α   Iin     1‐ α   Iµt

temp = (alpha * (int)(unsigned char)input->imageData[i]) +

((1 - alpha) * (int)(unsigned char)mue->imageData[i]);

mue->imageData[i] = (char)(int)temp;

4) Update σ

-  I σ^2 t 1    α  Iin – Iµt 1 2    1‐ α  Iσt  

Motion Detection By Background Substraction 43

Page 45: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

temp = alpha * pow(((int)(unsigned char)input->imageData[i] - (int)(unsigned char)mue->imageData[i]) , 2);

temp += (1 - alpha) * pow(((int)(unsigned char)omega->imageData[i]), 2); 5) Show input / μ / σ / output

#define WCV_INPUT "INPUT"

#define WCV_OUTPUT "OUTPUT"

#define WCV_MUE "MUE"

#define WCV_OMEGA "OMEGA"

cvShowImage(WCV_INPUT, gray_img);

cvShowImage(WCV_MUE, mue_img);

cvShowImage(WCV_OMEGA, omega_img);

cvShowImage(WCV_OUTPUT, output_img);

5) Release Parameter

- ลบ pointer ของ Iin Iout Iσ Iµ ออกจากโปรแกรม

cvReleaseImage(&mue);

cvReleaseImage(&omega)

ผลลัพธของโปรแกรม

กําหนดคา α = 0.5 , k = 8

Motion Detection By Background Substraction 44

Page 46: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

รูปภาพ 4-5 ภาพตนฉบับ

รูปภาพ 4-6 ภาพคาเฉลี่ย

Motion Detection By Background Substraction 45

Page 47: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

รูปภาพ 4-7 ภาพคาความแปรปรวน

รูปภาพ 4-8 ภาพผลลัพธ

Motion Detection By Background Substraction 46

Page 48: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

ข้ันตอนการทํา Erosion / Dilation 4.3

1) Initialization

IplConvKernel* element = 0;

int element_shape = CV_SHAPE_ELLIPSE;

int max_iters = 8;

int erode_dilate_pos = 0;

erode_dilate_pos = max_iters;

source = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 1 );

dest = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 1 );

cvNamedWindow("Erode/Dilate");

cvCreateTrackbar("iterations","Erode/Dilate",&erode_dilate_pos,max_iters*2+1,ErodeDilate);

ทําการกําหนด element shape template โดยใหคารูปราง template เปนวงรี CV_SHAPE_ELLIPE พรอมกับสรางภาพเพ่ือทําสําเนาในการคํานวณ และภาพผลลัพธขนาด 320 x 240 pixel

-

กําหนดคาการวนรอบเริ่มตนเปน 8 และสราง Track Bar เพื่อการแสดงผลของการทํา Erosion / Dilation ในหนาตางของ "Erode/Dilate"

-

2) Processing

int n = erode_dilate_pos - max_iters;

int an = n > 0 ? n : -n;

element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 );

if( n < 0 )

{

Motion Detection By Background Substraction 47

Page 49: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

cvErode(source,dest,element,1);

}

else

{

cvDilate(source,dest,element,1);

}

cvShowImage("Erode/Dilate",dest);

- ทําการสราง template ขนาด (n x 2 )+ 1 รูปวงรี พรอมกับเปรียบเทียบคาของ n ท่ีไดจาก Track bar โดยท่ี

ถา n < 0 ไปทํา function Erode

ถา n > 0 ไปทํา function Dilate

- แสดงผลในหนาตาง "Erode/Dilate" โดยใชภาพ dest

3) Release Parameter

cvReleaseImage(&sourc);

cvReleaseImage(&dest);

cvDestroyWindow("Erode/Dilate");

cvReleaseStructuringElement(&element); - ทําการลบพารามิเตอรของข้ันตอนท้ังหมดไป

Motion Detection By Background Substraction 48

Page 50: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

ผลลัพธจากการทํา Erosion / Dilation

รูปภาพ 4-9 ภาพผลลัพธ

รูปภาพ 4-10 ภาพหลังการทํา Erode/Dilate

Motion Detection By Background Substraction 49

Page 51: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

4.4 Running Gaussian Average By Selectivity

เขาไปแกการทํางานของ Running Gaussian Average ดังนี้

1) เพิ่มเติมสวน Initialization

static int k1 = 10;

static int k2 = 15;

static int k3 = 5;

IplImage *output2 = 0;

IplImage *output3 = 0;

output2 = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 3 );

output3 = cvCreateImage( cvSize(320, 240), IPL_DEPTH_8U, 3 );

cvNamedWindow("OUTPUT2");

cvNamedWindow("OUTPUT3"); เปนการกําหนดคา K1 , K2 , K3 และสวนแสดงผล output ท่ี 2 และ 3 -

2) เพิ่มเติมสวน Processing

//output 2

if( (unsigned char)omega->imageData[i] > k2)

{

output2->imageData[i*3] = (char)255;

output2->imageData[i*3+1] = (char)0;

output2->imageData[i*3+2] = (char)0;

}

Motion Detection By Background Substraction 50

Page 52: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

else

{

output2->imageData[i*3] = (char)0;

output2->imageData[i*3+1] = (char)0;

output2->imageData[i*3+2] = (char)0;

}

//output 3

if( (unsigned char)omega->imageData[i] > k3)

{

output3->imageData[i*3] = (char)0;

output3->imageData[i*3+1] = (char)255;

output3->imageData[i*3+2] = (char)0;

}

else

{

output3->imageData[i*3] = (char)0;

output3->imageData[i*3+1] = (char)0;

output3->imageData[i*3+2] = (char)0;

}

Motion Detection By Background Substraction 51

Page 53: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

}

double percentMotion = (cvCountNonZero(output) / (320 * 240) ) * 100;

//Running Gaussian By Selectiviy

if(percentMotion <= 1) // case motion < 1% of total area

{

//find average without object

cvAbsDiff(mue, obj , acc);

cvCopyImage(acc , mue);

}

else if(percentMotion >= 90) // case motion > 90% of total area

{

mue = mue;

}

cvShowImage("OUTPUT2",output2);

cvShowImage("OUTPUT3",output3);

- ทําการหาคาเปอรเซ็นตของวัตถุเทียบจากพื้นท่ีท้ังหมด แลวนํามาตรวจสอบวาอยูในกรณีใดของ Running Gaussian Average By Selectivity พรอมท้ังแจกแจงผลลัพธตามคา k ซ่ึงแสดงผลในแตละหนาตาง

Motion Detection By Background Substraction 52

Page 54: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

3) เพิ่มเติมสวน Release Parameter

cvReleaseImage(&output2);

cvReleaseImage(&output3);

cvDestroyWindow("OUTPUT2");

cvDestroyWindow("OUTPUT3");

ผลลัพธจากการทํา Running Gaussian Average By Selectivity

รูปภาพ 4-11 ภาพตนฉบับ

Motion Detection By Background Substraction 53

Page 55: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

รูปภาพ 4-12 K1=10

รูปภาพ 4-13 K2 = 20

Motion Detection By Background Substraction 54

Page 56: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

รูปภาพ 4-14 K3 = 1

Motion Detection By Background Substraction 55

Page 57: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

บทท่ี 5 สรุปผลและขอเสนอแนะ

สรุปผล

1. ศึกษาอัลกอรธิึมหาพื้นหลังสาํหรับวิธี Background Substraction พรอมท้ังเปรียบเทียบขอดีและขอดอยของแตละวิธี

2. ทดสอบระบบกลอง IP Camera จากโปรแกรม capture วดิีโอสตรีมของทางฝง server พรอมท้ังเรียนรูข้ันตอนการทํางานของโปรแกรม

3. เรียนรูการใช Library openCV ท่ีในหัวขอ Background Substraction และ Motion Template

4. ศึกษาวิธีการทํา Motion Template เพื่อทําการหาภาพโครงรางของวัตถุท่ีเคลื่อนไหว

5. ทําความเขาใจ source code ของโปรแกรมฝง client ท่ีมีอยูให

6. implement โปรแกรมในขอ 5 เพื่อหาวัตถุโดยใชวิธี Background Substraction ของอัลกอริธึม Running Average จาก input ของโปรแกรมฝง server

7. นําโปรแกรมในขอ 6 เพื่อหาภาพโครงรางของวัตถุท่ีเคลื่อนไหวโดยวิธี Motion Template

8. implement โปรแกรมในขอ 5 เพื่อหารูผลลพัธโดยใชวิธี Background Substraction ของอัลกอริธึม Running Guassian Average จาก input ของโปรแกรมฝง server

9. ปรับปรุงผลลัพธดวยวิธีของ Morphology Image Processing จาก อัลกอรธิึม Running Guassian Average

10. เพิ่มเติมอัลกอริธึมแบบ Running Guassian Average By Selectivity พรอมท้ังแจกแจงผลลัพธตามคา k

ยิ่งคา k มาก วัตถุท่ีไดจะคมชัด

ยิ่งคา k นอย วตัถุท่ีไดจะมี noise มาก

ปญหาและแนวทางการแกไข 1. Overflow pixel value เปนการแสดงคาของ pixel เกินจากการใชงานจริงเชน

คาของ pixel ณ จุดพิกัด x,y ของเฟรมแรกและเฟรมถัดไปเปน 200 และ 150 เมื่อมีการนําคา 2 คาน้ีมาคูณกันตามสมการ Running Guassain Average จะมีการ overflow เกิดข้ึนถามีการ

Motion Detection By Background Substraction 56

Page 58: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

2. คาท่ีคํานวณเปนผลไมตรงกับทฤษฎี เนื่องจากการ casting character ใน image เพื่อนํามา

คํานวณ เชน

temp = (alpha * input->imageData[i]) +

((1 - alpha) * mue->imageData[i]);

mue->imageData[i] = temp;

หลังการ casting ท่ีถูกตองจะเปน

temp = (alpha * (int)(unsigned char)input->imageData[i]) +

((1 - alpha) * (int)(unsigned char)mue->imageData[i]);

mue->imageData[i] = (char)(int)temp;

ท้ังน้ีเนื่องจากคาของ pixel ในตัวแปร sign char มีตาต้ังแต -127 ถึง 127 แตคาท่ีเราใชงานจริงมีคาต้ังแต 0 ถึง 255

3. การหาคา k ท่ีเหมาะสมกับสมการ เนื่องจากคา k เปนคาท่ีเหมาะสมของกราฟรูประฆังคว่ํา ยิ่งคา k มากๆ noise ท่ีไดจะลดลง ในขณะท่ีภาพท่ีไดจะหางไกลจากคาเฉลี่ยเรื่อยๆ

Motion Detection By Background Substraction 57

Page 59: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

บรรณานุกรม

1. A robust and computationally ef_cient motion detection algorithm based on background estimation. By A . Manzanera J. C. Richefeu

F-75739 PARIS CEDEX 15

http://www.ensta.fr/_ manzaner

2. M. Piccardi. Background subtraction techniques: a review.

http://www-staff.it.uts.edu.au/¬ massimo/

3. S.-C. Cheung and C. Kamath. Robust techniques for background

subtraction in urban traf_c video. In Proc. SPIE

Video Communications and Image Processing, San Jose -

CA, 2004.

4. A. Elgammal, D. Harwood, and L. Davis. Non-parametric

Model for Background Subtraction. In Proc. IEEE European

Conference on Computer Vision, Dublin - Ireland,

2000.

5. Open Source Computer Vision Library Reference Manual

Copyright © 1999-2001 Intel Corporation

All Rights Reserved

Issued in U.S.A.

Order Number: TBD

World Wide Web: http://developer.intel.com

Motion Detection By Background Substraction 58

Page 60: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

ดัชนฟีงกชัน

CVAPI(IplImage*) cvCreateImage( CvSize size, int depth, int channels )

size คือ คาของขนาดเฟรมของภาพท้ังความยาวและความสูง

depth คือ คาของจํานวนบิตตอชาเนลของจุดส ี

channel คือ จํานวนชาเนล

รายละเอียด

เปนฟงกชันการสรางภาพข้ึนมากําหนดขนาดเฟรม คาของจํานวนบิตตอชาเนลของจุดสี และ จํานวนชาเนล

CV_INLINE CvSize cvSize( int width, int height )

width คือ คาของความกวางของเฟรม

height คือ คาของความกวางของเฟรม

รายละเอียด

เปนฟงกชันการสรางขนาดเฟรมของภาพข้ึนมา

CVAPI(int) cvNamedWindow( const char* name )

name คือ ช่ือของหนาตาง

รายละเอียด

เปนฟงกชันการหนาตางสําหรบัแสดงภาพ

CVAPI(void) cvShowImage( const char* name, const CvArr* image )

name คือ ช่ือของหนาตาง

image คือ คาของภาพ

รายละเอียด

เปนฟงกชันการแสดงผลหนาตางท่ีใชสําหรับแสดงภาพ

Motion Detection By Background Substraction 59

Page 61: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

CVAPI(IplImage*) cvLoadImage( const char* filename)

filename คือ ช่ือของไฟลภาพท่ีจะโหลดมาใช

รายละเอียด

เปนฟงกชันท่ีจะโหลดภาพมาใช

CVAPI(void) cvCvtColor( const CvArr* src, CvArr* dst, int code )

src คือ ภาพ input

dst คือ ภาพ output

code คือ รหัสสําหรบัการแปลงสี

รายละเอียด

เปนฟงกช่ันท่ีใชสําหรับแปลงสีจากภาพสีเปนขาวดํา

CVAPI(void) cvRunningAvg( const CvArr* image, CvArr* acc, double alpha,

const CvArr* mask CV_DEFAULT(NULL) )

image คือ ภาพ input

acc คือ ภาพ output

alpha คือ คาของอัลฟาท่ีใชสําหรับคํานวนสูตร

mask คือ คา mask ปกติเปน 0

รายละเอียด

เปนฟงกช่ันท่ีใชสําหรับหาพื้นหลังของภาพดวยวิธี Running Average

CVAPI(void) cvAbsDiff( const CvArr* src1, const CvArr* src2, CvArr* dst )

Motion Detection By Background Substraction 60

Page 62: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

src1 คือ ภาพ input1

src2 คือ ภาพ input2

dst คือ ภาพ output

รายละเอียด

เปนฟงกช่ันท่ีใชสําหรับหาหาผลตางของภาพ input 1 และ input 2

CVAPI(void) cvUpdateMotionHistory( const CvArr* silhouette, CvArr* mhi,

double timestamp, double duration );

silhouette คือ ภาพโครงราง

mhi คือ ภาพ MHI

timestamp คือ เวลาท่ีผานไปต้ังแตเริ่มโปรแกรม

duration คือ ชวงเวลาท่ีตองการ

รายละเอียด

เปนฟงกช่ันท่ีใชการทํา Update MHI

CVAPI(void) cvCalcMotionGradient( const CvArr* mhi, CvArr* mask, CvArr* orientation,

double delta1, double delta2,

int aperture_size CV_DEFAULT(3)))

mhi คือ ภาพ MHI

mask คือ คา mask

orientation คือ คาองศา

delta1 คือ คาเวลาท่ีเปลี่ยนแปลงสูงสุด

delta2 คือ คาเวลาท่ีเปลี่ยนแปลงสูงสุด

aperture_size คือ ขนาดของอนุพันธ ปกติจะเปน 3

Motion Detection By Background Substraction 61

Page 63: ชื่อโครงงาน - Prince of Songkla ...fivedots.coe.psu.ac.th/~kom/wp-content/uploads/2009/07/4610533.pdf · บทที่ 4 รายละเอียดการทํ

Motion Detection By Background Substraction 62

รายละเอียด

เปนฟงกช่ันท่ีใชการคํานวณ Motion Gradient