53
  Báo cáo đồ án tố  t nghi p 2011  Nguyễ n Viế t Khánh  Công nghphn mề m - K48 1 Mc lc Chương 1: Giớ i thiu bài toán .................................................................................................................. 4 1.1. Giớ i thiu bài toán Xây dng phn mm giám sát và cnh báo ................................................... 4 1.1.1. Ni dung............................................................................................................................... 4 1.1.2. Mc đích............................................................................................................................... 4 1.1.3. Chc năng ............................................................................................................................ 5 1.2. Gii pháp và mô hình ................................................................................................................... 5 1.2.1. Kho sát các hthng giám sát hi n có................................................................................ 5 1.2.2. hình bài toán .................................................................................................................. 7 Chương 2: Kthut và công ngh............................................................................................................ 9 2.1. Công nghJava ............................................................................................................................ 9 2.1.1. Giớ i thiu vcông nghJava ............................................................................................... 9 2.1.2. Ưu đim , nhược đim ca Java ........................................................................................... 9 2.1.3. Nhng htrợ ca Java ........................................................................................................ 10 2.1.4. Công nghJava trong lp trình đin thoi di động (J2ME) ............................................... 11 2.1.5. do sdng Java để xây dng đồ án .............................................................................. 12 2.2. Thut toán phát hin chuyn động ............................................................................................. 12 2.2.1. tthut toán.................................................................................................................. 12 2.2.2. Biu din thut toán............................................................................................................ 13 2.2.3. Đánh giá thut toán ............................................................................................................ 15 2.2.4. So sánh vớ i các thut toán khác ......................................................................................... 16 2.3. Thut toán nâng cao (áp dng cho vùng phát hin) ................................................................... 17 Chương 3: Thiết kế chương trình ........................................................................................................... 20 3.1. Các module ca chương trình .................................................................................................... 20 3.2. Cài đặt chương trình ................................................................................................................... 21 3.2.1. Cài đặt thut toán phát hin chuyn động .......................................................................... 21 3.2.2. hình các lung x.................................................................................................... 30 3.2.3. Cài đặt lung xlý dliu ................................................................................................. 32 3.2.4. Cài đặt lung xlý Server .................................................................................................. 33 3.2.5. Cài đặt lung xlý k ết ni gia Server  Mobile .............................................................. 36 3.2.6. Cài đặt lung xlý chy trên đin thoi di động ............................................................... 37

Báo cáo đồ án tốt nghiệp

Embed Size (px)

Citation preview

Page 1: Báo cáo đồ án tốt nghiệp

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

Page 2: Báo cáo đồ án tốt nghiệp

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 

Page 3: Báo cáo đồ án tốt nghiệp

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. 

Page 4: Báo cáo đồ án tốt nghiệp

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

Page 5: Báo cáo đồ án tốt nghiệp

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ó

Page 6: Báo cáo đồ án tốt nghiệp

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ư:

Page 7: Báo cáo đồ án tốt nghiệp

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

Page 8: Báo cáo đồ án tốt nghiệp

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

Page 9: Báo cáo đồ án tốt nghiệp

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

Page 10: Báo cáo đồ án tốt nghiệp

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...

Page 11: Báo cáo đồ án tốt nghiệp

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

Page 12: Báo cáo đồ án tốt nghiệp

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

Page 13: Báo cáo đồ án tốt nghiệp

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)

Page 14: Báo cáo đồ án tốt nghiệp

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

Page 15: Báo cáo đồ án tốt nghiệp

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

Page 16: Báo cáo đồ án tốt nghiệp

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

Page 17: Báo cáo đồ án tốt nghiệp

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

Page 18: Báo cáo đồ án tốt nghiệp

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

Page 19: Báo cáo đồ án tốt nghiệp

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

Page 20: Báo cáo đồ án tốt nghiệp

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

Page 21: Báo cáo đồ án tốt nghiệp

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

Page 22: Báo cáo đồ án tốt nghiệp

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

Page 23: Báo cáo đồ án tốt nghiệp

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  { –  

Page 24: Báo cáo đồ án tốt nghiệp

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

Page 25: Báo cáo đồ án tốt nghiệp

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

Page 26: Báo cáo đồ án tốt nghiệp

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) )

Page 27: Báo cáo đồ án tốt nghiệp

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 ô

Page 28: Báo cáo đồ án tốt nghiệp

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

Page 29: Báo cáo đồ án tốt nghiệp

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

Page 30: Báo cáo đồ án tốt nghiệp

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ý

Page 31: Báo cáo đồ án tốt nghiệp

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

Page 32: Báo cáo đồ án tốt nghiệp

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)

Page 33: Báo cáo đồ án tốt nghiệp

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

Page 34: Báo cáo đồ án tốt nghiệp

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

Page 35: Báo cáo đồ án tốt nghiệp

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 

Page 36: Báo cáo đồ án tốt nghiệp

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 )

Page 37: Báo cáo đồ án tốt nghiệp

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

Page 38: Báo cáo đồ án tốt nghiệp

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.

Page 39: Báo cáo đồ án tốt nghiệp

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

Page 40: Báo cáo đồ án tốt nghiệp

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 )

Page 41: Báo cáo đồ án tốt nghiệp

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;

Page 42: Báo cáo đồ án tốt nghiệp

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

Page 43: Báo cáo đồ án tốt nghiệp

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 

Page 44: Báo cáo đồ án tốt nghiệp

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 

Page 45: Báo cáo đồ án tốt nghiệp

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

Page 46: Báo cáo đồ án tốt nghiệp

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

Page 47: Báo cáo đồ án tốt nghiệp

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!” 

Page 48: Báo cáo đồ án tốt nghiệp

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:

Page 49: Báo cáo đồ án tốt nghiệp

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

Page 50: Báo cáo đồ án tốt nghiệp

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

Page 51: Báo cáo đồ án tốt nghiệp

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

Page 52: Báo cáo đồ án tốt nghiệp

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

Page 53: Báo cáo đồ án tốt nghiệp

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