Đăng ký Đăng nhập
Trang chủ đồ án tốt nghiệp xây dựng phần mềm giám sát và cảnh báo dựa trên kỹ thuật ph...

Tài liệu đồ án tốt nghiệp xây dựng phần mềm giám sát và cảnh báo dựa trên kỹ thuật phát hiện chuyển động

.DOCX
51
286
52

Mô tả:

Báo cáo đồ án tốt nghiệp 2011 Mục lục Chương 1: Giới thiệu bài toán.................................................................................................................4 1.1. Giới thiệu bài toán Xây dựng phần mềm giám sát và cảnh báo..................................................4 1.1.1. Nội dung.............................................................................................................................4 1.1.2. Mục đích.............................................................................................................................4 1.1.3. Chức năng...........................................................................................................................5 1.2. Giải pháp và mô hình..................................................................................................................5 1.2.1. Khảo sát các hệ thống giám sát hiện có..............................................................................5 1.2.2. Mô hình bài toán.................................................................................................................7 Chương 2: Kỹ thuật và công nghệ...........................................................................................................9 2.1. Công nghệ Java..........................................................................................................................9 2.1.1. Giới thiệu về công nghệ Java..............................................................................................9 2.1.2. Ưu điểm , nhược điểm của Java..........................................................................................9 2.1.3. Những hỗ trợ của Java......................................................................................................10 2.1.4. Công nghệ Java trong lập trình điện thoại di động (J2ME)...............................................11 2.1.5. Lý do sử dụng Java để xây dựng đồ án.............................................................................12 2.2. Thuật toán phát hiện chuyển động............................................................................................12 2.2.1. Mô tả thuật toán................................................................................................................12 2.2.2. Biểu diễn thuật toán..........................................................................................................13 2.2.3. Đánh giá thuật toán...........................................................................................................15 2.2.4. So sánh với các thuật toán khác........................................................................................16 2.3. Thuật toán nâng cao (áp dụng cho vùng phát hiện)...................................................................17 Chương 3: Thiết kế chương trình..........................................................................................................20 3.1. Các module của chương trình...................................................................................................20 3.2. Cài đặt chương trình.................................................................................................................21 3.2.1. Cài đặt thuật toán phát hiện chuyển động.........................................................................21 3.2.2. Mô hình các luồng xử lý...................................................................................................30 3.2.3. Cài đặt luồng xử lý dữ liệu................................................................................................32 3.2.4. Cài đặt luồng xử lý Server................................................................................................33 3.2.5. Cài đặt luồng xử lý kết nối giữa Server – Mobile.............................................................36 3.2.6. Cài đặt luồng xử lý chạy trên điện thoại di động...............................................................37 Nguyễn Viết Khánh – Công nghệ phần mềm - K48 1 Báo cáo đồ án tốt nghiệp 2011 3.2.7. Cài đặt lớp ghi dữ liệu......................................................................................................41 3.2.8. Cài đặt lớp hiển thị dữ liệu................................................................................................42 Chương 4: Thử nghiệm và đánh giá.....................................................................................................43 4.1. Giao diện chương trình.............................................................................................................43 4.2. Thử nghiệm chương trình.........................................................................................................47 4.3. Đánh giá kết quả.......................................................................................................................49 4.3.1. Đánh giá về chức năng.....................................................................................................49 4.3.2. Đánh giá tính logic............................................................................................................49 4.3.3. Đánh giá hiệu năng...........................................................................................................50 Chương 5: Kết luận và hướng phát triển.............................................................................................51 5.1. Kết luận....................................................................................................................................51 5.2. Hướng phát triển.......................................................................................................................51 5.2.1. Bổ xung tính năng, thuật toán nâng cao............................................................................51 5.2.2. Công cụ thiết kế................................................................................................................52 5.2.3. Hướng cảnh bảo khác.......................................................................................................52 Tài liệu tham khảo..................................................................................................................................53 Nguyễn Viết Khánh – Công nghệ phần mềm - K48 2 Báo cáo đồ án tốt nghiệp 2011 Lời nói đầu Ngày nay với sự phát triển vượt bậc của các ngành khoa học kỹ thuật nói chung và ngành công nghệ thông tin nói riêng, cuộc sống của con người đã chuyển sang một thời đại mới - thời đại công nghệ hóa. Với việc ứng dụng khoa học công nghệ vào đời sống xã hội, đời sống con người đang dần được cải thiện và nâng cao một cách đáng kể Trong việc giám sát an ninh, trước kia, chúng ta phải bố trí nhân lực để giám sát trực tiếp. Thế nhưng ngày nay, công việc an ninh đã được công nghệ hóa, giảm bớt đòi hỏi về nhân lực. Con người được thay thế bằng các hệ thống camera giám sát đặt tại những vị trí chỉ định để liên tục thu hình và gửi về hệ thống máy chủ cho người giám sát theo dõi. Nhờ vậy mà không cần phải bố trí nhiều nhân lực tại nhiều địa điểm để giám sát mà bất cứ nơi đâu, bất cứ lúc nào người ta cũng có thể theo dõi được qua hệ thống camera của mình. Hệ thống giúp cho những nhà quản lý vừa kiểm soát công việc một cách chặt chẽ hơn, vừa tiết kiệm được chi phí thuê nhân công bảo vệ, mà lại làm cho hình ảnh của doanh nghiệp, cá nhân được chuyên nghiệp, hiện đại hơn. Nếu có bất kỳ sự cố nào xảy ra, hệ thống camera an ninh sẽ ghi lại, từ đó làm tư liệu bằng chứng để tìm ra được nguyên nhân và khắc phục hậu quả vấn đề. Hệ thống còn giúp tăng cường công tác bảo mật, an toàn – an ninh, phòng chống sự xâm nhập bất hợp pháp của kẻ gian Tuy nhiên, hệ thống camera giám sát hiện nay còn tồn tại một số nhược điểm như: hệ thống tuy đã thực hiện giám sát nhưng chưa có chức năng tự động cảnh báo cho người giám sát. Bởi vậy, người giám sát vẫn luôn phải theo dõi màn hình hệ thống 24/24h để phát hiện và chủ động tránh các rủi ro có thể xảy đến. Nhằm góp phần nâng cao chất lượng hệ thống giám sát, tôi đã quyết định nghiên cứu xây dựng đồ án tốt nghiệp với đề tài: Xây dựng phần mềm giám sát và cảnh báo dựa trên kỹ thuật phát hiện chuyển động. Trong quá trình nghiên cứu và phát triển tôi đã nhận được sự giúp đỡ và hướng dẫn tận tình của Thầy Phạm Quang Hòa. Thầy đã cho tôi những gợi ý cũng như những ý kiến vô cùng quan trọng, giúp tôi có thể vượt qua các khó khăn trong quá trình nghiên cứu và xây dựng nên được phần mềm này Tôi rất mong đề tài này sẽ được đón nhận và có những ý kiến đóng góp để phát triển và hoàn thiện hơn nữa sản phẩm phần mềm này và hi vọng một ngày không xa, sản phẩm phần mềm này sẽ được ứng dụng rộng rãi trong đời sống hằng ngày của chúng ta. Nguyễn Viết Khánh – Công nghệ phần mềm - K48 3 Báo cáo đồ án tốt nghiệp 2011 Chương 1: Giới thiệu bài toán 1.1. Giới thiệu bài toán Xây dựng phần mềm giám sát và cảnh báo 1.1.1. Nội dung Bài toán xuất phát từ nhu cầu thực tế như: giải quyết các vấn đề còn tồn đọng của hệ thống giám sát hiện tại và góp phần nâng cao chất lượng hệ thống camera giám sát, bổ sung thêm chức năng cảnh báo cho hệ thống giám sát, giải phóng sức lao động cho người chịu trách nhiệm giám sát hệ thống, chuyển tín hiệu cảnh báo đến các thiết bị di động của người giám sát Xây dựng phần mềm dựa trên kỹ thuật phát hiện chuyển động. Qua kỹ thuật này, phần mềm sẽ xử lý dữ liệu để kiểm tra có sự chuyển động xảy ra hay không. Khi có sự chuyển động xảy ra, phần mềm sẽ cảnh báo cho người giám sát biết Phần mềm được xây dựng với hai nội dung chính là giám sát và cảnh báo - Giám sát: phần mềm sẽ giám sát trong một vùng xác định để xác định có sự chuyển động xảy ra hay không trong vùng đó - Cảnh báo: mỗi khi phần mềm xác định được là có sự chuyển động xảy ra trong vùng giám sát, phần mềm sẽ cảnh báo cho người giám sát qua hai hình thức là cảnh báo qua loa và cảnh báo qua điện thoại di động. Đồng thời phần mềm sẽ ghi hình chuyển động lại vào trong bộ nhớ để làm tư liệu cho người giám sát 1.1.2. Mục đích - Xây dựng phần mềm với giao diện đơn giản, dễ dàng sử dụng và cài đặt chương trình - Phần mềm giúp giải quyết các vấn đề còn tồn đọng - Phần mềm giúp giải phóng sức lao động cho người chịu trách nhiệm giám sát - Phần mềm giúp cải thiện, nâng cao hiệu quả của việc giám sát và cảnh báo - Xây dựng thành công phần mềm với hai chức năng chính là giám sát và cảnh báo - Phần mềm sẽ xác định chính xác, đúng đắn những sự chuyển động xảy ra trong một vùng xác định - Phần mềm sẽ cảnh báo đúng mỗi khi có sự chuyển động xảy ra - Phần mềm sẽ gửi được hình ảnh chụp hình chuyển động cho điện thoại di động đang kết nối với hệ thống Nguyễn Viết Khánh – Công nghệ phần mềm - K48 4 Báo cáo đồ án tốt nghiệp - 2011 Phần mềm sẽ ghi được hình ảnh chuyển động vào trong hệ thống để làm tư liệu cho người giám sát 1.1.3. Chức năng  Phần mềm gồm 4 chức năng chính là: - Giám sát camera: Hệ thống sẽ giám sát sự chuyển động trong một vùng xác định. Trước hết camera sẽ được lắp đặt tại một vị trí để thu được hình ảnh góc quan sát của camera. Hệ thống liên tục lấy những khung hình từ camera gửi về. Sau đó, hệ thống sẽ so sánh giữa các khung hình đó để tìm ra vùng khác biệt lớn nhất giữa các khung hình. Khi tìm ra vùng khác biệt lớn nhất và vùng đó lớn hơn 1 ngưỡng nhất định thì hệ thống sẽ báo hiệu là có sự chuyển động xảy ra - Báo động qua loa: Mỗi khi có sự chuyển động xảy ra trong vùng giám sát, hệ thống sẽ chạy một đoạn nhạc âm đã được cài đặt trong hệ thống để báo động qua loa cho người giám sát. Khi hết chuyển động, phần nhạc tiếp tục chạy đến 3 giây sau thì mới dừng hẳn - Theo dõi từ xa qua di động: Người giám sát có thể giám sát sự chuyển động từ xa thông qua phần mềm được cài đặt trên di động của mình. Mỗi khi có sự chuyển động xảy ra, sau khi báo động qua loa, hệ thống sẽ gửi một khung hình ghi nhận sự chuyển động cho di động. Phần mềm sẽ hiển thị khung hình đó trên màn hình di động cho người giám sát xem. - Tự động ghi hình: Mỗi khi có sự chuyển động xảy ra trong vùng giám sát, hệ thống sẽ tự động ghi hình chuyển động đó lại. Sau này người giám sát có thể xem lại các đoạn ghi hình chuyển động xảy ra trong hệ thống  Phần mềm gồm 3 chức năng khác là: - Chụp hình chuyển động: Khi người giám sát muốn chụp lại hình ảnh hiển thị trên màn hình, hệ thống sẽ lưu hình ảnh tại một folder đã chỉ định và hiển thị ảnh lên màn hình cho người giám sát theo dõi - Quản lý tài khoản đăng nhập hệ thống: hệ thống có chức năng quản lý tài khoản đăng nhập vào hệ thống, có thể thêm, sửa, xóa tài khoản đăng nhập - Chuyển đổi giao diện sử dụng: người dùng có thể chọn lựa giao diện phần mềm theo ý thích của mình trong các giao diện đã có của phần mềm 1.2. Giải pháp và mô hình 1.2.1. Khảo sát các hệ thống giám sát hiện có Nguyễn Viết Khánh – Công nghệ phần mềm - K48 5 Báo cáo đồ án tốt nghiệp 2011 1.2.1.1. Khảo sát Hiện nay có rất nhiều các hệ thống giám sát khác nhau, các hệ thống đều được xây dựng trên các thiết bị cơ bản là: - Camera đặt tại vị trí cần giám sát - Router: Bộ phát tín hiệu - Phần mềm giám sát và phần mềm gửi dữ liệu Hệ thống có các chức năng như: - Ghi hình: hệ thống ghi lại hình ảnh thu được từ camera làm tư liệu cho sau này - Giám sát tại chỗ: Người giám sát có thể theo dõi các hình ảnh thu được từ camera trên hệ thống - Giám sát từ xa: các hình ảnh thu được từ camera được gửi lên mạng. Từ đó người giám sát theo dõi từ xa qua mạng Chức năng Ghi hình Giám sát tại chỗ Giám sát từ xa Báo hiệu qua loa Tự động phát hiện chuyển động Tự động cảnh báo Cảnh báo từ xa Chụp hình chuyển động Hệ thống hiện có Có Có Có Không Không Không Không Không 1.2.1.2. Đánh giá  Các chức năng đã có như: - Ghi hình, giám sát tại chỗ, giám sát từ xa hoạt động tốt, ổn định, đáp ứng được nhu cầu người giám sát  Các chức năng chưa có như: - Hệ thống chưa tự động cảnh báo được cho người giám sát biết mỗi khi có chuyển động xảy ra, bởi vậy người giám sát luôn phải theo dõi 24/24 chuyển động qua màn hình giám sát Nguyễn Viết Khánh – Công nghệ phần mềm - K48 6 Báo cáo đồ án tốt nghiệp 2011 - Hệ thống chưa có chức năng cảnh báo từ xa cho người giám sát - Hệ thống chưa tự động phát hiện khi có chuyển động xảy ra: người giám sát là người phát hiện chuyển động qua màn hình theo dõi - Người giám sát phải liên tục theo dõi hình ảnh thu được thông qua camera để giám sát xem có sự xâm nhập trái phép nào không, chưa giải phóng sức lao động cho người giám sát 1.2.2. Mô hình bài toán 1.2.2.1. Tổ chức Hệ thống gồm các thành phần: camera thu hình, server xử lý, client hiển thị hình ảnh và di động  Camera: liên tục thu hình vùng quan sát và gửi dữ liệu lên một địa chỉ ip của camera  Server: xử lý dữ liệu và lắng nghe yêu cầu kết nối từ di động. Khi có yêu cầu kết nối từ phía di động, server sẽ thực hiện kết nối với di động. Server sẽ liên tục lấy dữ liệu từ địa chỉ ip của camera. Sau đó server sẽ xử lý dữ liệu, kiểm tra xem có sự chuyển động hay không. Nếu có sự chuyển động thì server sẽ khoanh vùng sự chuyển động để cho client hiển thị, chạy nhạc báo hiệu, ghi hình lại sự chuyển động và gửi dữ liệu cho di động đang kết nối với nó. Ngược lại, khi không có sự chuyển động, server sẽ thông báo cho di động là không có chuyển động xảy ra. Công việc được lặp lại cho đến khi kết thúc chương trình  Client: Lấy dữ liệu đã xử lý, hiển thị dữ liệu đó lên màn hình cho người giám sát theo dõi  Di động: di động kết nối với server, nhận dữ liệu từ server gửi cho khi có chuyển động xảy ra. Sau đó di động hiển thị dữ liệu lên màn hình di động cho người giám sát theo dõi 1.2.2.2. Mô hình Gồm có các thành phần như: - Camera: được đặt tại một vị trí cố định để thu hình, gửi hình lên một địa chỉ IP - Server: có nhiệm vụ lắng nghe kết nối từ phía di động và tạo các luồng xử lý dữ liệu cho kết nối đó. Đồng thời lấy dữ liệu từ địa chỉ IP và xử lý dữ liệu đó, từ đó kiểm tra có sự chuyển động hay không Nguyễn Viết Khánh – Công nghệ phần mềm - K48 7 Báo cáo đồ án tốt nghiệp 2011 - Client: hiển thị dữ liệu lên màn hình cho người dùng xem - Mobile: gửi yêu cầu nhận dữ liệu và nhận dữ liệu từ Server gửi về, hiển thị trên màn hình di động Chương 2: Kỹ thuật và công nghệ 2.1. Công nghệ Java 2.1.1. Giới thiệu về công nghệ Java Nguyễn Viết Khánh – Công nghệ phần mềm - K48 8 Báo cáo đồ án tốt nghiệp 2011 Java là một ngôn ngữ lập trình hướng đối tượng. Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi chạy Java là một công nghệ được hãng Sun Microsystems xây dựng từ cuối năm 1990 với cái tên Oak và hiện nay đang phát triển vượt bậc với sự đóng góp của hàng vạn lập trình viên trên thế giới. Ban đầu, Oak được kỹ sư James Gosling và các cộng sự xây dựng với mục đích lập trình cho các mặt hàng điện dân dụng với mục tiêu nhỏ gọn và tương thích được với nhiều loại thiết bị phần cứng khác nhau. Sau đó Oak được sử dụng trong nhiều dự án như dự án Xanh (Blue Project), dự án Phim theo yêu cầu (Video on demand Project). Sau một chuyến du lịch tới đảo Java của Indonesia, nhóm phát triển Oak đã đổi tên Oak thành Java Java được tạo ra với tiêu chí “Viết một lần, thực thi khắp nơi”. Chương trình phần mềm viết bằng Java có thể chạy trên mọi nền tảng (platform) khác nhau thông qua một môi trường thực thi với điều kiện có môi trường thực thi thích hợp hỗ trợ nền tảng đó. Môi trường thực thi của Java hiện hỗ trợ Sun Solaris, Linux, Mac OS, Windows. Ngoài ra, một số công ty, tổ chức cũng như cá nhân khác nhau cũng phát triển môi trường thực thi Java cho những hệ điều hành khác như BEA, IBM, HP... . Trong đó đáng nói nhất là IBM Java Platform hỗ trợ Windows, Linux, 2.1.2. Ưu điểm , nhược điểm của Java  Ưu điểm: - Hướng đối tượng: Java là một ngôn ngữ lập trình hướng đối tượng, không có nhiều hằng số độc lập, các biến hoặc các hàm: mỗi một thứ được mô tả có thể chỉ được truy nhập thông qua các lớp và các đối tượng - Mạnh mẽ: Java là một ngôn ngữ mạnh vì nó yêu cầu tất cả dữ liệu phải được khai báo một cách tường minh. Nó kiểm tra mã nguồn tại thời điểm của sự biên dịch và sự thông dịch, và loại ra các lỗi của chương trình - Độc lập nền: là khả năng của một chương trình có thể chạy trên bất kỳ máy tính nào mà không cần quan tâm đến nền bên dưới - Bảo mật: Java cung cấp môi trường bảo mật cho các chương trình thực thi và cung cấp một vài lớp điều khiển bảo mật Nguyễn Viết Khánh – Công nghệ phần mềm - K48 9 Báo cáo đồ án tốt nghiệp 2011 - Phân tán: Java được sử dụng để phát triển các ứng dụng mà có khả năng linh hoạt qua nhiều nền khác nhau, các hệ điều hành, và các giao diện đồ họa người dùng. Nó hỗ trợ các ứng dụng mạng - Đa luồng: Java cung cấp sự hỗ trợ cho đa luồng để thực thi nhiều tác vụ đồng thời  Nhược điểm: - Do Java biên dịch mã nguồn thành bytecode, bytecode sau đó được môi trường thực thi chạy nền Java thường chạy chậm hơn những ngôn ngữ lập trình thông dịch khác như Python, Perl, PHP - Gặp khó khăn trong việc debug chương trình - Các tool hỗ trợ trong java không mạnh và đơn giản. Do java là phần mềm mã nguồn mở bởi vậy việc yêu cầu xây dựng một tool hỗ trợ chuyển nghiệp, đầu tư quy mô trở lên khó khăn 2.1.3. Những hỗ trợ của Java Java được xây dựng chủ yếu dựa trên bộ công cụ phát triển ( Java Development Kit - JDK) như là bộ thư viện chuẩn trong đó chứa trình biên dịch, trình thông dịch, trình đóng gói, tài liệu,…Đây chính là nền tảng cho việc phát triển các ứng dụng Java. Hiện nay, cộng đồng Java trên thế giới mà đi đầu là hãng Sun Microsystems đã xây dựng nhiều nhánh mới cho Java như: JavaMail (thư điện tử), Java TAPI (viễn thông), Java3D (đồ họa 3 chiều), J2ME (ứng dụng cho thiết bị di động) Hiện nay Java có các phiên bản hỗ trợ sau: - J2SETM (Java 2 Platform, Standart Edition): Phiên bản chuẩn gồm bộ công cụ thông dụng dùng để chạy trên các máy PC hoặc các mạng máy tính nhỏ. - J2EETM (Java 2 Platform, Enterprise Edition): Phiên bản dành cho các máy chủ với bộ nhớ lớn. Bao gồm các kiến trúc nâng cao như Web, EJB, Transaction,… dùng để xây dựng các ứng dụng có quy mô lớn - J2METM (Java 2 Platform, Micro Edition): Bao gồm môi trường và thư viện Java dùng để phát triển các ứng dụng trên các thiết bị có bộ nhớ nhỏ như điện thoại di động, PDA, các đồ gia dụng... 2.1.4. Công nghệ Java trong lập trình điện thoại di động (J2ME) Nguyễn Viết Khánh – Công nghệ phần mềm - K48 10 Báo cáo đồ án tốt nghiệp 2011 J2ME được phát triển từ kiến trúc JavaCard, EmbededJava và PersonalJava của phiên bản Java 1.1 . Đến dự ra đời của phiên bản Java 2 thì Sun quyết định thay thế PersonalJava bằng một phiên bản mới có tên Java 2 Micro Edition, viết tắt là J2ME. J2ME được sử dụng cho các thiết bị nhỏ gọn với dung lượng bộ nhớ bé và khả năng xử lý thấp. Mục tiêu của Java là cho phép người lập trình viết các ứng dụng độc lập với thiết bị di động, không cần quan tâm đến phần cứng thật sự. Để làm được như thế, J2ME được xây dựng bằng các tầng khác nhau để che giấu đi việc tương tác trực tiếp với phần cứng của thiết bị. Các tầng cảu J2ME được xây dựng trên CLDC (Connected Limited Device Configuration): Tầng dưới cùng là tầng Phần cứng thiết bị - đây là tầng vật lý bao gồm phần cứng của thiết bị di động. Các tầng bên trên tầng Phần cứng thiết bị là các tầng trừu tượng, chúng cung cấp cho lập trình viên nhiều giao diện lập trình thân thiện và dễ dàng hơn mà không cần quan tâm đến phần cứng. Nói các khác chúng đóng vai trò trung gian giúp cho lập trình viên tương tác được với phần cứng mà không cần quan tâm đến các chi tiết thực sự của phần cứng của thiết bị Tầng Phần cứng thiết bị (Device Hardware Layer): đây là thiết bị di động thật sự với bộ nhớ và tốc độ xử lý cụ thể. Các thiết bị di động khác nhau có thể có bộ vi xử lý và các tập lệnh rất khác nhau. Mục tiêu của J2ME là cung cấp cho lập trình viên khả năng giao tiếp giống nhau với tất cả các loại thiết bị di động khác nhau Tầng máy ảo Java (Java Virtual Machine Layer): đây là tầng đóng vai trò thông ngôn giữa chương trình và thiết bị. Nó sẽ thông dịch các mã bytecode (mã có được sau khi biên dịch mã nguồn chương trình) thành mã máy của các thiết bị di động. Tầng này bao gồm KVM (K Virtual Machine) là bộ biên dịch mã bytecode thành mã máy. Nó cung Nguyễn Viết Khánh – Công nghệ phần mềm - K48 11 Báo cáo đồ án tốt nghiệp 2011 cấp một sự chuẩn hóa cho các thiết bị di động để ứng dụng J2ME sau khi biên dịch có thể chạy được trên bất kỳ thiết bị di động nào hỗ trợ KVM Tầng cấu hình (Configuration Layer): Tầng này cung cấp các hàm API cơ bản là nhân của J2ME. Lập trình viên có thể sử dụng các lớp và các phương thức của các API này tuy nhiên nó không thực sự phong phú bằng tập API của tầng hiện trạng Tầng hiện trạng (Profile Layer): Tầng này cung cấp các hàm API hữu dụng hơn cho việc lập trình. Mục đích của tầng này xây dựng nên lớp cấu hình và cung cấp nhiều thư viện ứng dụng hơn 2.1.5. Lý do sử dụng Java để xây dựng đồ án Qua những ưu điểm của Java và những sự hỗ trợ của Java đã nêu ở trên, nhận thấy đây là ngôn ngữ thích hợp để xây dựng đồ án với những lý do sau đây: - Ngôn ngữ được sử dụng để xây dựng ứng dụng trên cả hai phía Server và di động, đáp ứng đúng yêu cầu của bài toán đề ra - Ngôn ngữ hướng đối tượng, giúp cho việc xây dựng các đối tượng cùa bài toán trở nên đơn giản, dễ dàng hơn - Giúp cho việc xây dựng hệ thống một lần, có thể chạy trên nhiều platform khác nhau - Ngôn ngữ hỗ trợ ứng dụng mạng, giúp cho việc truyền dữ liệu giữa di động và server qua mạng - Hỗ trợ đa luồng giúp cho hệ thống có thể xử lý nhiều yêu cầu trong tại một thời điểm 2.2. Thuật toán phát hiện chuyển động 2.2.1. Mô tả thuật toán Thuật toán phát hiện chuyển động là quá trình so sánh liên tục để tìm ra sự khác biệt giữa các khung hình video liên tiếp lấy từ địa chỉ ip của camera Thuật toán dựa trên cơ sở là so sánh khung hình video hiện tại với khung hình video trước nó Sự so sánh được thực hiện trên từng vùng pixel của hai khung hình đó. Nếu vùng pixel của khung hình đầu thay đổi so với vùng pixel khung hình sau thì khoanh vùng pixel đó là vùng pixel đã thay đổi. Sau khi so sánh ta thu được một danh sách các vùng pixel đã thay đổi. Ta tiến hành liên kết các vùng pixel đã thay đổi đó theo quy tắc: nếu Nguyễn Viết Khánh – Công nghệ phần mềm - K48 12 Báo cáo đồ án tốt nghiệp 2011 các vùng pixel thay đổi kề nhau thì hợp lại thành vùng có kích thước lớn nhất, không kề với các vùng thay đổi pixel khác. Sau khi liên kết ta được danh sách các vùng pixel thay đổi không kề nhau. Cuối cùng ta xác định vùng pixel thay đổi có kích thước lớn nhất. Nếu vùng pixel thay đổi có kích thước lớn nhất và lớn hơn một ngưỡng nhất định thì vùng thay đổi đó thể hiện có sự chuyển động 2.2.2. Biểu diễn thuật toán Xét trường hợp cụ thể là hai khung hình 1 (Img1) và khung hình 2 (Img2) Thuật toán: Bước 1: So sánh sự khác nhau giữa hai pixel của hai ảnh Img1 và Img2 Một pixel trong ảnh được biểu diễn bằng ba giá trị red, green, blue trong khoảng từ 0 đến 255: Pixel (int Red, int Green, int Blue) Hình 1: Image 1 với pixel tại tọa độ (x, y) được biểu diễn là Pixel1( Red1, Green1, Blue1) Hình 2: Image 2 với pixel tại tọa độ (x, y) được biểu diễn là Pixel2( Red2, Green2, Blue2) Xác định Delta giữa hai Pixel qua công thức: Nguyễn Viết Khánh – Công nghệ phần mềm - K48 13 Báo cáo đồ án tốt nghiệp 2011 DeltaRed = | Red 2 – Red 1| DeltaGreen = | Green 2 – Green 1| DeltaBlue = | Blue 2 - Blue 1| Delta = Max (DeltaRed, DeltaGreen, DeltaBlue) Nếu Delta > ngưỡng xác định (25) thì pixel 1 được gọi là thay đổi so với pixel 2 Bước 2: Chia ảnh thành các ô vuông có kích thước là 8 x 8 Hình 3: Hình thể hiện chia ảnh thành các ô có kích thước 8 x 8 Đếm số pixel thay đổi trong các ô. Nếu số pixel thay đổi lớn hơn ngưỡng là 20% tổng số pixel trong một ô thì ô đó được gọi là thay đổi Hình 4: Thể hiện các ô có pixel thay đổi Nguyễn Viết Khánh – Công nghệ phần mềm - K48 14 Báo cáo đồ án tốt nghiệp 2011 Bước 3: Liên kết các ô có sự thay đổi thành ô lớn. Xác định vùng có kích thước lớn nhất. Nếu vùng này có kích thước lớn hơn ngưỡng là 32 x 32 thì thông báo có sự chuyển động Hình 5: Liên kết các ô thay đổi 2.2.3. Đánh giá thuật toán Thuật toán đã xác định được các vùng thay đổi giữa khung hình video trước và khung hình video sau Thuật toán đã liên kết được các vùng thay đổi đó để xác định được vùng thay đổi có kích thước lớn nhất. Qua vùng này, ta có thể xác định được là có sự chuyển động xảy ra hay không để báo hiệu cho người giám sát Thuật toán xử dụng các luồng xử lý khác nhau, giúp cho chương trình thực hiện được nhiều công việc cùng một lúc trong cùng một thời điểm. Có các luồng xử lý dữ liệu, các luồng xử lý về server, các luồng xử lý về kết nối giữa client và server. Qua đó giúp yêu cầu ít tài nguyên hệ thống hơn 2.2.4. So sánh với các thuật toán khác  Các thuật toán về phát hiện chuyển động khác: - Thuật toán 1: Thuật toán motion detectin của Andrew Kirillov Bước 1: Tìm các vùng khác biệt giữa hai khung hình. Sau đó ta lấy được một ảnh với những điểm ảnh màu trắng tại những nơi mà khung hình hiện tại khác với khung hình trước nó Nguyễn Viết Khánh – Công nghệ phần mềm - K48 15 Báo cáo đồ án tốt nghiệp 2011 Bước 2: Đếm các điểm ảnh khác biệt, nếu số lượng của nó lớn hơn một mức độ báo động xác định trước thì báo hiệu là có sự chuyển động Nhược điểm của thuật toán là nếu đối tượng chuyển động liên tục thì chỉ thấy được vùng thay đổi nhỏ giữa các khung hình. Nhưng nếu đối tượng chuyển động chậm thì thuật toán không xác định được kết quả đúng đắn - Thuật toán 2: Thuật toán motion detectin của Andrew Kirillov Lúc bắt đầu, ta lấy khung hình đầu tiên của chuỗi video, đặt là khung hình nền. Ta luôn so sánh khung hình hiện tại với khung hình nền. Sau đó ta chuyển khung hình hiện tại với khung hình nền, thay đổi màu sắc điểm ảnh của khung hình nền. Kết quả là ta xác định được khung hình chuyển động của vật  So sánh với các thuật toán: - Giống nhau: Đều dựa trên cơ sở là so sánh khung hình video hiện tại với khung hình video trước nó. - Ưu điểm: Thuật toán xác định rõ được các vùng chuyển động và chỉ định được vùng có sự chuyển động lớn nhất Nguyễn Viết Khánh – Công nghệ phần mềm - K48 16 Báo cáo đồ án tốt nghiệp 2011 Thuật toán đã chia khung hình xử lý thành các vùng và các ô, và xử lý trên từng vùng và từng ô này. Với việc đó giúp cho đánh giá chính xác hình ảnh hơn 2.3. Thuật toán nâng cao (áp dụng cho vùng phát hiện) Mục đích: áp dụng để phát hiện chuyển động trong một vùng chỉ định Cách làm: - Tạo một mặt nạ theo định dạng sau Hình 6: Xây dựng mặt nạ o Vùng màu đen là vùng không xét sự chuyển động o Vùng màu trắng là vùng xét sự chuyển động - Với các ảnh thu được ta sẽ áp dụng mặt nạ vào. Ta sẽ thu được các ảnh với vùng bị bôi đen tương ứng với vùng đen của mặt nạ - Như vậy ta chỉ xét vùng có sự chuyển động là vùng không bị bôi đen. Ta chỉ quan tâm sự chuyển động trong vùng này Nguyễn Viết Khánh – Công nghệ phần mềm - K48 17 Báo cáo đồ án tốt nghiệp 2011 Hình 7: Chọn vùng chỉ định Hình 8: Áp dụng mặt nạ cho vùng chỉ định Chương 3: Thiết kế chương trình 3.1. Các module của chương trình Nguyễn Viết Khánh – Công nghệ phần mềm - K48 18 Báo cáo đồ án tốt nghiệp 2011 Chương trình được tổ chức thành các module như sau: iM c o o d n u n l e e c t  iconnect Module này dùng đề kết nối cơ sở dữ liệu và thao tác với cơ sở dữ liệu - IConnect: dùng để kết nối với cơ sở dữ liệu - IUser: thao tác với cơ sở dữ liệu - IUserBusinessRule: điều khiển việc thao tác với cơ sở dữ liệu  idata Module này chứa các lớp cơ sở, sử dụng để cài đặt thuật toán - ICell: dùng để xây dựng lớp cell - CompareImage: dùng để xây dựng lớp CompareImage - IData: dùng để xây dựng lớp chứa dữ liệu chung cho chương trình - IResize: dùng để xây dựng lớp thay đổi kích thước ảnh - ImagePanel: dùng để xây dựng lớp ImagePanel - MyImage: dùng để xây dựng lớp MyImage - IPixel: dùng để xây dựng lớp Pixel - IRectangular: dùng để xây dựng lớp Rectangular - IUtility: chứa các phương thức tĩnh  iprogram Module chứa các lớp dùng để xử lý chương trình - IServer: lớp Server của chương trình Nguyễn Viết Khánh – Công nghệ phần mềm - K48 19 Báo cáo đồ án tốt nghiệp - iServerThread: lớp xử lý kết nối Server - Client - IThread: lớp hoạt động của chương trình 2011  iswing Module chứa giao diện của chương trình - DlgAbout: xây dựng dialog giới thiệu - DlgGuide: xây dựng dialog hướng dẫn sử dụng - IDialog: xây dựng dialog hiển thị ảnh chụp từ màn hình - IFrame: xây dựng frame hiển thị chính của chương trình - ILogin: xây dựng frame đăng nhập hệ thống - IMenu: xây dựng menu cho chương trình - IPanel: xây dựng panel chính cho frame - IUserForm: xây dựng panel user  iwriter: Module chứa lớp sử dụng trong việc đọc ghi file - IWriteFile: dùng để đọc ghi file ảnh ghi trong file có định dạng .txt  iplay_media Module chứa các lớp sử dụng trong việc chạy file nhạc và ảnh - IMovie: dùng để điều khiển cách chạy file ảnh - IPlayAudio: dùng để chạy file audio - IPlayMovie: dùng để chạy file ảnh, hiển thị trên màn hình 3.2. Cài đặt chương trình 3.2.1. Cài đặt thuật toán phát hiện chuyển động Thuật toán phát hiện chuyển động dựa trên nguyên tắc cở bản là so sánh khung hình video hiện tại với khung hình video trước nó. Ta xét trường hợp cụ thể sau:  Input: Hai khung hình video Img1 và Img2 có cùng kích thước chiều rộng và chiều cao  Output: Danh sách các hình chữ nhật thể hiện vùng thay đổi giữa Img1 và Img2 Các bước thực hiện: Nguyễn Viết Khánh – Công nghệ phần mềm - K48 20
- Xem thêm -

Tài liệu liên quan

Tài liệu vừa đăng