Tải bản đầy đủ (.docx) (51 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (871.42 KB, 51 trang )

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

Mục lục

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

1


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

Lời nói đầu
Ngày nay với sự phát triển vượt bậc của các ngành khoa học kỹ thuật nói chung
và ngành công nghệ thông tin nói riêng, cuộc sống của con người đã chuyển sang một
thời đại mới - thời đại công nghệ hóa. Với việc ứng dụng khoa học công nghệ vào đời
sống xã hội, đời sống con người đang dần được cải thiện và nâng cao một cách đáng kể
Trong việc giám sát an ninh, trước kia, chúng ta phải bố trí nhân lực để giám sát
trực tiếp. Thế nhưng ngày nay, công việc an ninh đã được công nghệ hóa, giảm bớt đòi
hỏi về nhân lực. Con người được thay thế bằng các hệ thống camera giám sát đặt tại
những vị trí chỉ định để liên tục thu hình và gửi về hệ thống máy chủ cho người giám sát
theo dõi. Nhờ vậy mà không cần phải bố trí nhiều nhân lực tại nhiều địa điểm để giám
sát mà bất cứ nơi đâu, bất cứ lúc nào người ta cũng có thể theo dõi được qua hệ thống
camera của mình. Hệ thống giúp cho những nhà quản lý vừa kiểm soát công việc một
cách chặt chẽ hơn, vừa tiết kiệm được chi phí thuê nhân công bảo vệ, mà lại làm cho
hình ảnh của doanh nghiệp, cá nhân được chuyên nghiệp, hiện đại hơn. Nếu có bất kỳ sự
cố nào xảy ra, hệ thống camera an ninh sẽ ghi lại, từ đó làm tư liệu bằng chứng để tìm ra
được nguyên nhân và khắc phục hậu quả vấn đề. Hệ thống còn giúp tăng cường công tác
bảo mật, an toàn – an ninh, phòng chống sự xâm nhập bất hợp pháp của kẻ gian
Tuy nhiên, hệ thống camera giám sát hiện nay còn tồn tại một số nhược điểm như:
hệ thống tuy đã thực hiện giám sát nhưng chưa có chức năng tự động cảnh báo cho
người giám sát. Bởi vậy, người giám sát vẫn luôn phải theo dõi màn hình hệ thống


24/24h để phát hiện và chủ động tránh các rủi ro có thể xảy đến. Nhằm góp phần nâng
cao chất lượng hệ thống giám sát, tôi đã quyết định nghiên cứu xây dựng đồ án tốt
nghiệp với đề tài: Xây dựng phần mềm giám sát và cảnh báo dựa trên kỹ thuật phát
hiện chuyển động. Trong quá trình nghiên cứu và phát triển tôi đã nhận được sự giúp đỡ
và hướng dẫn tận tình của Thầy Phạm Quang Hòa. Thầy đã cho tôi những gợi ý cũng
như những ý kiến vô cùng quan trọng, giúp tôi có thể vượt qua các khó khăn trong quá
trình nghiên cứu và xây dựng nên được phần mềm này
Tôi rất mong đề tài này sẽ được đón nhận và có những ý kiến đóng góp để phát
triển và hoàn thiện hơn nữa sản phẩm phần mềm này và hi vọng một ngày không xa, sản
phẩm phần mềm này sẽ được ứng dụng rộng rãi trong đời sống hằng ngày của chúng ta.

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

2


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

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

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

3


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

-

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


-

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

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

4


Báo cáo đồ án tốt nghiệ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ó
1.2.1.1.
Khảo sát

Hiện nay có rất nhiều các hệ thống giám sát khác nhau, các hệ thống đều được
xây dựng trên các thiết bị cơ bản là:
-

Camera đặt tại vị trí cần giám sát

-

Router: Bộ phát tín hiệu

-

Phần mềm giám sát và phần mềm gửi dữ liệu
Hệ thống có các chức năng như:

-

Ghi hình: hệ thống ghi lại hình ảnh thu được từ camera làm tư liệu cho sau này


-

Giám sát tại chỗ: Người giám sát có thể theo dõi các hình ảnh thu được từ camera
trên hệ thống

-

Giám sát từ xa: các hình ảnh thu được từ camera được gửi lên mạng. Từ đó người
giám sát theo dõi từ xa qua mạng

Chức năng
Ghi hình
Giám sát tại chỗ
Giám sát từ xa
Báo hiệu qua loa
Tự động phát hiện chuyển động
Tự động cảnh báo
Cảnh báo từ xa
Chụp hình chuyển động
1.2.1.2.

Hệ thống hiện có



Không
Không
Không
Không

Không

Đá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ư:
Nguyễn Viết Khánh – Công nghệ phần mềm - K48

5


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

-

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

Mô hình bài toán
Tổ chức

Hệ thống gồm các thành phần: camera thu hình, server xử lý, client hiển thị hình
ảnh và di động
 Camera: liên tục thu hình vùng quan sát và gửi dữ liệu lên một địa chỉ ip của camera
 Server: xử lý dữ liệu và lắng nghe yêu cầu kết nối từ di động. Khi có yêu cầu kết nối từ

phía di động, server sẽ thực hiện kết nối với di động. Server sẽ liên tục lấy dữ liệu từ địa
chỉ ip của camera. Sau đó server sẽ xử lý dữ liệu, kiểm tra xem có sự chuyển động hay
không. Nếu có sự chuyển động thì server sẽ khoanh vùng sự chuyển động để cho client
hiển thị, chạy nhạc báo hiệu, ghi hình lại sự chuyển động và gửi dữ liệu cho di động
đang kết nối với nó. Ngược lại, khi không có sự chuyển động, server sẽ thông báo cho di
động là không có chuyển động xảy ra. Công việc được lặp lại cho đến khi kết thúc
chương trình
 Client: Lấy dữ liệu đã xử lý, hiển thị dữ liệu đó lên màn hình cho người giám sát theo

dõi

 Di động: di động kết nối với server, nhận dữ liệu từ server gửi cho khi có chuyển động

xảy ra. Sau đó di động hiển thị dữ liệu lên màn hình di động cho người giám sát theo dõi
1.2.2.2.

Mô hình

Gồm có các thành phần như:
-

Camera: được đặt tại một vị trí cố định để thu hình, gửi hình lên một địa chỉ IP

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

6


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

-

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

Chương 2: Kỹ thuật và công nghệ
Nguyễn Viết Khánh – Công nghệ phần mềm - K48

7


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

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

Nguyễn Viết Khánh – Công nghệ phần mềm - K48


8


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

-

-

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 khó khăn trong việc debug chương trình


-

Các tool hỗ trợ trong java không mạnh và đơn giản. Do java là phần mềm mã
nguồn mở bởi vậy việc yêu cầu xây dựng một tool hỗ trợ chuyển nghiệp, đầu tư
quy mô trở lên khó khăn

2.1.3.

Những hỗ trợ của Java

Java được xây dựng chủ yếu dựa trên bộ công cụ phát triển ( Java Development
Kit - JDK) như là bộ thư viện chuẩn trong đó chứa trình biên dịch, trình thông dịch, trình
đóng gói, tài liệu,…Đây chính là nền tảng cho việc phát triển các ứng dụng Java. Hiện
nay, cộng đồng Java trên thế giới mà đi đầu là hãng Sun Microsystems đã xây dựng
nhiều nhánh mới cho Java như: JavaMail (thư điện tử), Java TAPI (viễn thông), Java3D
(đồ họa 3 chiều), J2ME (ứng dụng cho thiết bị di động)
Hiện nay Java có các phiên bản hỗ trợ sau:
-

-

-

J2SETM (Java 2 Platform, Standart Edition): Phiên bản chuẩn gồm bộ công cụ
thông dụng dùng để chạy trên các máy PC hoặc các mạng máy tính nhỏ.
J2EETM (Java 2 Platform, Enterprise Edition): Phiên bản dành cho các máy chủ
với bộ nhớ lớn. Bao gồm các kiến trúc nâng cao như Web, EJB, Transaction,…
dùng để xây dựng các ứng dụng có quy mô lớn
J2METM (Java 2 Platform, Micro Edition): Bao gồm môi trường và thư viện Java
dùng để phát triển các ứng dụng trên các thiết bị có bộ nhớ nhỏ như điện thoại di

động, PDA, các đồ gia dụng...

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

9


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

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
Nguyễn Viết Khánh – Công nghệ phần mềm - K48

10


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

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 API
này tuy nhiên nó không thực sự phong phú bằng tập API của tầng hiện trạng
Tầng hiện trạng (Profile Layer): Tầng này cung cấp các hàm API hữu dụng hơn
cho việc lập trình. Mục đích của tầng này xây dựng nên lớp cấu hình và cung cấp nhiều
thư viện ứng dụng hơn
2.1.5.

Lý do sử dụng Java để xây dựng đồ án

Qua những ưu điểm của Java và những sự hỗ trợ của Java đã nêu ở trên, nhận
thấy đây là ngôn ngữ thích hợp để xây dựng đồ án với những lý do sau đây:
-


Ngôn ngữ được sử dụng để xây dựng ứng dụng trên cả hai phía Server và di động,
đáp ứng đúng yêu cầu của bài toán đề ra

-

Ngôn ngữ hướng đối tượng, giúp cho việc xây dựng các đối tượng cùa bài toán
trở nên đơn giản, dễ dàng hơn

-

Giúp cho việc xây dựng hệ thống một lần, có thể chạy trên nhiều platform khác
nhau

-

Ngôn ngữ hỗ trợ ứng dụng mạng, giúp cho việc truyền dữ liệu giữa di động và
server qua mạng

-

Hỗ trợ đa luồng giúp cho hệ thống có thể xử lý nhiều yêu cầu trong tại một thời
điểm

2.2.
Thuật toán phát hiện chuyển động
2.2.1.
Mô tả thuật toán

Thuật toán phát hiện chuyển động là quá trình so sánh liên tục để tìm ra sự khác

biệt giữa các khung hình video liên tiếp lấy từ địa chỉ ip của camera
Thuật toán dựa trên cơ sở là so sánh khung hình video hiện tại với khung hình
video trước nó
Sự so sánh được thực hiện trên từng vùng pixel của hai khung hình đó. Nếu vùng
pixel của khung hình đầu thay đổi so với vùng pixel khung hình sau thì khoanh vùng
pixel đó là vùng pixel đã thay đổi. Sau khi so sánh ta thu được một danh sách các vùng

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

11


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

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)

