Upload
dizaii031
View
2.186
Download
0
Embed Size (px)
Citation preview
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 1/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 1
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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 2/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 2
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 ........................................................................................................................ 515.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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 3/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 3
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ộtcá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ống24/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.
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 4/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 4
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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 5/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 5
- 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ó
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 6/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 6
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ườ igiám sát theo dõi từ xa qua mạng
Chức năng Hệ thống hiện có
Ghi hình Có
Giám sát tại chỗ Có
Giám sát từ xa Có
Báo hiệu qua loa Không
Tự động phát hiện chuyển động Không
Tự động cảnh báo Không
Cảnh báo từ xa Không
Chụp hình chuyển độ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ư:
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 7/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 7
- 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
- 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 để choclient 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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 8/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 8
- 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
- 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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 9/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 9
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
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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 10/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 10
- 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
- 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 k hó 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ựngnhiề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...
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 11/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 11
2.1.4. Công nghệ Java trong lập trình điện thoại di động (J2ME)
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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 12/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 12
bao gồm KVM (K Virtual Machine) là bộ biên dịch mã bytecode thành mã máy. Nó
cung 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 APInà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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 13/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 13
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
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)
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 14/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 14
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:
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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 15/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 15
Đế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
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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 16/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 16
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ó
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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 17/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 17
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
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ừngvù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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 18/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 18
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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 19/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 19
Hình 7: Chọn vùng chỉ định
Hình 8: Áp d ụng mặt nạ cho vùng chỉ định
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 20/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 20
Chương 3: Thiết kế chương trình
3.1. Các module của chương trình
Chương trình đượ c tổ chức thành các module như sau:
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
Module
iconnect idata iprogram iswing iwriter iplay_media
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 21/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 21
- IServer: lớ p Server của chương trình
- iServerThread: lớ p xử lý k ết nối Server - Client
- IThread: lớ p hoạt động của chương trình
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
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 22/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 22
Các bướ c thực hiện:
Bướ c 1: Chia ảnh ra thành các ô có kích thướ c là 8 x 8 pixel theo các trục thẳng
và trục ngang thì:
- Số ô theo trục ngang là: kí ch thướ c chiều ngang của ảnh / kí ch thướ c chiều ngang
của ô
numCellX = image.getWidth() / cell.getWidth()
- Số ô theo trục dọc là: kích thướ c chiều dọc của ảnh / kích thướ c chiều dọc của ô
numCellY = image.getHeight() / cell.getHeight()
Như vậy ta đượ c mảng 2 chiều các ô là cell[numCellY][numCellX]
Bướ c 2: Cho vòng lặp chạy từng ô trong mảng cell [numCellY][numCellX]
- Vì mỗi ô đượ c tạo bở i các Pixel nên mỗi ô có kích thướ c 8 x 8 ta sẽ lấy đượ cmảng 2 chiều pixel là pixel[8][8]
- Cho vòng lặp chạy từng pixel trong mảng 2 chiều pixel[8][8]
So sánh sự thay đổ i giữ a các pixel giữa 2 ảnh Img1 và Img2, đếm số pixel
thay đổi đó
Nếu số pixel thay đổi trong 1 ô lớn hơn ngưỡ ng nhất định là 20% thì ô đó
đánh dấu là thay đổi
Bướ c 3: Liên k ết các ô thay đổi đó thành các vùng thay đổi. Xác định vùng thay
đổi có kích thướ c lớ n nhất, vùng đó thể hiện sự chuyển động. Biểu diễn vùng thay đổi
đó bằng hình chữ nhật
So sánh sự thay đổ i giữ a các pixel:
- Để so sánh giữa hai pixel Pixel1 (red1, green1, blue1), Pixel2 (red2, green2,
blue2) kiểm tra sự thay đổi:
deltaRed = | red2 – red1 |
deltaBlue = | blue 2 – blue1 |
deltaGreen = | green2 – green1 |
delta = max (deltaRed, deltaBlue, deltaGreen)
nếu delta > ngưỡng (25) thì Pixel1 đượ c gọi là thay đổi so vớ i Pixel2
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 23/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 23
- Mã Giả:
Input: Hai Pixel p1(int red1, int green1, int blue1) và p2(int
red2, int green2, int blue2)
Ouput: delta giữa p1 và p2
procedure int getdelta (Pixel p1, Pixel p2)
deltaRed = | p1.Red – p2.Red |
deltaGreen = | p1.Green – p2.Green |
deltaBlue = | p1.Blue – p2.Blue |
max = deltaRed > deltaGreen ? deltaRed : deltaGreen
max = max > deltaBlue ? max : deltaBlue
return max
end procedure
Để liên k ế t các ô có sự thay đổ i thành ô lớ n ta tiến hành theo các bướ c sau:
- Bướ c 1: Khở i tạo một danh sách hình chữ nhật: listRec
- Bướ c 2: Cho vòng lặp chạy qua các ô trong mảng hai chiều chứa các ô, để tìmcác ô thay đổi
Ứ ng mỗi ô thay đổi, kiểm tra xem ô có liên quan đến hình chữ nhật nào
không, nếu có thì mở rộng ô vớ i hình chữ nhật, không thì tạo một hình chữ
nhật mới có kích thước là ô thay đổi đó, thêm vào danh sách hình chữ nhật
Sau khi k ết thúc vòng lặp, ta đượ c 1 danh sách các hình chữ nhật thể hiện
sự thay đổi
- Bướ c 3: Liên k ết các hình chữ nhật trong danh sách
Cho vòng lặp chạy qua các hình chữ nhật trong danh sách các hình chữ
nhật, kiểm tra xem sự liên quan giữa các hình chữ nhật không. Nếu hai
hình chữ nhật liên quan đến nhau, gộp hình chữ nhật thứ nhất vớ i hình chữ
nhật thứ hai, bỏ hình chữ nhật thứ hai đi trong danh sách.
Tiếp tục thực hiện cho đến khi hết danh sách hình chữ nhật, ta sẽ thu đượ c
một danh sách các hình chữ nhật riêng biệt, không liên quan đến nhau.
Liên quan một điể m vớ i hình chữ nhật:
Một điểm có tọa độ là (x, y) đượ c gọi là liên quan đến hình chữ nhật (x1, y1, x2,
y2) khi tọa độ điểm đó thỏa mãn công thức:
o { –
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 24/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 24
Hình 9: Liên quan của pixel vớ i hình chữ nhật
- Mã giả:
Input: Tọa độ (x, y) của điểm xét, Hình chữ nhật rec(X1, Y1, X2,
Y2)
Output: trả về giá trị boolean
//Xét liên quan giữa điểm và hình chữ nhật
procedure boolean relatedif x > X1 - 1 && x < X2 + 1 && y > Y1 - 1 && y < Y2 + 1
return true
else
return false
end if
end procedure
Liên quan của hai hình chữ nhật
Hai hình chữ nhật Rec1(x1, y1, x2, y2) và Rec2(X1, Y1, X2, Y2) đượ c gọi là liên
quan đến nhau khi:
Tọa độ điểm (X1, Y1) của Rec2 liên quan đến hình chữ nhật Rec1 hoặc
Tọa độ điểm (X1, Y2) của Rec2 liên quan đến hình chữ nhật Rec1 hoặc
Tọa độ điểm (X2, Y2) của Rec2 liên quan đến hình chữ nhật Rec1 hoặc
Tọa độ điểm (X2, Y1) của Rec2 liên quan đến hình chữ nhật Rec1
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 25/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 25
Hình 10: Sự liên quan của hai hình chữ nhật
- Mã Giả
Input: Hai hình chữ nhật Rec1(x1, y1, x2, y2) và Rec2(X1, Y1, X2,
Y2)
Output: Trả về giá trị True/ False
//xét sự liên quan giữ 2 hình chữ nhật
procedure boolean relatedOfRectangular(Rectangular r1, Rectangular
r2)
if (X1, Y1) related Rec1 || (X1, Y2) related Rec1 || (X2,
Y2) related related Rec1 || (X2, Y1) related Rec1
eturn True
else
return False
End if
end procedure
Liên quan ô vớ i hình chữ nhật
Một ô (x, y, width, height) đượ c gọi là liên quan đến hình chữ nhật Rec(X1, Y1,
X2, Y2) khi:
Tọa độ điểm (x1, y1) của ô liên quan đến hình chữ nhật Rec1 hoặc
Tọa độ đIểm (x2, y2) của ô liên quan đến hình chữ nhật Rec1 hoặc
Tọa độ điểm (x1, y2) của ô liên quan đến hình chữ nhật Rec1 hoặc
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 26/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 26
Tọa độ điểm (x2, y1) của ô liên quan đến hình chữ nhật Rec1
Hình 11: Liên quan của một ô vớ i một hình chữ nhật
Input: Ô cell(x, y, width, height) và hình chữ nhật Rec(x1, y1,
x2, y2)
Output: Trả về giá trị True/ False
// Xét sự liên quan giữa ô và hình chữ nhật
procedure boolean relatedCellWithRectangular(Cell cell,
Rectangular rec)
if (X1, Y1) related Rec || (X2, Y2) related Rec || (X1, Y2)
related Rec1 || (X2, Y1) related Rec1
return True
else
return False
end if
end procedure
M ở r ộng hình chữ nhật vớ i một điể m:
Một hình chữ nhật Rec( x1, y1, x2, y2) đượ c gọi là mở rộng vớ i một điểm pixel
có tọa độ là (x, y) thì hình chữ nhật Rec sau khi mở rộng đượ c biểu diễn :
o Rec (min(x, x1), min( y, y1), max(x, x2), max(y, y2) )
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 27/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 27
Hình 12: Mở rộng hình chữ nhật vớ i một pixel
Input: Điểm Pixel (x, y) và hình chữ nhật Rec(x1, y1, x2, y2)
Ouput: Hình chữ nhật được tạo bởi Rec mở rộng với điểm
//Mở rộng hình chữ nhật với một điểm
procedure exchange ( int x, int y, Rectangular rec )
X1 = min(x, x1)Y1 = min(y, y1)
X2 = max(x, x2)
Y2 = max(y, y2)
end procedure
M ở r ộng hình chữ nhật vớ i một ô:
Một hình chữ nhật Rec(x1, y1, x2, y2) đượ c gọi là mở rộng vớ i ô Cell(x, y,
width, height) thì hình chữ nhật Rec sau khi mở rộng đượ c biểu diễn là:
Hình chữ nhật Rec mở rộng vớ i điểm (x1, y1) của ô
Hình chữ nhật Rec mở rộng vớ i điểm (x2, y2) của ô
Hình chữ nhật Rec mở rộng vớ i điểm (x1, y2) của ô
Hình chữ nhật Rec mở rộng vớ i điểm (x2, y1) của ô
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 28/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 28
Hình 13: M ở r ộng hình chữ nhật vớ i một ô
- Mã Giả:
Input: Hình chữ nhật Rec(x1, y1, x2, y2) và Cell(X1, Y1, X2, Y2)
Output: Hình chữ nhật Rec mới được tạo bởi Rec mở rộng với Cell
//Mở rộng hình chữ nhật với một ô
procedure relatedRectangularWithCell(Cell cell, Rectangular rec)
rec exchange (X1, Y1)
rec exchange (X1, Y2)
rec exchange (X2, Y1)
rec exchange (X2, Y2)
end procedure
M ở r ộng hai hình chữ nhật:
Hình chữ nhật Rec1(x1, y1, x2, y2) gọi là mở rộng vớ i hình chữ nhật Rec2(X1,
Y1, X2, Y2) thì tọa độ hình chữ nhật Rec1 sau khi mở rộng là:
Hình chữ nhật Rec1 mở rộng với điểm (X1, Y1) của Rec2
Hình chữ nhật Rec1 mở rộng với điểm (X1, Y2) của Rec2
Hình chữ nhật Rec1 mở rộng với điểm (X2, Y1) của Rec2
Hình chữ nhật Rec1 mở rộng với điểm (X2, Y2) của Rec2
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 29/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 29
Hình 14: M ở r ộng hai hình chữ nhật liên quan đế n nhau
- Mã Giả
Input: Hai hình chữ nhật Rec1 (x1, y1, x2, y2) và Rec2(X1, Y1, X2,
Y2)
Output: Hình chữ nhật Rec1 mới được mở rộng bởi Rec1 và Rec2
//Mở rộng hai hình chữ nhật
procedure exchangeRectangular( Rectangular Rec1, Rectangular Rec2)
x1 = min (x1, X1)
y1 = min (y1, Y1)
x2 = max (x2, X2)
y2 = max (y2, Y2)
end procedure
Để xác định vùng thay đổi có kich thướ c lớ n nhất, ta làm như sau
- Bướ c 1: Sau khi thu đượ c danh sách hình chữ nhật không liên quan đến nhau,
khở i tạo hình chữ nhật có kích thướ c lớ n nhất ( rectMax) là hình chữ nhật đầu tiên trong
danh sách
- Bướ c 2: Cho vòng lặp chạy từng các hình chữ nhật trong danh sách, nếu hình chữ
nhật nào có kích thướ c lớn hơn rectMax thì đặt hình chữ nhật đó là hình chữ nhật có
kích thướ c lớ n nhất
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 30/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 30
- Bướ c 3: Khi k ết thúc vòng lặp, ta thu đượ c hình chữ nhật có kích thướ c lớ n nhất.
Nếu hình chữ nhật này lớn hơn ngưỡ ng chỉ định là 32 x 32 thì hình chữ nhật này thể
hiện vùng chuyển động
Mã Giả:
Input : danh sách listRectangular
Ouput: Rectangular có diện tích lớn nhất
procedure maxRectangular(ArrayList listRectangular)
max = listRectangular.get(0)
for number i from 1 to listRectangular.size()
if max.getArea() < listRectangular.get(i).getArea()
max = listRectangular.get(i);
end if
end for
for each Rectangular r in listRectangular
if r.getArea() = max.getArea()
if r.getArea() > 32 * 32
r.setIsMaxArea(true)
end if
end if
end for
end procedure
3.2.2. Mô hình các luồng xử lý
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 31/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 31
Hình 15: Mô hình hoạt động các luồng xử lý của chương trình
Luồng IThread để xử lý dữ liệu và kiểm tra có sự chuyển động xảy ra hay không,
nếu có thì thực hiện chạy đoạn nhạc, ghi hình. Luồng Server để lắng nghe k ết nối từ
Mobile gửi đến, khi có yêu cầu k ết nối, luồng Server sẽ tạo luồng ServerThread để xử lý
các yêu cầu từ Client Mobile. Luồng ServerThread để xử lý việc trao đổi dữ liệu vớ i
Mobile. Luồng Mobile trên di động thực hiện nhận dữ liệu, hiển thị trên màn hình di
động
Các luồng IThread, Server, ServerThread đều dùng chung dữ liệu là đối tượ ng
IData. Lúc bắt đầu chạy chương trình thì các luồng IThread, Server đượ c khở i tạo dữ
liệu là iData
Trướ c hết luồng IThread chạy đầu tiên. Sau khi luồng IThread xử lý xong dữ liệu,
IThread gán dữ liệu cho IData rồi tạm dừng hoạt động, đặt luồng xử lý tiếp theo là luồng
Server, chuyển sang trạng thái đợ i. Luồng Server từ trạng thái chờ để chạy chuyển sang
trạng thái chạy. Luồng Server lắng nghe xem có k ết nối từ di động gửi đến không, nếu
không thì nó tạm dừng hoạt động, đặt luồng xử lý tiếp theo là luồng IThread, chuyển
sang trạng thái đợ i. Nếu có yêu cầu k ết nối gửi đến, luồng Server khở i tạo luồng
IServerThread vớ i dữ liệu là iData. Sau đó luồng IServer chuyển tạm dừng hoạt động,
đặt luồng xử lý tiếp theo là IServerThread, chuyển sang trạng thái đợ i. Khi luồng
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 32/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 32
IServerThread chạy, luồng này sẽ thực hiện trao đổi dữ liệu với di động, sau đó luồng
này đặt luồng xử lý tiếp theo là IThread, chuyển sang trạng thái đợ i. Luồng IThread bắt
đầu chạp tiếp và vòng lặp đượ c thực hiện tiếp tục như trên
3.2.3. Cài đặt luồng xử lý dữ liệu
Hình 16: Hình mô t ả luồng xử lý d ữ liệu
Mã giả:
// override run()
procedure run()
while (true) // thực hiện lặp lại quá trình
// kiểm tra có tín hiệu dừng chương trình không
if isStop = true
break // nếu có thì thoát khỏi vòng lặp
end if
bi = getImageFromURL() // lấy ảnh từ địa chỉ URL
//kiểm tra có tín hiệu chạy motion detetction không, nếu có
thì thực hiện
if isStarMotionDetection = true
compare2Image() // so sánh ảnh hiện tại và ảnh
//trước nó
// nếu danh sách chứa ảnh so sánh có kích thước
//lớn hơn 1 thì xóa phần tử ở vị trí đầu danh
//sách đi
if list.size != 1
list.remove(0)
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 33/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 33
end if
// kiểm tra có tín hiệu lấy ảnh không, nếu có
thì thực hiện vẽ ảnh trên màn hình
if isGetImage = true
repaint()
end if
// kiểm tra nếu có tín hiệu chạy motion
detection
if isStartMotionDetection = true
// nếu có sự chuyển động xảy ra
if isMotion = true
saveImage( bi ); // lưu ảnh
// kiểm tra đã playSound chưa, nếu chưa
thì //playSound, ngược lại thì không
if isDo = false
playSound()
isDo = true
end if
else // khi đã hết chuyển động xảy ra, tắt
playSound
if(isDo = true)
stopPlaySound()
isDo = false
end if
end if
else // không có tín hiệu chạy motion detection, dừng
mọi hoạt động lại
if( isDo = true){
stopPlaySound()
isDo = false;
end if
end if
end while
end procedure
3.2.4. Cài đặt luồng xử lý Server
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 34/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 34
Hình 17: Hình mô t ả luồng Server hoạt động
Luồng Server lắng nghe tại một cổng nhất định. Luồng Client gửi yêu cầu k ết nối
đến Server để k ết nối vớ i Server. Khi Server chấp nhận yêu cầu k ết nối từ phía Client sẽ
tạo ra một luồng io để xử lý cho việc trao đổi dữ liệu. Khi đó , Client cũng tạo ra một
luồng io. Hai luồng này sẽ thực hiện việc trao đổi dữ liệu giữa Server và Client.
Các bướ c thiết lập socket phía Server:
- Tạo một socket
- Liên k ết socket vơi một địa chỉ, địa chỉ này chứa cổng mà Server lắng nghe
- Lắng nghe k ết nối gửi đến
- Khi có k ết nối gửi đến thì chấp nhận k ết nối
- Tạo luồng ServerThread để xử lý trao đổi dữ liệu
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 35/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 35
Hình 18: Mô hình hoạt động của Server
Mã giả:
//Tạo ServerSocket lắng nghe tại cổng nhất định
procedure run()
while(true)//nếu chưa đến phiên luồng Server chạy thì cho luồng vào
trạng thái đợi
if isStop // kiểm tra có tín hiệu dừng không, nếu có thì
đóng chương //trình lại
break
end if
if isMotion) // kiểm tra có sự chuyển động không
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 36/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 36
addThread( ServerSocket.accecp()); // nếu có kết nối
từ di động, tạo luông IServerThread xử lý kết nối với di
động
end if
if isStartServer = false // nếu chưa tạo luồng
IServerThread thì cho luồng IThread chạy // luồng IThread chạy
else // ngược lại
//luồng IServerThread chạy
end if
end while
end procedure
3.2.5. Cài đặt luồng xử lý kết nối giữ a Server – Mobile
Các bướ c hoạt động
- Bướ c 1: Nhận các yêu cầu gửi từ phía Mobile và xử lý yêu cầu
o Nếu là yêu cầu nhận đăng nhập hệ thống, luồng IServerThread sẽ nhận dữ
liệu chứa tên tài khoản và mật khẩu. Kiểm tra nếu có tồn tại tài khoản và
mật khẩu trong cơ sở dữ liệu và gửi cho mobile k ết quả k ết nối thành công,
ngượ c lại, gửi k ết quả k ết nối không thành công
o Nếu là yêu cầu ngừng k ết nối, thì đóng luồng xử lý lại
o N
ếu là yêu c
ầu nh
ận d
ữli
ệu, lu
ồng s
ẽg
ửi m
ảng byte[] d
ữli
ệu cho mobile
khi có sự chuyển động, ngượ c lại luồng sẽ gửi báo hiệu cho mobile là
không có chuyển động
- Bướ c 2: Gửi k ết quả lại cho Client sau đó quay trở lại bướ c 1
Mã giả:
//mở kết nối với server
open()
// kiểm tra xem di động đăng nhập đúng chưa
if đăng nhập đúng //gửi chuỗi CONN báo hiệu đăng nhập đúng
else
// gửi chuỗi NOTCONN báo hiệu đăng nhập sai
//bắt đầu chạy luồng
end if
procedure run()
while( true )
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 37/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 37
// kiểm tra luồng có được cấp phép chạy không, nếu
không thì cho luồng vào trạng thái đợi
wait()
// nếu có tín hiệu đóng chương trình, gửi tín hiệu đóng
luồng cho mobile
dos.wirteLong(2)
// nếu không dừng chương trình if isStop = false
process() // xử lý các yêu càu từ phía mobile
setThread(1) // cho luông IThead sẽ chạy tiếp theo
notifyAll() đánh thức các luồng dậy
// ngược lại
else
// đóng luồng, quay trở lại luồng IThread
setThread(1)
notifyAll();
break;
end if
end while
stopRun() // đóng luồng lại
end procedure
3.2.6. Cài đặt luồng xử lý chạy trên điện thoại di động
Hình 19: Mô t ả luồng Mobile hoạt động
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 38/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 38
Di động gửi yêu cầu nhận dữ liệu đến Server. Server nhận yêu cầu từ phía Client.
Khi có sự chuyển động xảy ra, Server sẽ gửi dữ liệu đến cho Client. Client nhận dữ liệu
từ phía Server và hiển thị dữ liệu lên màn hình. Công việc tiếp tục đượ c lặp lại cho đến
khi Client hoặc Server gửi tín hiệu ngừng hoạt động chương trình
Hình 20: Mô t ả luồng Mobile yêu cầu ngắ t k ế t nố i
Khi Client muốn đóng chương trình, Client sẽ gửi yêu cầu thoát đến cho Server.
Khi Server nhận đượ c yêu cầu thoát từ phía Client, Server sẽ đóng luồng xử lý k ết nối
với Client. Đồng thời Client cũng đóng luồng xử lý vớ i Server.
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 39/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 39
Hình 21: Mô t ả luồng Mobile yêu cầu ngắ t k ế t nố i
Khi đóng chương trình, Server sẽ gửi yêu cầu thoát cho Client. Khi Client nhận
đượ c yêu cầu thì cả Server và Client đều đóng luống k ết nối giữa chúng lại
Các bướ c hoạt động
- Bướ c 1: Tạo một Socket để thiết lập k ết nối
- Bướ c 2: Lấy địa chỉ IP và cổng mà Server đang lắng nghe
- Bướ c 3: Thiết lập k ết nối vớ i Server
o Sau khi k ết nối đượ c thiết lập, Mobile gửi dữ liệu chứa tài khoản và mậtkhẩu cho Server để đăng nhập vào hệ thống và đợ i dữ liệu k ết quả gửi về từ Server
o Nếu đăng nhập đúng thì Server trả về dữ liệu thể hiện đăng nhập thành
công, chuyển sang bướ c 4
o Nếu đăng nhập sai thì Server trả về dữ liệu thể hiện đăng nhập không thành
công, lúc này mobile hiển thị lỗi đăng nhập tài khoản lên màn hình, quay trở lại bướ c 3
- Bướ c 4: Di động gửi yêu cầu nhận dữ liệu đến cho Server, sau đó đợi đến khi
nhận đượ c dữ liệu
- Bướ c 5: Nhận dữ liệu từ Server gửi về, xử lý dữ liệu
o Nếu là dữ liệu báo không có chuyển động thì chuyển sang bướ c 6
o Nếu là dữ liệu báo ngắt đến từ Server thì dừng luồng lại, đóng luồng
o Nếu là dữ liệu chứa ảnh, thì cho ảnh hiển thị lên màn hình
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 40/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 40
- Bướ c 6 : Lặp lại quá trình gửi yêu cầu – nhận dữ liệu, quay trở lại bướ c 4
Các ngoại lệ xảy ra:
- Khi di động yêu cầu đóng chương trình, thì luồng hoạt động sẽ gửi yêu cầu đóng
k ết nối đến cho Server. Sau đó luồng ngắt k ết nối vớ i Server và đóng luồng lại
Mã giả:
procedure void run()
open() // mở kết nối với Server
while( true )
if isStop = false // nếu không có tín hiệu dừng
chương trình
request(“GET”) // gửi yêu cầu dữ liệu đến Server
recevie() // nhận dữ liệu từ Server gửi về else
break // khi có tín hiệu đừng chương trình thì
thoát khỏi //vòng lặp
end if
end while
close() // đóng kết nối lại
end procedure
procedure request( String str )
dos.writeUTF( str )
dos.flush()
end procedure
procedure receive() {
len = dis.readLong()
if len = 1 // báo hiệu không có chuyển động
return
else if len = 2 { // báo hiệu đóng kết nối
isStop = true;
return
end if
end if
// xử lý dữ liệu nhận được tạo thành file Image
dis.readFully(bytes)
Image i = Image.createImage(byte)
// hiển thị ảnh lên màn hình
frmMain.append( i )
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 41/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 41
display.setCurrent (frm Main)
end procedure
3.2.7. Cài đặt lớ p ghi dữ liệu
Hai phương thức chính là:
- Ghi dữ liệu: Mỗi khi có sự chuyển động xảy ra thì lưu ảnh vào một file chỉ định.
Đầu tiên chuyển ảnh được lưu sang định dang byte[]. Lưu mảng byte[] này đượ c
lưu vào file. Khi ghi byte[] vào file, phải kiểm tra xem kích thướ c của file có lớ n
hơn 10MB không, nêu lớn hơn thì tạo ra một file mớ i, tiếp tục ghi ảnh chuyển
động vào file này
- Đọc dữ liệu: Đọc các byte[] ảnh trong một file, từ đó tạo ảnh, lưu các ảnh đượ c
tạo vào một danh sách ArrayList
Mã giả:
//Phương thức đọc file
procedure ArrayList<BufferedImage> read()
list = new ArrayList<BufferedImage>()
while(true)
length = dis.readLong()
bytes = new byte[length]
dis.read(bytes)
list.add(ImageIO.read(new
ByteArrayInputStream(bytes));
end while
end procedure
//Phương thức kiểm tra kích thước file
procedure boolean checkSizeOfFile(){
length = file.length()
if length > 10485760
return true
else
return falseend if
end procedure
//phương thức chuyển file sang mảng byte[]
procedure byte[] getBytesFromImage (BufferedImage img){
ByteArrayOutputStream arr = new ByteArrayOutputStream()
ImageIO.write(img, “JPG”, arr)
return arr;
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 42/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 42
end procedure
//phương thức ghi file
procedure write(BufferedImage img)
if(checkSizeOfFile())
bytes = getByteFromImage(image);
l = bytes.length;dos.write(l)
dos.write(bytes)
dos.flush()
else
dos.close()
file = new File(strFile);
dos = new DataOutputStream(new FileOuputStream(file));
end if
end procedure
3.2.8.
Cài đặt lớ p hiển thị dữ liệu
Sau khi đọc các ảnh được lưu trong file, ta đượ c danh sách các ảnh. Sử dụng đối
tượ ng Timer để cho hiển thị từng ảnh trong thờ i gian là 250 ms
Mã giả:
//override method paint()
procedure paint(Graphics g)
g.drawImage(img, 0, 0, null)
end procedure
i = 0; // khởi tạo i = 0 //override method actionPerformed của đối tượng Timer
procedure actionPerformed(ActionEvent e)
//list là danh sách ảnh đọc từ một file
if i < list.size()
img = list.get(i);
repaint();
i ++;
else
timer.stop()
i = 0;
end if
end procedure
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 43/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 43
Chương 4: Thử nghiệm và đánh giá
4.1. Giao diện chương trình
Chương trình gồm các giao diện như sau:
Hình 22: Giao diện đăng nhậ p của chương trinh
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 44/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 44
Hình 23: Giao diện chính của chương trinh
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 45/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 45
Hình 24: Giao diện quản lý tài khoản
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 46/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 46
Hình 25: Giao diện xem đoạn video ghi hình chuyển động
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 47/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 47
Hình 26: Giao diện trên điện thoại di động
4.2. Thử nghiệm chương trình
- Đăng nhập vào hệ thống thành công trên Server
- Điện thoại di động có thể k ết nối vớ i Server và nhận dữ liệu từ Server
- Mỗi khi có sự chuyển động xảy ra, đã phát hiện đượ c sự chuyển động, khoanh
vùng sự chuyển động đó
- Khi có chuyển động hệ thống đã cảnh báo qua loa và gửi hình ảnh cho di độngđang kết nối đến
Test Kết quả
Đăng nhập hệ thống, không nhập
tài khoản và mật khẩu
Hệ thống thông báo: “Nhập tài khoản và mật
khẩu vào!”
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 48/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 48
Admin đăng nhập hệ thống vớ i tài
khoản đăng nhập và password sai
Hệ thống thông báo : “ Tài khoản hoặc mật khẩu
sai, thử lại”
Admin đăng nhập hệ thống vớ i tài
khoản đăng nhập đúng
Cho phép đăng nhập vào hệ thống, hiển thị toàn
bộ giao diện chính của chương trình
User đăng nhập vào hệ thống Chỉ hiển thị giao diện giám sát và cảnh báo của
chương trình
Nhập địa chỉ IP của camera sai Hệ thống hiển thị thông báo: “Không lấy đượ c
dữ liệu từ camera, thử lại!”
Chạy chương trình Hệ thống hiển thị các hình ảnh thu từ camera
cho ngườ i giám sát theo dõi trên màn hình
Dừng chương trình Hệ thống ngừng hiển thị hình ảnh thu từ cameratrên màn hình
Chạy chức năng giám sát sau khi
chạy chương trình
Khi có chuyển động, hệ thống đã khoanh vùng
chuyển động và cảnh báo qua loa cho ngườ i
giám sát
Chụp hình chuyển động Hệ thống đã chụp đượ c hình chuyển động, lưu
lại vào một folder đã chỉ định và hiển thị trên
màn hình cho ngườ i giám sát theo dõi
Di động kết nối đến Server Di động đã kết nối vớ i Server tại địa chỉ IP chỉ
định
Khi chưa có chuyển động xảy ra,
Server báo hiệu cho di động
Server báo hiệu cho di động chưa có chuyển
động xảy ra, di động hiển thị màn hình chờ
Khi có chuyển động xảy ra,
Server gử i dữ liệu cho di động
Di động nhận đượ c dữ liệu và hiển thị trên màn
hình.
Di động ngắt kết nối Di động ngắt k ết nối vớ i Server và trở lại form
đăng nhập của chương trình
Xem các đoạn video ghi hình
chuyển động
Hệ thống đã ghi đượ c hình ảnh chuyển động và
xem trên hệ thống
Không lấy đượ c dữ liệu từ camera Hệ thống dừng hoạt động và hiển thị thông báo:
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 49/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 49
4.3. Đánh giá kết quả
4.3.1. Đánh giá về chức năng
Chương trình đã thực hiện được đúng các chức năng đề ra như:
- Khoang vùng chuyển động lớ n nhất: vùng chuyển động lớ n nhất đượ c khoanh
vùng có màu đỏ
- Bật tín hiệu cảnh báo qua loa: khi có chuyển động, phần mềm đã chạy đoạn nhạc
đượ c cài đặt để cảnh báo cho ngườ i giám sát
- Gửi hình chuyển động cho di động đang kết nối: di động đã nhận đượ c hình ảnh
gửi từ phía server, và hiển thị trên màn hình di động cho ngườ i giám sát theo dõi
- Xem lại các đoạn thu hình video chuyển động: phần mềm đã lưu các hình ảnh
chuyển động tại folder chỉ định, từ các hình ảnh này đượ c hiển thị trê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: phần mềm quản lý đượ c tài khoản đăng nhập cho hệ
thống, phân rõ quyền hạn cho ngườ i truy nhập vào hệ thống. Khi đăng nhập là
admin thì hiển thị đầy đủ chức năng chương trình, nếu đăng nhập là user thì chỉ
hiển thị chức năng chính của chương trình 4.3.2. Đánh giá tính logic
Chương trình hoạt động ổn định, đã xử lý các ngoại lệ tồn tại trong khi hoạt động
- Khi phía server ngắt k ết nối thì phía di động đã hiển thị thông báo server ngắt k ết
nối và ngừng hoạt động chương trình, quay trở lại giao diện đăng nhập chính
“ Không lấy đượ c dữ liệu từ camera, thử lại”
Thự c hiện thêm dữ liệu vào cơ sở
dữ liệu
Nếu dữ liệu trùng đã thông báo lỗi: “Tài khoản
đã tồn tại
Thự c hiện xóa dữ liệu trong cơ sở
dữ liệu
Đã xóa dữ liệu trong cơ sở dữ liệu
Thự c hiện cập nhật trong cơ sở
dữ liệu
Dữ liệu đã đượ c cập nhật trong cơ sở dữ liệu
Thự c hiện lưu dữ liệu lấy từ
camera vào trong hệ thống
Khi dữ liệu được lưu chiếm vùng nhớ lớn, đã tự
tạo một file mới để lưu tiếp dữ liệu
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 50/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 50
- Khi phía di động ngắt k ết nối, thì luồng xử lý k ết nối giữa server – di động ngừng
hoạt động, không gửi dữ liệu cho phía di động
- Khi di động nhận dữ liệu, di động xóa vùng dữ liệu cũ, cập nhập dữ liệu mớ i, xử
lý được trườ ng hợ p bộ nhớ di động bị tràn dữ liệu, gây ngừng hoạt động cho di
động
- Khi có chuyển động xảy ra thì chương trình mớ i cảnh báo cho ngườ i giám sát,
ngượ c lại thì không cảnh báo
- Sử dụng chương trình đơn giản, thuận tiện
4.3.3. Đánh giá hiệu năng
- Chương trình khi hoạt động chiếm khoảng 48 đến 60 MB bộ nhớ
- Tốc độ truyền dữ liệu giữa server và di động là khoảng 1giây/ 1 file dữ liệu
- Kích thướ c các dữ liệu đượ c ghi lại vào trong ổ cứng là khoảng 24Kb/ 1 file dữ
liệu
- Khả năng gửi nhận dữ liệu giữa server – di động đạt yêu cầu đề ra
- Khả năng xử lý dữ liệu, đánh giá phát hiện chuyển động tốt
- Khả năng lưu trữ dữ liệu lớ n
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 51/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 51
Chương 5: Kết luận và hướng phát triển
5.1. Kết luận
Sau một thờ i gian nghiên cứu, đồ án đã đượ c xây dựng hoàn thiện. Đồ án đã hoàn
thành đúng bốn chức năng cơ bản đề ra ban đầu như: giám sát, báo động, theo dõi từ xaqua di động, ghi hình chuyển động. Ngoài ra, đồ án còn đượ c phát triển thêm ba chức
năng gồm: chụp hình chuyển động, thay đổi giao diện và quản lý tài khoản.
Các chức năng của chương trình đã đáp ứng đúng yêu cầu, mục đích ban đầu đề
ra: như giúp giải phóng sức lao động cho ngườ i giám sát, nâng cao hiệu quả giám sát và
cảnh báo. Các chức năng của phần mềm hoạt động tốt và ổn định, đảm bảo tính logic và
hiệu năng sử dụng, có tính áp dụng thực tiễn cao trong đờ i sống
5.2.
Hướ ng phát triển5.2.1. Bổ xung tính năng, thuật toán nâng cao
5.2.1.1. Các tính năng
Bổ xung thêm các tính năng sau đây:
- Tính năng phát hiện chuyển động trong một vùng xác định: xây dựng bộ lọc cho
hệ thống, chỉ giám sát tại một vùng chỉ định
- Tính năng chuyển các file ảnh đã lưu thành file video định dạng avi, thuận tiện
cho việc quản lý: thay vì lưu các file ảnh, hệ thống chuyển các file ảnh thành file
video .avi
- Tính năng upload lên web server, giúp cho việc truy nhập từ xa: hệ thống sẽ
upload ảnh lên server, ngườ i dùng từ xa có thể truy nhập đến server để xem hình
ảnh thu đượ c từ hệ thống
- Tính năng gửi mail cảnh báo cho địa chỉ đã chỉ định: khi có chuyển động xảy ra,
hệ thống sẽ gửi mail cảnh báo cho người giám sát qua địa chỉ mail chỉ định
- Tính năng gửi tin nhắn cảnh báo cho điện thoại di động, trong tin nhắn có lưu
hình chụp lại từ camera: hệ thống sẽ gửi tin nhắn có hình chụp chuyển động đến
số điện thoại di động chỉ định để cảnh báo cho ngườ i giám sát
- Tính năng giám sát cùng lúc nhiều camera hoạt động, thực hiện cảnh báo cho
từng camera: hệ thống đượ c xây dựng bở i nhiều camera hoạt động cùng một lúc,
thực hiện giám sát và cảnh báo vớ i mỗi camera
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 52/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 52
5.2.1.2. Thuật toán nâng cao
Xây dựng thuật toán tạo thêm bộ lọc xử lý dữ liệu
- Ngườ i dùng nhập vùng giám sát cho hệ thống
- Hệ thống sẽ tính toán để tọa bộ lọc tương ứng với vùng đã nhập
- Hệ thống áp dụng bộ lọc, chỉ xét phát hiện chuyển động trong một vùng nhất định
5.2.2. Công cụ thiết kế
- Xây dụng module thiết k ế bộ lọc cho hệ thống
- Ngườ i dùng chọn lựa vùng cần giám sát trên màn hình, hệ thống sẽ tính toán tạo
một bộ lọc tương ứng với vùng đượ c chọn
- Hệ thống áp dụng bộ lọc đó cho phần xử lý dữ liệu
5.2.3. Hướ ng cảnh bảo khác
Phát triển thêm các hướ ng cảnh báo khác như là:
- Nhắn tin vào điện thoại di động: Ngườ i dùng nhập số diện thoại vào hệ thống và
soạn thảo tin nhắn sẽ đượ c gửi. Khi có chuyển động xảy ra, hệ thống sẽ gửi tin
nhắn cho số điện thoại người dùng đã cài đặt
- Gửi mail vào một địa chỉ chỉ định: Tương tự như trên, ngườ i dùng nhập địa chỉ
email và dữ liệu gửi cho hệ thống. Hệ thống sẽ gửi dữ liệu cho địa chỉ email dã
cài đặt khi có chuyển động
- Xây dựng hệ thống đáp ứng đượ c nhiều k ết nối từ di động yêu cầu đến Server và
sẽ gửi dữ liệu cho các di động này
5/11/2018 Báo cáo đô án tôt nghiê p - slidepdf.com
http://slidepdf.com/reader/full/bao-cao-do-an-tot-nghiep-55a23122a3e64 53/53
Báo cáo đồ án tố t nghiệ p 2011
Nguyễ n Viế t Khánh – Công nghệ phần mề m - K48 53
Tài liệu tham khảo
Các bài viết về k ỹ thuật phát hiện chuyển động:
- Motion Detection Algorithms của Andrew Kirillov:
http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx
- Các bài biết về Motion detection trong Wikipedia
http://en.wikipedia.org/wiki/Motion_detection
Tài liệu về cách lập trình vớ i J2ME:
- Lập trình thiết bị di động vớ i J2ME của Khoa Công Nghệ Thông Tin – Đại
học Khoa học Tự nhiện
- MIDP 2.0 Introduction to Using Sockets and Datagrams v1.0 en của Nokia
Tài liệu Java của Oracle về cách thức sử dụng phương thức, thuộc tính các lớ p trong
Java:
- http://download.oracle.com/javase/1.4.2/docs/api/java/
Tài liệu hướ ng dẫn cách viết code, các đoạn code ví dụ trong website:
- http://java2s.com/
Tài liệu hướ ng dẫn sử dụng gói hỗ trợ xây dựng giao diện Swing vớ i JTattoo trong
webstie:
- http://www.jtattoo.net/HowTo.html