Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
2,22 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC QUY NHƠN TRƢƠNG MINH THƢƠNG NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN ĐỐI TƢỢNG CHUYỂN ĐỘNG TỪ CAMERA VÀ ỨNG DỤNG GIÁM SÁT TỰ ĐỘNG TRONG SIÊU THỊ Chuyên ngành : Khoa học máy tính Mã số : 8480101 Ngƣời hƣớng dẫn: TS Lê Thị Kim Nga e LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu riêng Các số liệu, kết nêu luận văn trung thực có nguồn gốc rõ ràng Quy Nhơn, ngày 26 tháng 07 năm 2019 Học viên Trƣơng Minh Thƣơng e LỜI CẢM ƠN Trƣớc hết em xin đƣợc bày tỏ lòng biết ơn sâu sắc cô giáo hƣớng dẫn TS Lê Thị Kim Nga, Khoa Công nghệ thông tin – Trƣờng Đại học Quy Nhơn tận tình giúp đỡ, hƣớng dẫn em thời gian vừa qua dành nhiều thời gian quý báu để giúp em hoàn thành đề tài luận văn đƣợc giao Em xin chân thành cảm ơn cô Em xin gửi lời cảm ơn đến Thầy cô giáo Khoa Công nghệ thông tin, trƣờng Đại học Quy Nhơn giảng dạy em suốt quãng thời gian qua, cung cấp cho chúng em kiến thức chuyên môn cần thiết quý báu giúp chúng em hiểu rõ lĩnh vực nghiên cứu để hoàn thành đề tài luận văn đƣợc giao Cuối cùng, em xin cảm ơn gia đình bạn bè động viên cổ vũ, đóng góp ý kiến cho em suốt trình học nhƣ làm luận văn tốt nghiệp, giúp em hoàn thành đề tài luận văn thời hạn Quy Nhơn, ngày 26 tháng 07 năm 2019 Học viên Trƣơng Minh Thƣơng e MỤC LỤC Trang LỜI CAM ĐOAN LỜI CẢM ƠN DANH MỤC CÁC HÌNH MỞ ĐẦU 1 Lý chọn đề tài: Tổng quan tình hình nghiên cứu đề tài: Mục đích nhiệm vụ nghiên cứu: Đối tƣợng phạm vi nghiên cứu: Phƣơng pháp nghiên cứu: CHƢƠNG TỔNG QUAN VỀ BÀI TOÁN PHÁT HIỆN ĐỐI TƢỢNG CHUYỂN ĐỘNG 1.1 Khái quát xử lý ảnh 1.1.1 Xử lý ảnh gì? 1.1.2 Một số vấn đề xử lý ảnh 1.1.3 Một số ứng dụng xử lý ảnh 1.2 Vấn đề xử lý video 1.2.1 Sơ lƣợc lịch sử video 1.2.2 Một số khái niệm 1.2.3 Một số vấn đề xử lý video 1.3 Bài toán phát đối tƣợng chuyển động 1.4 Hệ thống giám sát đối tƣợng toán phát đối tƣợng chuyển động 10 1.4.1 Lịch sử phát triển hệ thống giám sát đối tƣợng 11 1.4.2 Các thành phần xây dựng hệ thống giám sát đối tƣợng 13 1.5 Kết luận chƣơng 14 e CHƢƠNG KỸ THUẬT PHÁT HIỆN ĐỐI TƢỢNG CHUYỂN ĐỘNG 15 2.1 Kỹ thuật trừ ảnh 15 2.1.1 Trừ ảnh dựa vào điểm ảnh 16 2.1.2 Trừ ảnh dựa vào khối 17 2.1.3 Trừ ảnh dựa vào biểu đồ 19 2.1.4 Trừ ảnh dựa vào thống kê 24 2.1.5 Trừ ảnh dựa vào đặc trƣng 25 2.1.6 Kỹ thuật trừ 26 2.2 Hậu xử lý với phép tốn hình thái 32 2.2.1 Phần tử cấu trúc 33 2.2.2 Phép toán giãn nở 34 2.2.3 Phép toán co 35 2.2.4 Phép mở 36 2.2.5 Phép đóng 36 2.3 Kết luận chƣơng 37 CHƢƠNG ỨNG DỤNG PHÁT HIỆN ĐỔI TƢỢNG CHUYỂN ĐỘNG TRONG GIÁM SÁT TẠI SIÊU THỊ 38 3.1 Mơ tả tốn 38 3.1.1 Phát biểu toán 38 3.1.2 Phân tích u cầu tốn trình bày giải thuật 39 3.2 Thử nghiệm đánh giá 41 3.2.1 Chƣơng trình hồn chỉnh 41 3.2.2 Kết thử nghiệm thực tế 42 3.2.3 Điều kiện ràng buộc chƣơng trình 44 3.2.4 Đánh giá 44 3.3 Kết luận chƣơng 45 e KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 46 Kết luận 46 1.1 Về mặt lý thuyết 46 1.2 Về mặt thực tiễn 46 Hạn chế 46 Hƣớng phát triển 47 DANH MỤC TÀI LIỆU THAM KHẢO 48 PHỤ LỤC QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN (bản sao) e DANG MỤC BẢNG, BIỂU, SƠ ĐỒ, HÌNH VẼ Trang Hình 1.1 Q trình xử lý ảnh Hình 1.2 Các bƣớc hệ thống xử lý ảnh Hình 1.3 Mơ tả khung hình Hình 1.4 Các khối xử lý toán phát đối tƣợng 10 Hình 1.5 Phịng điều khiển hệ thống giám sát đĩa từ truyền thống 12 Hình 1.6 Phòng điều khiển hệ thống giám sát đại 13 Hình 1.7 Mơ hình hệ thống giám sát đối tƣợng 14 Hình 2.1 Các cửa sổ sở thuật toán 19 Hình 2.2 So sánh biểu đồ hai ảnh 21 Hình 2.3 Mẫu vector cho di chuyển camera 25 Hình 2.4 Quy trình trừ 26 Hình 2.5 Ví dụ phần tử cấu trúc 33 Hình 2.6 Ví dụ phép giãn nở 35 Hình 2.7 Ví dụ phép co 35 Hình 2.8 Ví dụ phép mở 36 Hình 2.9 Ví dụ phép đóng 36 Hình 3.1: Kết phát đối tƣợng chuyển động 39 Hình 3.2: Sơ đồ thực chƣơng trình 40 Hình 3.3 Cách truyền video vào chƣơng trình thử nghiệm 42 Hình 3.4 Kết chƣơng trình với Video 01 43 Hình 3.5 Kết chƣơng trình với Video 02 44 e MỞ ĐẦU Lý chọn đề tài: Ngày nay, Sự phát triển công nghệ thông tin xâm nhập vào hầu hết mặt đời sống xã hội với ứng dụng rộng rãi hỗ trợ cho ngƣời nhiều lĩnh vực, có lĩnh vực giám sát, an ninh Hiện nay, thơng tin hình ảnh đóng vai trị quan trọng trao đổi thơng tin, phần lớn thơng tin mà ngƣời thu nhận đƣợc thông qua thị giác Trong lĩnh vực cơng nghệ thơng tin lĩnh vực giám sát tự động thu hút đƣợc quan tâm nhóm nghiên cứu ngồi nƣớc Giám sát tự động hƣớng đƣợc nghiên cứu phát triển lĩnh vực nhận dạng xử lý ảnh tạo cách tiếp cận cho phần mềm thiết kế chuyên dụng cho thiết bị giám sát tự động Việc phát đối tƣợng chuyển động camera nhờ kỹ thuật xử lý ảnh đoán nhận số hành vi đối tƣợng việc làm có ý nghĩa khoa học thực tiễn Ở nƣớc ta nay, lĩnh vực giám sát tự động có bƣớc phát triển đáng kể Tuy nhiên, lĩnh vực siêu thị dựa vào phần cứng phân tích giám sát ngƣời Việc giải vấn đề theo hƣớng phần mềm đƣợc nghiên cứu phát triển Do em chọn đề tài: “Nghiên cứu số kỹ thuật phát đối tượng chuyển động từ camera ứng dụng giám sát tự động siêu thị” nhằm nghiên cứu ứng dụng phát đối tƣợng khách hàng gian hàng siêu thị Tổng quan tình hình nghiên cứu đề tài: Vấn đề phát đối tƣợng đƣợc nghiên cứu có nhiều ứng dụng sống Các đối tƣợng đƣợc phát nhờ thông tin frame ảnh Có nhiều hƣớng tiếp cận để giải vấn đề e Việc lựa chọn phƣơng pháp áp dụng phải dựa vào tình cụ thể, trƣờng hợp có ảnh khơng thay đổi việc phát đối tƣợng chuyển động phƣơng pháp trừ Hƣớng giải xây dựng mơ hình nền, sau sử dụng mơ hình với frame để rút đƣợc foreground chuyển động Để tiếp cận cần phải xây dựng đƣợc mơ hình background Trong luận văn này, Thuật toán trừ xác định mức xám ảnh Video từ camera tĩnh, sau khởi tạo tham khảo với frame Video đầu vào Sau đó, thực trừ giá trị cƣờng độ điểm ảnh ảnh thời cho giá trị tƣơng ứng ảnh tham khảo Mục đích nhiệm vụ nghiên cứu: Nghiên cứu sở lý thuyết, sơ đồ thuật toán, hoạt động số kỹ thuật phát đối tƣợng chuyển động từ camera, sở áp dụng thử nghiệm với liệu video thu đƣợc từ hệ thống camera giám sát siêu thị Đối tƣợng phạm vi nghiên cứu: Đối tượng: 4.1 Nghiên cứu kỹ thuật xử lý ảnh video phục vụ phát đối tƣợng chuyển động từ camera Nghiên cứu toán phát đối tƣợng chuyển động Các cơng trình nghiên cứu phát đối tƣợng chuyển động Các thuật toán, phƣơng pháp áp dụng vấn đề 4.2 Phạm vi: Phạm vi nghiên cứu với liệu video thu từ nguồn camera giám sát, cụ thể từ hệ thống camera an ninh siêu thị MM Mega Market Quy Nhơn Phƣơng pháp nghiên cứu: Phƣơng pháp nghiên cứu đề tài lý thuyết kết hợp với thực nghiệm e Bước 1: Sƣu tập tài liệu liên quan Bước 2: Nghiên cứu lý thuyết xử lý ảnh Bước 3: Nghiên cứu kỹ thuật, thuật toán phát đối tƣợng chuyển động camera Bước 4: Tìm hiểu tốn phát đối tƣợng chuyển động Bước 5: Xây dựng chƣơng trình thực nghiệm Bước 6: Đánh giá hiệu chỉnh thuật tốn, chƣơng trình e void getClusterForBlob(unsigned int blobPos, CvID *close, unsigned int nBlobs, unsigned int nTracks, CvBlobs const &blobs, CvTracks const &tracks, list &bb, list &tt) { for (unsigned int j=0; j1) { getClusterForTrack(j, close, nBlobs, nTracks, blobs, tracks, bb, tt); } } } } void getClusterForTrack(unsigned int trackPos, CvID *close, unsigned int e nBlobs, unsigned int nTracks, CvBlobs const &blobs, CvTracks const &tracks, list &bb, list &tt) { for (unsigned int i=0; i1) { getClusterForBlob(i, close, nBlobs, nTracks, blobs, tracks, bb, tt); } } } } void cvUpdateTracks(CvBlobs const &blobs, CvTracks &tracks, const double thDistance, const unsigned int thInactive, const unsigned int thActive, e IplImage* bgr, double colorThres) { CV_FUNCNAME("cvUpdateTracks"); CV_BEGIN ; unsigned int nBlobs = blobs.size(); unsigned int nTracks = tracks.size(); CvID *close = new unsigned int[(nBlobs+2)*(nTracks+2)]; try { // Inicialization: unsigned int i=0; for (CvBlobs::const_iterator it = blobs.begin(); it!=blobs.end(); ++it, i++) { AB(i) = 0; IB(i) = it->second->label; } CvID maxTrackID = 0; unsigned int j=0; for (CvTracks::const_iterator jt = tracks.begin(); jt!=tracks.end(); ++jt, j++) { AT(j) = 0; e IT(j) = jt->second->id; if (jt->second->id > maxTrackID) maxTrackID = jt->second->id; } // Proximity matrix calculation and "used blob" list inicialization: for (i=0; imaxy = blob->maxy; e track->centroid = blob->centroid; track->lifetime = 0; track->active = 0; track->inactive = 0; track->bCounted = false; track->v.x = 0; track->v.y = 0; saStartCamTrack(track, bgr); track->meanColor = blob->meanColor; tracks.insert(CvIDTrack(maxTrackID, track)); } } // Clustering for (j=0; jmaxx-t->minx)*(t->maxy-t>miny); if (a>area) { area = a; track = t; } } // Select blob CvBlob *blob; area = 0; //cout area) { area = b->area; blob = b; } } //cout minx; track->miny = blob->miny; track->maxx = blob->maxx; track->maxy = blob->maxy; track->v.x = blob->centroid.x - track>centroid.x; track->v.y = blob->centroid.y - track>centroid.y; e track->centroid = blob->centroid; if (track->inactive) track->active = 0; track->inactive = 0; // Others to inactive for (list::const_iterator it=tt.begin(); it!=tt.end(); ++it) { CvTrack *t = *it; if (t!=track) { //cout label = 0; } } } } for (CvTracks::iterator jt=tracks.begin(); jt!=tracks.end();) if ((jt->second->inactive>=thInactive)|| e ((jt->second->inactive)&&(thActive)&& (jt->second->activesecond; tracks.erase(jt++); } else { jt->second->lifetime++; if (!jt->second->inactive) jt->second->active++; ++jt; } } catch ( ) { delete[] close; throw; // TODO: OpenCV style } delete[] close; CV_END ; } CvFont *defaultFont = NULL; e void cvRenderTracks(CvTracks const tracks, IplImage *imgSource, IplImage *imgDest, unsigned short mode, CvFont *font) { CV_FUNCNAME("cvRenderTracks"); CV_BEGIN ; CV_ASSERT(imgDest&&(imgDest->depth==IPL_DEPTH_8U)&& (imgDest->nChannels==3)); if ((mode&CV_TRACK_RENDER_ID)&&(!font)) { if (!defaultFont) { font = defaultFont = new CvFont; cvInitFont(font, CV_FONT_HERSHEY_DUPLEX, 0.5, 0.5, 0, 1); } else font = defaultFont; } if (mode) { for (CvTracks::const_iterator it=tracks.begin(); it!=tracks.end(); ++it) { if (mode&CV_TRACK_RENDER_ID) if (!it->second->inactive) e { stringstream buffer; buffer first; cvPutText(imgDest, buffer.str().c_str(), cvPoint((int)it->second->centroid.x, (int)it->second->centroid.y), font, CV_RGB(0.,255.,0.)); } if (mode&CV_TRACK_RENDER_BOUNDING_BOX) if (it->second->inactive) cvRectangle(imgDest, cvPoint(it->second->minx, it->second->miny), cvPoint(it->second->maxx-1, it->second->maxy-1), CV_RGB(0., 0., 50.)); else cvRectangle(imgDest, cvPoint(it>second->minx, it->second->miny), cvPoint(it->second->maxx-1, it>second->maxy-1), CV_RGB(0., 0., 255.)); if (mode&CV_TRACK_RENDER_TO_LOG) { clog id second->inactive) clog inactive