Hình 2: Image 2 với pixel tại tọa độ (x, y) được biểu diễn là Pixel2( Red2, Green2, Blue2)

Xác định Delta giữa hai Pixel qua công thức:

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

12


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

DeltaRed = | Red 2 – Red 1|
DeltaGreen = | Green 2 – Green 1|
DeltaBlue = | Blue 2 - Blue 1|
Delta = Max (DeltaRed, DeltaGreen, DeltaBlue)
Nếu Delta > ngưỡng xác định (25) thì pixel 1 được gọi là thay đổi so với pixel 2
Bước 2: Chia ảnh thành các ô vuông có kích thước là 8 x 8

Hình 3: Hình thể hiện chia ảnh thành các ô có kích thước 8 x 8
Đếm số pixel thay đổi trong các ô. Nếu số pixel thay đổi lớn hơn ngưỡng là 20%
tổng số pixel trong một ô thì ô đó được gọi là thay đổi

Hình 4: Thể hiện các ô có pixel thay đổi

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

13



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

Bước 3: Liên kết các ô có sự thay đổi thành ô lớn. Xác định vùng có kích thước
lớn nhất. Nếu vùng này có kích thước lớn hơn ngưỡng là 32 x 32 thì thông báo có sự
chuyển động

Hình 5: Liên kết các ô thay đổi
2.2.3.

