Một hướng tiếp cận khác cho việc phân loại và phát hiện chuyển cảnh là sự phát hiện sự xuất hiện các cạnh (biên cường độ) trong một khung hình, chúng cách các cạnh trong khung hình trước một khoảng nhất định. Kỹ thuật này không chỉ phát hiện mà còn có thể phân loại được các loại chuyển cảnh: cắt cứng, chồng mờ, fade, wipe. Phương pháp này tỏ ra chính xác hơn phương pháp dựa vào biểu đồ và độ nhạy với chuyển động thấp hơn nhiều so với gam màu.
Zabih, Miller và Mai không so sánh biểu đồ màu, gam màu. Thuật toán của họ dựa trên kỹ thuật phát hiện cạnh. Họ căn chỉnh các khung hình để giảm các tác động của sự di chuyển camera và so sánh số lượng vị trí các cạnh trong các ảnh đã phát hiện cạnh. Tỉ lệ phần trăm của các cạnh vào và ra giữa hai khung hình liên tiếp được tính toán. Biên của shot được phát hiện bằng cách tìm tỷ lệ phần trăm thay đổi cạnh lớn.
Kết luận chương:
Nội dung chính của chương trình bày các kỹ thuật trừ ảnh được trình bày chi tiết từ cơ bản đến nâng cao. Các kỹ thuật được trình bày một cách cụ thể, chứng minh lý thuyết một cách rõ ràng và chặt chẽ, kèm theo các vị dụ minh hoạ làm rõ thêm các vấn đề liên quan. Từ đó đưa ra hướng giải quyết bài toán chuyển động nhằm xây dựng ứng dụng phát hiện đột nhập dựa trên kỹ thuật trừ ảnh được xây dựng ở trong chương sau.
Chương 3: CHƯƠNG TRÌNH ỨNG DỤNG PHÁT HIỆN ĐỘT NHẬP
Dựa vào lý thuyết chương 1 và chương 2 để áp dụng vào chương 3 xây dựng chương trình ứng dụng phát hiện đột nhập. Bao gồm:
- Phân tích bài toán phát hiện đối tượng đột nhập.
- Trình bày kỹ thuật bắt giữ hình ảnh qua camera.
- Giới thiệu các hàm và lớp chính được sử dụng trong chương trình.
- Trình bày chức năng và cách sử dụng.
3.1 Phân tích yêu cầu bài toán
Như luận văn đã đề cập ở trên, bài toán phát hiện đối tượng chuyển động là một trong những bài toán quan trọng và then chốt trong lĩnh vực giám sát tự động – giám sát an ninh – chống xâm nhập . Yêu cầu của bài toán đặ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, v.v Tại các vị trí này nền hầu như là không thay đổi. Do đó ta có thể áp dụng kỹ thuật trừ ảnh để phát hiện ra có đối tượng chuyển động trong khung hình hay không.
Để đơn giản ta sử dụng kỹ thuật trừ điểm ảnh. Kỹ thuật này nhằm tìm ra sự sai khác giữa hai ảnh. Trên cở sở phân tích yêu cầu của bài toán, luận văn đưa ra giải được đề xuất sau đây.
Ý tưởng của thuật giải là lấy hình ảnh trực tiếp từ camera trong mọi khoảng thời gian (xem nó như là ảnh hiện tại) và so sánh nó với ảnh trước đó bằng kỹ thuật trừ điểm ảnh. Nếu tìm thấy sự sai khác lớn giữa chúng thì ta sẽ lưu lại hai ảnh này. Ngược lại, giải phóng bộ nhớ mà ảnh cũ đang chiếm giữ và xem ảnh mới nhận được là ảnh hiện tại.
Ta xây dựng sơ đồ giải thuật như sau:
Bước 1: Đầu tiên ảnh chụp được từ webcam được lưu vào biến old.
Bước 2: Tiếp theo, một ảnh khác lấy từ webcam trong khoảng thời gian liền sau đó được lưu vào biến cur. So sánh cur và old bằng cách so sánh màu của mỗi điểm ảnh. Nếu sự sai khác lớn hơn một ngưỡng nào đó (tùy theo chất lượng của camera và ánh sáng hệ thống mà các ngưỡng có thể khác nhau) thì chúng ta sẽ đưa ra cảnh báo đồng thời lưu lại hai ảnh này.
Bước 3: Cuối cùng gán old = cur và quay trở lại bước 2.
Nguồn: Từ nghiên cứu của tác giả
Hình 3.1 Lưu đồ giải thuật 3.2 Kỹ thuật bắt giữ hình ảnh qua camera
Môi trường Windows đã cung cấp cho ta hai cách lập trình với video:
Cách thứ nhất dùng VFW (Video For Windows) API. VFW API hỗ trợ cho quá trình bắt giữ (capture) video từ webcam.
Cách thứ hai dùng lớp AVICap của Windows.
Sau đây luận văn sẽ tìm hiểu lớp AVICap và ứng dụng xây dựng phần mềm giải Bắt đầu Old=Ảnh chụp hiện tại difference=old-cur Cur=Ảnh chụp liền sau difference>=96
Lưu ảnh ở biến old và cur ra ngoài Yes Yes Kết Thúc Old=cur Dừng quan sát No No
quyết bài toán phát hiện đột nhập.
3.2.1 Lớp AVICap
AVICap cung cấp cách tiếp cận dựa trên thông điệp đơn giản, cho phép chúng ta truy cập, điều khiển luồng dữ liệu audio, video. Một ứng dụng xây dựng trên AVICap có một số khả năng như:
Thu dữ liệu audio, video vào một file có đuôi mở rộng là avi
Kết nối và hủy kết nối với các thiết bị vào trong thời gian thực thi
Xem trực tiếp dữ liệu video từ thiết bị đầu vào theo phương pháp preview hoặc overlay
Chỉ định tốc độ thu dữ liệu
Hiển thị các dialogbox cho phép người sử dụng điều khiển dữ liệu video đầu vào
Sao chép các hình ảnh và palette lên clipboard
Thu một ảnh đơn và lưu dưới dạng DIB
AVICap hỗ trợ các khả năng thu dữ liệu dưới dạng một ảnh tĩnh đơn hay theo dạng stream với nhiều frame ảnh. Các frame ảnh có thể cách nhau một khoảng thời gian xác định hay tùy ý. Việc thu các stream ảnh cũng có thể không cần lưu trên đĩa mà có thể được sử dụng trực tiếp từ buffer trên bộ nhớ, điều này cho phép lập trình viên mềm dẻo trong việc xử lý trong các ứng dụng khác nhau. Ngoài ra lớp AVICap cho phép ứng dụng chỉ định các hàm callback được sử dụng trong quá trình bắt giữ. Các hàm trong lớp AVICap:
Status Callback: được gọi khi có sự thay đổi trạng thái của quá trình thu video
Error Callback: được gọi khi có lỗi xảy ra trong quá trình thu video
Frame Callback: được gọi trước khi một frame ảnh được preview
Video Stream Callback: được gọi khi thu được các frame ảnh trong quá trình streaming video
Audio Stream Callback: được gọi khi dữ liệu audio được ghi đầy trong buffer
3.2.2 Quy trình xây dựng ứng dụng trên lớp AVICap:
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