Khi xây dựng một ứng dụng video dùng lớp AVICap, các ứng dụng thường được thực hiện theo các trình tự sau:
Tạo một capture window
Kết nối vào một capture driver
Liệt kê các capture driver đã cài đặt trong hệ thống
Lấy thông tin về khả năng của một capture driver
Lấy thông tin trạng thái của một capture window
Trình bày dialogbox để thiết lập các thông số video
Lấy cũng như thiết lập các thông số của video format
Cho phép preview video
Cho phép overlay video
Đặt tên cho capture file
Cấp phát trước vùng nhớ trên đĩa cho capture file
Định dạng audio capture
Thay đổi các thông số video capture
Thu dữ liệu
Thêm các chuỗi thông tin vào capture file
Thêm các hàm callback vào ứng dụng
3.2.3 Một số hàm AVICap Windows thường dùng
Hàm tạo capture window
hWndC = capCreateCaptureWindow(
(LPSTR) “My Capture Window”, // tên cửa sổ WS_CHILD | WS_VISIBLE, // kiểu cửa sổ 0, 0, 160, 120, // vị trí cửa sổ
(HWND) hwndParent, (int) nID );
Kết nối vào capture driver
fOK = capDriverConnect(hWndC,0);
Hủy bỏ kết nối với capture driver capDriverDisconnect(hWndC);
Kích hoạt chế độ Preview video:
Đầu tiên chúng ta cần phải đặt tốc độ bắt giữ hình ảnh, sau đó kích hoạt chế độ Preview video. Ví dụ dưới đây thiết lập tốc độ hiển thị
frame ở chế độ preview là 66 miliseconds mỗi frame(tức là khoảng 15 fps) và thiết lập chế độ preview cho capture window
CapPreviewRate(hWndC,66); CapPreview(hWndC, TRUE); CapPreview(hWndC, FALSE);
3.3 Các hàm và lớp chính trong chương trình
Chương trình phát hiện đối tượng đột nhập “Intrusion Detection” được xây dựng trên bộ Visual Studio 2010 với ngôn ngữ lập trình C#. Cài đặt bộ hỗ trợ DriectX 10 trên nền tảng Windows 7 x86.
Sau đây là một số hàm và lớp chính trong chương trình.
Lớp ImageProcessing: Chức năng chính của lớp này là xử lý các hình ảnh thu được từ camera.
3.3.1 Các biến và kiểu dữ liệu trong lớp
Bitmap flag,flag2,flag3;
int width,width2,width3;
BitmapData bitmapData=null,bitmapData2=null,bitmapData3=null; Byte*pBase=null,pBase2=null,pBase3=null;
public struct Pixel {
public byte blue;
public byte green; public byte red;
}
3.3.2 Một số phương thức trong lớp
Phương thức PixelSize: Cho kích cỡ của điểm ảnh. Cấu trúc của phương thức như sau:
public Point PixelZize {
get
{
Rectanglef bounds = flag.GetBounds(ref unit);
returnnew Point((int)bounds.width, (int) bounds.height); }
}
Phương thức PixelAt: Cho vị trí của điểm ảnh. Cú pháp của phương thức như sau:
public Pixel*PixelAt(int x, int y) {
return(Pixel*)(pBase+y*width+x*sizeof(Pixel)); }
3.3.3 Một số hàm trong lớp
Hàm LockBitmap: Được sử dụng trong việc trừ hai ảnh. Cú pháp của hàm như sau:
public void Lockbitmap() {
GraphicsUnit unit = GraphicsUnit.Pixel;
RectangleF boundsF = flag.GetBounds(ref unit); Rectangle bounds = new Rectangle((int)boundsF.X, (int) boundsF.Y,
(int) boundsF.Width, (int) boundsF.Heigt);
width = (int) boundsF.Width*sizeof(Pixel);
if (width%4!=0) { width=4*(width/4 + 1); } bimapData=flag.LockBits(bounds,ImageLockNode.ReadWrite,PixelF omat.Format24bppRgb); pBase=(Byte*)bitmapData.Scan0.ToPointer(); }
Hàm UnlockBitmap: Được sử dụng trong việc trừ hai ảnh. Cú pháp như sau:
public voidUnlockBitmap() {
flag.UnlockBits(bitmapData); bitmapData= null;
}
Hàm Save: Lưu lại ảnh. Cú pháp như sau:
public void Save(string filename) {
flag3.Save(filename, ImageFormat.Jpeg); }
Hàm CompareUnsafeFaster: Thực hiện việc trừ hai ảnh.
Cú pháp của hàm như sau:
publicvoid CompareUnsafeFaster(out Int32 percent)
{
Point size = PixelSize; percent=0;
LockBitmap(); LockBitmap2(); LockBitmap3();
for (int y = 0; y < size.Y; y++) {
Pixel* pPixel = PixelAt(0, y); Pixel* pPixel2 = PixelAt2(0, y); Pixel* pPixel3 = PixelAt3(0, y);
for (int x = 0; x < size.X; x++) { if(!(pPixel->green==pPixel2->green)) { pPixel3->red = pPixel2->red; pPixel3->green = pPixel2->green; pPixel3->blue = pPixel2->blue; percent++; } pPixel++; pPixel2++; pPixel3++; } } UnlockBitmap3(); UnlockBitmap2(); UnlockBitmap(); }
3.4 Chức năng và cách sử dụng chương trình 3.4.1 Chức năng của chương trình
Chức năng chính của chương trình là kết nối với các webcam, hiển thị hình ảnh thu từ webcam lên trên form. Khi phát hiện có đối tượng đột nhập chương trình sẽ tự động đưa ra cảnh báo và lưu lại ảnh có chứa đối tượng đột nhập. Sau đây sơ đồ hoạt động của chương trình:
Bắt đầu
Kết nối với webcam
Thiết lập thông số
Bắt đầu quan sát
Có đối tượng đột
nhập?
yes
Hình 3.2: Sơ đồ hoạt động của chương trình
Tự động đưa ra cảnh báo Lưu lại hình ảnh của đối
tượng
Kết Thúc Tiếp tục theo dõi? yes
Nguồn: Nghiên cứu của tác giả
No No
3.4.2 Giao diện và cách sử dụng
Giao diện chương trình khi hoạt động:
Nguồn: Chụp từ phần mềm thực nghiệm
Hình 3.3: Giao diện chính khi hoạt động
Trong hộp thoại properties cho phép chúng ta thiết lập các thông số cho ảnh đầu ra. Chúng ta có thể thay đổi loại ảnh, kích cỡ ảnh đầu ra, chất lượng của ảnh (tùy theo từng camera mà các thông số này có thể khác nhau).
Nguồn: Chụp từ phần mềm thực nghiệm
Nhấn nút Apply để áp dụng và nhấn nút OK để đóng hộp thoại này. Khi đó chương trình bắt đầu hiển thị hình ảnh thu được lên form:
Nguồn: Chụp từ phần mềm thực nghiệm
Hình 3.5: Chương trình bắt đầu quan sát qua webcam
Khi chúng ta nhấn vào nút bắt đầu chương trình sẽ bắt đầu quan sát, và khi phát hiện có đối tượng đột chương trình sẽ báo động bằng âm thanh và lưu lại hình ảnh có chứa đối tượng đột nhập vào thư mục wanted:
Nguồn: chụp từ phần mềm thực nghiệm
Nguồn: xuất ra từ phần mềm thực nghiệm
Hình 3.7: Bắt và lưu hình đối tượng đột nhập 3.5 Đánh giá kết quả thử nghiệm
3.5. 1 Kịch bản thử nghiệm
Kịch bản thử nghiệm của chương trình nhằm giải quyết bài toán với yêu cầu đặt ra đó là phát hiện các đối tượng chuyển động tại nới đặt camera quan sát như hành lang, cầu thang, nhà kho, cửa ra vào các phòng... nơi mà khung hình hầu như không thay đổi theo thời gian và điều kiện khách quan như thời tiết không ảnh hưởng tới khung hình của camera quan sát.
3.5.2 Đánh giá và so sánh
Dựa vào yêu cầu bài toán luận văn đã trình bày đầy đủ rõ ràng kỹ thuật trừ ảnh dựa vào điểm ảnh và xây dựng thành công chương trình Intrusion Detection. Qua đó cài đặt và thử nghiệm chương trình cho kết quả tương đối tốt. Với điều kiện
khung nhìn khi thực hiện theo kịch bản thử nghiệm thì phần mềm đạt hiệu quả đến 95% theo yêu cầu, 5% còn lại là do đối tượng xuất khiện trong khung hình quá nhanh hoặc quá xa so với tiêu cự cho phép của camera quan sát nên camera không thể bắt hình và lưu lại đối tượng được. Tuy vẫn tồn tại một số nhược điểm cần đánh giá và khắc phục khi triển khai trên thực tế với nhiều kịch bản xảy ra khác nhau như điều khiện khung hình và các điều kiện khách quan khác, nhưng nhìn chung chương trình đạt kết qua như mong đợi và giải quyết được yêu cài bài toán đặt ra ở trên.
Kết luận chương
Nội dung trong chương trình bày một cách chi tiết bài toán phát hiện đột nhập, từ đó xây dựng giải thuật để xây dựng phần mềm Intrusion Detection. Tìm hiểu kỹ thuật bắt giữ hình ảnh qua camera sử dụng lớp AVIcap trên nền tảng Windows 7 X86 từ đó xây dựng, cài đặt và thử nghiệm thành công chương trình Intrusion Detection.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Quá trình tìm hiểu và nghiên cứu luận văn đã đạt được kết quả sau đây:
1. Kết quả
- Trình bày tổng quan về video, bài toán phát hiện chuyện động.
- Trình bày các kỹ thuật trừ ảnh ứng dụng vào bài toán phát hiện chuyển động.
- Tìm hiểu về ngôn ngữ lập trình Csharp và kỹ thuật bắt giữ hình ảnh thông qua camera trên môi trường Windows.
- Xây dựng phần mềm Phát hiện đột nhập dựa trên kỹ thuật trừ ảnh.
- Cài đặt thành công ứng dụng phát hiện đột nhập thông qua webcamera.
- Giảm dung lượng lưu trữ trên không gian đĩa, bằng cách chỉ lưu lại những hình ảnh có chứa đối tượng đột nhập thay vì phải lưu lại cả đoạn video
2. Hạn chế
- Chương trình này giới hạn chỉ thực hiện được với Video định dạng *.AVI và hỗ trợ thực thi trên nền tảng Windows x86 và được cài đặt trên một máy tính cục bộ chưa chạy được trong hệ thống mạng.
- Chương trình chỉ sử dụng một trong số các kỹ thuật trừ ảnh với ngưỡng do đó khi thực thi với video có chất lượng thu hình kém dẫn tới kết quả không như mong muốn.
- Chương trình chỉ đưa ra cảnh báo vào lưu lại đối tượng đột nhập nhưng chưa nhận dạng được đối tượng.
3. Hướng phát triển
Với các kết quả đã đạt được cùng những hạn chế và thiếu sót trên đã mở ra một số hướng phát triển cho luận văn “Phát hiện đột nhập dựa trên kỹ thuật trừ ảnh” như sau:
- Hiệu chỉnh giao diện hoàn chỉnh hơn, thêm các chức năng mở rộng, có giao diện thân thiện và đẹp mắt hơn.
- Chương trình thực hiện được nhiều định dạng video khác nhau, chạy được trên nhiều nền tảng windows khác nhau cũng như cài đặt và sử dụng được trên hệ thống giám sát qua mạng.
- Phát triển chương trình ứng dụng đưa thêm nhiều một số kỹ thuật xử lý ảnh nhằm nâng cao hiệu suất phát hiện đột nhập cũng như nhận dạng được đối tượng đột nhập.
TÀI LIỆU THAM KHẢO
TÀI LIỆU TIẾNG VIỆT
[1]Đỗ Năng Toàn, Phạm Việt Bình (2008), “Giáo trình xử lý ảnh”, Đại Học Thái Nguyên, Nxb KH&KT, 2008.
[2]Nhóm tác giả: Trần Thanh Việt, Trần Công Chiến, Huỳnh Cao Tuấn, Nguyễn Hữu Nam, Đỗ Năng Toàn, Trần Hành, Nghiên cứu khoa học:“Một Kỹ Thuật Phát Hiện, Bám Sát Đối Tượng Và Ứng Dụng”,2010.
TÀI LIỆU TIẾNG ANH
[3]Andrew Kirillov, Software Developer (4/2007), “Motion Detection Algorithms”
[4]Badatosh Chanda, Dwijesh Dutta Majumder, “Digital Image Processing and Analysis”, Prentice Hall of India, 2001, pp. 10-17
[5]Hampapur, A. , Jain, R. , Weymouth, T. , “Digital Video Segmentation”, Proc. ACM Multimedia 94, San Francisco CA, 1994, pp. 357 – 364.
[6]Jyrpi Korki - Anttila (2002), “Automatic color enhancement and sence change detection of digital video”, Dept of Automation and Systems, Lab of Media Technology, Hensiki University of Technology, pp. 7-45.
[7]Shahraray B(1995), “Scene Change Detection and Content-Based Sampling of Video Sequences”, Digital Video Compression: Algorithms and Technologies, A. Rodriguez, R. Safranek, E. Delp, Editors, Proc. SPIE 2419, pp. 2–13.
[8]Xiong Wei, John C. Lee, Dixon M. Ip(1998), Net comparison: “a fast and effective method for classifying image sequences”, SPIE Conf. Storage and Retrieval for Image and Video Databases III, Proceedings, San Jose, CA, pp. 318 – 328.
[9]XiaowenLiu, CharlesB.Owen, FilliaS.Makedon(1995), “Automatic Video Pause Detection Filter” Dartmouth College Computer Science Technical Report PCS, pp 97-307.