Đánh giá thuật toán

Thuật toán đã xác định được các vùng thay đổi giữa khung hình video trước và
khung hình video sau
Thuật toán đã liên kết được các vùng thay đổi đó để xác định được vùng thay đổi
có kích thước lớn nhất. Qua vùng này, ta có thể xác định được là có sự chuyển động xảy
ra hay không để báo hiệu cho người giám sát
Thuật toán xử dụng các luồng xử lý khác nhau, giúp cho chương trình thực hiện
được nhiều công việc cùng một lúc trong cùng một thời điểm. Có các luồng xử lý dữ
liệu, các luồng xử lý về server, các luồng xử lý về kết nối giữa client và server. Qua đó
giúp yêu cầu ít tài nguyên hệ thống hơn
2.2.4.
So sánh với các thuật toán khác
 Các thuật toán về phát hiện chuyển động khác:
-

Thuật toán 1: Thuật toán motion detectin của Andrew Kirillov

Bước 1: Tìm các vùng khác biệt giữa hai khung hình. Sau đó ta lấy được một ảnh
với những điểm ảnh màu trắng tại những nơi mà khung hình hiện tại khác với khung

hình trước nó

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

14


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

Bước 2: Đếm các điểm ảnh khác biệt, nếu số lượng của nó lớn hơn một mức độ
báo động xác định trước thì báo hiệu là có sự chuyển động

Nhược điểm của thuật toán là nếu đối tượng chuyển động liên tục thì chỉ thấy
được vùng thay đổi nhỏ giữa các khung hình. Nhưng nếu đối tượng chuyển động chậm
thì thuật toán không xác định được kết quả đúng đắn
-

Thuật toán 2: Thuật toán motion detectin của Andrew Kirillov

Lúc bắt đầu, ta lấy khung hình đầu tiên của chuỗi video, đặt là khung hình nền. Ta
luôn so sánh khung hình hiện tại với khung hình nền. Sau đó ta chuyển khung hình hiện
tại với khung hình nền, thay đổi màu sắc điểm ảnh của khung hình nền. Kết quả là ta xác
định được khung hình chuyển động của vật

 So sánh với các thuật toán:
