Hiện nay, có rất nhiều phương pháp detect motion trong video. Nhưng hầu hết chúng đều có chung một phương pháp cơ sở là việc so sánh giữa frame hiện tại với một hoặc các frame trước đó
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THƠNG PHƯƠNG PHÁP LUẬN SÁNG TẠO KHOA HỌC SỬ DỤNG CÁC PHƯƠNG PHÁP LUẬN SÁNG TẠO ĐỂ GIẢI QUYẾT BÀI TOÁN MOTION DETECT Giảng viên hướng dẫn GS,TS Hoàng Văn Kiếm Sinh viên Nguyễn Hoài Phương - 06520356 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 TỔNG QUAN Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cơ ng Ng hệ Hiện nay, có nhiều phương pháp detect motion video Nhưng hầu hết chúng có chung phương pháp sở việc so sánh frame với frame trước Nói đơn giản làm việc với ảnh số, vi phải áp dụng số kỹ thuật image processing để thực vấn đề Để tiếp cận dễ dàng vấn đề viết, ta vào tìm hiểu khái niệm có nhiều diểm tương đồng với motion detect, phương pháp nén video Một file video gồm phần chính, hình ảnh âm Ở cần quan tâm đến yếu tố hình ảnh Chẳng hạn, với cách lưu trữ video theo chuẩn NTSC: giây së tương ứng 30 frame Trong trình hiển thị, frame xếp chồng lên với tốc độ nhanh, ta có cảm giác đối tượng frame chuyển động Nói vậy, ta cần phải quan tâm đến vấn đề lưu trữ frame Nếu lưu trữ cách thông thường theo frame, ta lấy ví dụ chẳng hạn frame có dung lượng 10 Kb để lưu trữ giây ta đến Mb Dung lượng cần để lưu trữ q lớn, khái niệm nén video đời Nhận thấy scene có số thành phần khơng thay đổi suốt q trình diễn scene Vi dẫn đến ý tưởng ta tách thành phần khơng đổi thành frame chung, gọi “background” Tại frame lại scene ta cần lưu trữ đối tượng lại, hay gọi foreground Thao tác giảm bớt việc lưu trữ “background” lập lại frame Nhờ mà dung lượng lưu trữ giảm đáng kể Từ ý tưởng phương pháp nén video, ta có ý niệm tổng quát để xây dựng phương pháp detect motion phần lại 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 CÁC PHƯƠNG PHÁP SỬ DỤNG NGUYÊN TẮC PHÂN NHỎ Chia nhỏ đối tượng thành thành phần độc lập Tăng mức độ phân nhỏ đối tượng Bài toán detect motion phân thành nhiều vấn đề nhỏ, với vấn đề nhỏ có phương pháp riêng để giải chúng Các phương pháp dùng sau Một chương trình detect mộtion hiểu hay tiếp cận cách đơn giản để detect đối tượng có thay đổi frame Để thực điều này, ta sử dụng số phương pháp: • Phương pháp tách background, cập nhật background • Phương pháp tách đối tượng (foreground) từ frame xét background • Phương pháp lấy ngưỡng (threshold) để loại bỏ nhiễu • Phương pháp erosion dilatation khử nhiễu • Và số phương pháp khác để tối ưu tốc độ xử lí chương trình Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Trước tiên ta cần xem xét vấn đề để cải thiện tốc độ xử lý chương trình, đồng thời phải tiếp cận phương pháp lấy ngưỡng Một frame hay ảnh có nhiều đặc trưng, chẳng hạn đặc trưng không gian pixel, đặc trưng màu sắc, texture hay shape Để áp dụng phương pháp lấy ngưỡng, ta cần phải thực phép so sánh với đặc trưng Mà màu sắc yếu tố vô quan trọng Tuy nhiên, ảnh số lưu trữ không gian màu RGB với pixel lưu trữ ba giá trị kênh màu rời rạc gồm 256 mức Chính vậy, cần phải biến đổi giá trị màu dải màu (hay kênh màu) Khơng gian màu đáp ứng yêu cầu grayscale NGUYÊN TẮC TÁCH KHỎI Tách phần gây phiền phức (tính chất gây phiền phức) hay ngược lại, tách phần cần thiết (tính chất cần thiết) khỏi đối tượng Ở ta tách bỏ màu sắc không cần thiết lại yếu tố màu cần thiết phương pháp lọc grayscale GRAYSCALE Trong hầu hết q trình xử lí ảnh, chủ yếu quan tâm đến cấu trúc ảnh bỏ qua ảnh hưởng yếu tố màu sắc Do bước chuyển từ ảnh màu thành ảnh xám công đoạn phổ biến qua trình xử lí ảnh làm tăng tốc độ xử lí giảm mức độ phức tạp thuật tốn ảnh Chúng ta có cơng thức chuyển thông số giá trị màu pixel thành mức xám tương ứng sau: 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 G = α.CR+ β.CG+ δ.CB Trong giá trị CR, CG, CB màu đỏ, xanh xanh biển pixel màu Các hệ số α, β, δ giá trị thay đổi tùy thuộc hệ màu Với hệ màu NTSC α = 0.29890, β = 0.58662, δ = 0.11448 Ta được: Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ G = 0.29890CR + 0.58662.CG + 0.ll448.CB PHƯƠNG PHÁP SAI BIỆT FRAME Để định nghĩa phương pháp này, trước tiên ta làm quen với cụm từ “phương pháp trừ ảnh nền” (background subtraction) Đây phương pháp sử dụng rộng rãi để nhận diện đối tượng chuyển động video Để thực việc trừ ảnh ta phải học mô hình ảnh Sau mơ hình ảnh dùng để so sánh với ảnh tại, loại bỏ phần ảnh biết Các đối tượng sau trừ xem (foreground) Các đối tượng đối tượng chuyển động (moving object, mộtion) Một phương pháp trừ ảnh phổ biến phương pháp sai biệt frame Phương pháp trừ ảnh đơn giản trừ frame với frame khác, sau gán nhãn vùng khác biệt ‘đủ lớn’ phần ảnh không phài (foreground) Lý chi gán nhãn cho vùng khác biệt đủ lớn (threshold) để loại trừ trường hợp khác biệt nhiễu PHƯƠNG PHÁP NỀN TRUNG BÌNH Tuy nhiên, để tăng hiệu quả, giữ lại thơng tin thống kê trung bình khác biệt trung bình pixel cảnh Đó cách làm phương pháp cải tiến: phương pháp trung bình Nguyên tắc Về bản, phương pháp ảnh trung bình học giá trị trung bình độ lệch chuẩn pixel để xây dựng mơ hình ảnh trung bình Sau đó, ta sử dụng mô 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 hình ảnh học để tách ảnh làm phần (background) đối tượng (foreground) Đối tượng khơng phải đối tượng chuyển động Nhận xét phương pháp ảnh trung bình Kh oa Mạ ng Má y Tín h & Tr uy ền Th ơn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Đây phương pháp đơn giản để học ảnh phân tách ành làm phần không nên Tuy nhiên, phương pháp chi hiệu trường hợp ảnh có nội dung cảnh khơng chứa thành phần có chuyển động (vi dụ phất phơ, hay xanh có rung rinh); đồng thời độ sáng tương đối khơng thay đổi (các ảnh tịnh nhà) Ví dụ phương pháp sai biệt frame Cửa sổ : frame Cửa sổ : frame trước Cửa sổ : ảnh sai biệt frame frame trước (lấy frame trừ cho frame trước đó) 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 Cửa sổ : loại bỏ bớt nhiễu giữ lại sai biệt “đủ lớn” MORPHOLOGY OPERATION Sử dụng ảnh camera, ta không tránh khỏi trường hợp có “nhiễu” (nhiễu mơi trường, nhiệt, khơng khí ) vùng foreground frame tách xảy tượng bị thừa ngồi khuyết số pixel Điều làm cho việc lấy ngưỡng thiếu xác bị sai lệch Vì ta cần tìm phương pháp để “cắt đi” pixel thừa “lấp đầy” pixel khuyết Bằng phương pháp Morphology ta thực điều đó; cụ thể với phương pháp Erosion, ta thực thao tác cắt với phương pháp Dilatation, ta “lấp” chỗ khuyết Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ AForge.NET hỗ trợ đối tượng Erosion, Dilatation, Openning Và Closing để thực việc khử nhiễu (ImaginglFilterslMorphology/* Cs) Erosion phương pháp làm co biên đối tượng pixel để loại bỏ pixel thừa; hay nói cách khác, pixel foreground mà thuộc background chuyển thành pixel background (hinh b) Dilatation thi ngược lại, làm giãn biên đối tượng thêm pixel, dựa vào mà nhũng lỗ khuyết lấp đầy; hay nói cách khác pixel background thuộc foreground chuyển thành pixel foreground Thao tác Erosion Dilatation có khuyết điểm, co hay giãn biên pixel, làm cho đối tượng gốc bị co lại hay giãn từ độ lớn đối tượng khơng cịn xác Chính mà phải xuất thêm hai phương pháp: Openning Closing để lấy lại độ lớn xác đối tượng Đây hai phương pháp sử dụng liên tiếp hai phương pháp cũ Openning dùng Erosion để cắt bớt pixel thừa trước dùng Dilatation để làm giãn đối tượng độ lớn cũ Còn Closing dùng Dilatation để làm đầy pixel trước dùng Erosion để co đối tượng độ lớn 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 cũ Nếu kết hợp hai phương pháp này, ta đồng thời lọai bỏ pixel thừa lấp đầy pixel khuyết Kết có xác nhiên thao tác lặp lại tính tốn lớn dẫn đến làm chậm hệ thống, nên tùy theo toán mà ta áp dụng bốn phương pháp EDGE DETECTION Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Trong phần cài đặt AForge.NET xét tới đây, cần thực thao tác tách biên cho vùng pixel (region) trả nhằm xác định đối tượng Có nhiều phương pháp hỗ trỡ cho thao tác nay, thông thường ta cần áp dụng mã xích, mã crack để dò biên dủ Tuy nhiên cần ý đối tượng nhận thường cụm pixel liền kề nên ta áp dụng số phương pháp thuộc Edge Detection để dò biên AForge.NET cung cấp cho lọc Edge để sử dụng phương pháp Edge Detection Khái niệm: Ta thấy hình ảnh khơng phải hàm liên tục a(x, y) theo cac biến tọa độ, mà hàm rời rạc a[m, n] với biến tọa độ nguyên Vì để lấy cảnh quan trọng ta cần phải sử dụng việc lấy đạo hàm Với lọc Edge ta có kĩ thuật phổ biến: - Bộ lọc Sobel - Bộ lọc Difference of Gauss - Bộ lọc Laplace - Bộ lọc Canny Sobel Bộ lọc sobel sử dụng mặt nạ để xấp xỉ đạo hàm bậc Nói cách khác lọc sobel sử dụng gradient theo hướng (từ thấp đến cao từ cao đến thấp) điểm tâm lân cận tính theo lọc sobel Bộ lọc có kích cỡ ma trận 3x3 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 Khi muốn lấy cạnh ảnh nguồn ta sử dụng phép nhân ảnh nguồn với ma trận 3x3 ví dụ ta có ảnh nguồn A, Gx, Gy ảnh lọc theo hướng x y Laplace Kh oa Mạ ng Má y Tín h & Tr uy ền Th ơn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Phương pháp vi phân bậc làm việc tốt độ sáng thay đổi rõ nét Khi mức grayscale thay đổi chậm, miền chuyển tiếp trải rộng phương pháp sobel làm việc khơng hiệu Và laplace phương pháp hiệu hơn, laplace phương pháp vi phân bậc Toán tử laplace định nghĩa : Kỹ thuật laplace sử dụng nhiều ma trận khác để xấp xỉ đạo hàm bậc có kiểu ma trân thường dùng: Trong cài đặt thư viện Aforge ta sử dụng ma trận H1 Canny Bộ tác sườn ảnh Canny dựa cặp đạo hàm riêng bậc với việc làm nhiễu Mục để riêng phương pháp tách đường biên phổ biến dùng theo toán tử đạo hàm Như nói phương pháp đạo hàm chịu ảnh hưởng lớn nhiễu Phương pháp đạt hiệu cao xấp xỉ đạo hàm bậc Gauss 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Lấy đạo hàm riêng ta được: Do lọc Gauss tách được, ta thực riêng biệt tích chập theo x y 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 CÀI ĐẶT DỰA TRÊN AFORGE.NET FRAMEWORK Aforge.NET C# framework thiết kế nhằm phục vụ cho nhà phát triển nhà nghiên cứu mảng đề tài tin học : Computer Vision Artificial Intelligent Hỗ trợ trực tiếp lĩnh vực : image processing, neural network, genetic algorithms, machine learning….Framework chia làm mảng : AForge.Imaging : thư viện hỗ trợ xử lí ảnh AForge.Neuro : thư viện hỗ trợ lập trình mạng noron AForge.Genetic : thư viện hỗ trợ lập trình tiến hóa AForge.Vision : thư viện hỗ trợ lập trình thị giác máy tính AForge.MachineLearning : thư viện máy học MODE Mode đơn giản áp dụng phương pháp sai biệt frame trình bày Qua trình xử lý mode gồm bước sau: Ảnh từ camera đưa vào chuyển đổi sang grayscale Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ So sánh khác biệt frame frame trước Kết thúcq trình so sánh ta gán background thành background Rõ ràng ta thấy so sánh ảnh grayscale frame 2, 3, đến frame thứ n – l frame thứ n Những pixel khác biệt đối tượng có chuyển độn g Lưu ý: lần 1, background nên khơng thực q trình xử lý, cuối lần current frame gán thành background vi trình xử lý ta chi thực từ lần trở Với n frame ta lặp lai thao tác xử lý có đụoc n - lần so sánh Khi so sánh khác biệt frame frame trước (background) Ta phải sử dụng lọc sau đây: • Difference • Threshold • Erosion • Merge • ExtractChannel • ReplaceChannel 20/20 Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 Để báo hiệu xảy motion ta cần tính số white pixel (số pixel khác biệt hay foreground); vượt qua ngưỡng đặt sẵn nói frame có đối tượng chuyển động Ngưỡng hữu ích phần cài đặt nâng cao Kh oa Mạ ng Má y Tín h & Tr uy ền Th ơn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Trong hệ màu RGB ta có kênh màu riêng biệt bit nên pixel chứa 256 = 28x3 = 224 bit Vì muốn chuyển từ pixel sang pixel khác ta phải dịch chuyển sang phải 23 bit Nhưng hệ màu grayscale sử dụng bit màu tương ứng với 256 nên muốn chuyển từ pixel sang pixel khác ta cần dịch phải bit Ở mode ta thấy có khuyết điểm sau: đối tượng di chuyển mượt nhận thay đổi nhỏ hai frame kề Vì tồn nhiều đối tượng nhỏ threshold nên khơng thể detect tồn đối tượng chuyển động Việc detect trở nên tồi tệ đối tượng di chuyển chậm, lúc thuật tốn khơng cho kết Bên cạnh chuyện xảy đối tượng frame chuyển động qua nhanh, frame trước thể đến frame thứ hai lại biến mất? Trong trường hợp ta khẳng định đối tượng detect phần bị đi, nhiên trường hợp tốt, chuyện 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 xảy frame sau xuất đối tượng tương tự vị trí trước, ta không detect đối tượng chuyển động Cho nên sau nhận thấy khuyết điểm trên, se có cách tiếp cận khác so sánh frame thời với frame chuỗi ảnh thuộc video Nếu khơng có đối tượng khung ban đầu, việc so sánh frame thời với frame cho ta toàn chuyển động đối tượng mà không phụ thuộc vào tốc độ di chuyển Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Chúng ta lấy frame chuỗi video frame background, ta se so sánh frame thời với background Tuy nhiên phương pháp có khuyết điểm background sau bị thay đổi nhiều (hoặc thay đổi background) Và kết viêc detect khơng xác Nên ta phải sử dụng phương pháp khác di chuyển frame background đến frame thời ước lượng thay đổi background trước frame thời, sau cập nhật lại background Phương pháp cịn gọi lọc MoveTowards, sử dụng mode cài đặt sau 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cơ ng Ng hệ MODE Có cải tiến đáng kể so với mode 1, việc tách background khỏi đối tượng xác định đối tượng Để làm công việc ta sử dụng lọc Difference Threashold phần trước, nhiên cần hỗ trợ lọc MoveTowards để cập nhật background trình tiền xử lý, Và Edges dùng để xác định biên đối tượng sau tách đối tượng khỏi background q trình hậu xử lý Ngồi ra, mode ta cần phải xác để xác định đối tượng nên lọc Erosion mode thay lọc Opening 20/20 Hỗ trợ : Y!M minhu888 Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Tài liệu: Docs.vn Ở mode ta áp dụng lọc MoveTowards cho viêc tách background không giống mode chi so sánh current frame previous frame để tìm thay đổi pixel Với MoveTowards frame frame ta cập nhật liên tục background Nhờ xác định background mà ta dễ dàng tách đối tượng (foreground) di chuyển thông qua lọc Difference Threshold 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 Kh oa Mạ ng Má y Tín h & Tr uy ền Th ơn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ MODE Ở mode ta có khác biệt cho mode Chúng ta áp dụng phiên pixellate frame thời background Thông qua lọc pixellate- ảnh số chia thảnh grid mà cell vng bao gồm tập hợp pixel, dựa vào mà thao tác xử lý sau ta không cần phài sử dụng thao tác dựa giá trị pixel cũ mà ta thực dựa giá trị trung bình cell nhờ mà tốc độ xử lý nhanh nhiều lần giai đọan tiền xử lý thật cần thiết Ví dụ, để áp dụng lọc difference current frame background biết chiều cao chiêu dài 1000 pixel Nêu độ lớn cell pixellate 10x10 Thì số bước tính tốn 100x100 thay cho l000xl000 Giàm 100 lần tính tốn Nhờ pixellate ta phân tách cụ thể chuyển động 20/20 Hỗ trợ : Y!M minhu888 Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Tài liệu: Docs.vn Lưu ý: Nhận thấy với mode trên, sử dụng erosion dilatation sử dụng opening Tại không sử dụng phương pháp opening hay closing để bào toàn độ lớn đối tượng? Vì ta cần nhận biết sai biêt pixel (mode 1) cell pixellate (mode 3) Đó để tiết kiệm thời gian xử lý đồng thời khơng cần độ xác cao nên ta chi áp dụng erosion hay dilatation 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ MODE Ở mode ta sử dụng BlobCounter việc tách biệt đối tượng so vài ảnh Đó ta bỏ qua bước khử nhiễu morphology xác định biên edge detection 20/20 Hỗ trợ : Y!M minhu888 Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Tài liệu: Docs.vn Dựa vào đối tượng BlobCounter tích hợp sẵn lọc co giãn ảnh (erosion, dilatation, ) lọc edge detection ta xác định đối tượng tương tự mode (áp lọc MoveTowards để tách background áp lọc Difference, Threshold) sử dụng BlobCounter làm nhiệm vụ xác định đối tượng, sau xác định giới hạn dưới, trái, phải để đưa rectangle boundary đối tượng đồng thời gán label phân biệt chúng 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 Kh oa Mạ ng Má y Tín h & Tr uy ền Th ôn g– Tr ườ ng Đạ i họ c Cô ng Ng hệ Lưu ý: tham số PixelChanged dùng để xác định motion level sử dụng BlobCounter tính tổng diện tích tất rectangle boundary tổng số pixel khác bit (mode 1) hay tổng số pixel nằm đường bao (contour) đối tượng (mode 2), hay tổng số diện tích cell khác biệt pixellate (mode 3) 20/20 ... Bài toán detect motion phân thành nhiều vấn đề nhỏ, với vấn đề nhỏ có phương pháp riêng để giải chúng Các phương pháp dùng sau Một chương trình detect mộtion hiểu hay tiếp cận cách đơn giản để. .. đáng kể Từ ý tưởng phương pháp nén video, ta có ý niệm tổng quát để xây dựng phương pháp detect motion phần lại 20/20 Tài liệu: Docs.vn Hỗ trợ : Y!M minhu888 CÁC PHƯƠNG PHÁP SỬ DỤNG NGUYÊN TẮC PHÂN... 0.ll448.CB PHƯƠNG PHÁP SAI BIỆT FRAME Để định nghĩa phương pháp này, trước tiên ta làm quen với cụm từ ? ?phương pháp trừ ảnh nền” (background subtraction) Đây phương pháp sử dụng rộng rãi để nhận