-

Giống nhau: Đều dựa trên cơ sở là so sánh khung hình video hiện tại với khung
hình video trước nó.


-

Ưu điểm: Thuật toán xác định rõ được các vùng chuyển động và chỉ định được
vùng có sự chuyển động lớn nhất

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

15


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

Thuật toán đã chia khung hình xử lý thành các vùng và các ô, và xử lý trên từng
vùng và từng ô này. Với việc đó giúp cho đánh giá chính xác hình ảnh hơn
Thuật toán nâng cao (áp dụng cho vùng phát hiện)

2.3.

Mục đích: áp dụng để phát hiện chuyển động trong một vùng chỉ định
Cách làm:
-

Tạo một mặt nạ theo định dạng sau

Hình 6: Xây dựng mặt nạ
o

Vùng màu đen là vùng không xét sự chuyển động

o


Vùng màu trắng là vùng xét sự chuyển động

-

Với các ảnh thu được ta sẽ áp dụng mặt nạ vào. Ta sẽ thu được các ảnh với vùng
bị bôi đen tương ứng với vùng đen của mặt nạ

-

Như vậy ta chỉ xét vùng có sự chuyển động là vùng không bị bôi đen. Ta chỉ quan
tâm sự chuyển động trong vùng này

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

16


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

Hình 7: Chọn vùng chỉ định

Hình 8: Áp dụng mặt nạ cho vùng chỉ định

Chương 3: Thiết kế chương trình
3.1.

Các module của chương trình
Chương trình được tổ chức thành các module như sau:


Nguyễn Viết Khánh – Công nghệ phần mềm - K48

17


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

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

18


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

 iconnect

Module này dùng đề kết nối cơ sở dữ liệu và thao tác với cơ sở dữ liệu
-

IConnect: dùng để kết nối với cơ sở dữ liệu

-

IUser: thao tác với cơ sở dữ liệu

-

IUserBusinessRule: điều khiển việc thao tác với cơ sở dữ liệu

 idata


Module này chứa các lớp cơ sở, sử dụng để cài đặt thuật toán
-

ICell: dùng để xây dựng lớp cell

-

CompareImage: dùng để xây dựng lớp CompareImage

-

IData: dùng để xây dựng lớp chứa dữ liệu chung cho chương trình

-

IResize: dùng để xây dựng lớp thay đổi kích thước ảnh

-

ImagePanel: dùng để xây dựng lớp ImagePanel

-

MyImage: dùng để xây dựng lớp MyImage

-

IPixel: dùng để xây dựng lớp Pixel


-

IRectangular: dùng để xây dựng lớp Rectangular

-

IUtility: chứa các phương thức tĩnh

 iprogram

Module chứa các lớp dùng để xử lý chương trình
-

IServer: lớp Server của chương trình

-

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

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

19


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

-

IFrame: xây dựng frame hiển thị chính của chương trình

-

ILogin: xây dựng frame đăng nhập hệ thống

-

IMenu: xây dựng menu cho chương trình

-

IPanel: xây dựng panel chính cho frame


-

IUserForm: xây dựng panel user

 iwriter:

Module chứa lớp sử dụng trong việc đọc ghi file
-

IWriteFile: dùng để đọc ghi file ảnh ghi trong file có định dạng .txt

 iplay_media

Module chứa các lớp sử dụng trong việc chạy file nhạc và ảnh
-

IMovie: dùng để điều khiển cách chạy file ảnh

-

IPlayAudio: dùng để chạy file audio

-

IPlayMovie: dùng để chạy file ảnh, hiển thị trên màn hình

3.2.
Cài đặt chương trình
3.2.1.

Cài đặt thuật toán phát hiện chuyển động

Thuật toán phát hiện chuyển động dựa trên nguyên tắc cở bản là so sánh khung
hình video hiện tại với khung hình video trước nó. Ta xét trường hợp cụ thể sau:
 Input: Hai khung hình video Img1 và Img2 có cùng kích thước chiều rộng và

chiều cao
 Output: Danh sách các hình chữ nhật thể hiện vùng thay đổi giữa Img1 và Img2

Các bước thực hiện:
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()

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

20


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


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 được
mả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

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

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

21


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

 Để 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ìm
cá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

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

22


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

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 related
if 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

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

23


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

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



Tọa độ điểm (x2, y1) của ô liên quan đến hình chữ nhật Rec1

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

24


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

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

Nguyễn Viết Khánh – Công nghệ phần mềm - K48

25


×