Thuật toán Kalman rời rạc

Một phần của tài liệu Nghiên cứu và xây dựng module theo dõi tự động các đối tượng ảnh (Trang 51)

Bộ lọc Kalman dự báo quá trình bằng cách sử dụng một dạng của điều khiển phản hồi: bộ lọc ước lượng trạng thái quá trình tại một thời điểm và nhận phản hồi là phép đo có nhiễu (hình 2-8).

Hình 2-8. Sơ đồ chu trình bộ lọc Kalman [21]

Như vậy, các phương trình bộ lọc Kalman sẽ chia thành hai nhóm: các phương trình cập nhật theo thời gian (time update) và cá phương trình cập nhật phép đo (measurement update). Các phương trình time update tương ứng với chu trình chính, dựa vào trạng thái hiện tại,và ước lượng hiệp phương sai của sai số để tìm ướng lượng hậu nghiệm ở bước tiếp theo. Còn các phương trình measurement

update tương ứng với vòng phản hồi - cập nhật giá trị đo lường mới vào ước lượng

tiên nghiệm để có được ước lượng hậu nghiệm tốt hơn.

Theo hình (1-6), cũng có thể xem các phương trình time update như là các phương trình của bộ dự báo, và các phương trình measurement update là các phương trình của bộ hiệu chỉnh.

Do đó, thuật toán Kalman rời rạc là quy trình lặp gồm hai bước (hình 2-9): 9 Bước 1: Dự đoán (Time Update)

38

Hình 2-9. Sơ đồ hoạt động bộ lọc Kalman [2]

2.5. Gán quan sát - đối tượng

Gán quan sát - đối tượng (object-observation assignment) là quá trình thực hiện đối sánh đặc trưng trích chọn từ các đối tượng ảnh được phát hiện, thông qua một thước đo độ tương tự (similarity measure), nhằm xác định quan sát mà ta nhận được có tương ứng với đối tượng quan tâm hay không. Đặc trưng thường được lựa chọn với mong muốn sao cho một đối tượng có thể dễ dàng phân biệt với các đối tượng khác. Ngoài ra, còn căn cứ vào một số yếu tố như độ phân giải video, môi trường nền, bản chất đối tượng cần xử lý. Mục 1.2.3 trong luận văn đưa ra một số đặc trưng phổ biến gồm màu sắc, đường biên, kết cấu, optical flow.

Trong số những đặc trưng đã nêu, đặc trưng về màu sắc có nhiều ưu điểm vượt trội. Màu sắc dễ dàng được phân biệt qua quan sát của con người. Nó gần như bất biến với thay đổi về hướng di chuyển, sự thay đổi tư thế vận động của đối tượng, bất biến khi xảy ra che khuất một phần của đối tượng. Nó đã được sử dụng rộng rãi trong những ứng dụng xử lý ảnh và video từ trước đến này [9] [31] [33]. Tất nhiên, đặc trưng về màu sắc có nhược điểm là chịu tác động khá nhiều của sự thay đổi ánh sáng. Nhưng thực tế, thật khó tìm được một đặc trưng lý tưởng hoạt

39

động tốt với mọi trường hợp. Vì vậy, đề tài lựa chọn đặc trưng về màu sắc để xây dựng thước đo độ tương tự phục vụ quá trình gán quan sát - đối tượng.

Trong phần trình bày dưới đây, đề tài tập trung mô tả cách biểu diễn đối tượng đơn giản dựa vào màu sắc và mức xám, xuất phát từ đặc trưng về màu sắc, và đưa ra thước đo đánh giá sự sai khác giữa các đối tượng dựa trên việc tính khoảng cách của các phân bố mức xám.

2.5.1. Biểu diễn đối tượng dựa vào màu sắc

Màu sắc là một đặc trưng dễ nhận dạng và bất biến với các phép biến đổi hình học [12] [33]. Vì vậy, màu sắc chính là thước đo cơ bản để so sánh hai đối tượng ảnh. Để so sánh hai đối tượng, người ta biểu diễn mỗi đối tượng bởi một phân bố màu. Các không gian màu có thể sử dụng bao gồm:

9 Không gian màu RGB:

RGB là không gian màu được sử dụng rộng rãi nhất trong lưu trữ và hiển thị ảnh số. RGB tương ứng với 3 thành phần: red, blue, green (hình 2-10). Để giảm sự phụ thuộc vào ánh sáng, các thành phần RGB được chuẩn hóa sao cho tổng R + G + B = 1. Khi chuyển đổi từ ảnh màu RGB sang ảnh xám có thể dùng công thức sau:

grayscale = αR+βG+γB (2-18) với α=0.2980, β=0.587, γ=0.1140.

40

9 Các không gian màu cảm nhận:

Các đặc trưng cảm nhận về màu sắc độ bão hòa và độ sáng của màu không thể biểu diễn trực tiếp thông qua các thành phần R, G, B trong không gian màu RGB. Nhiều biến đổi phi tuyến được đề xuất ánh xạ không gian màu RGB sang các không gian màu cảm nhận, chẳng hạn HSV, HSI, HSL, TSL. Trong đó, HSV là không gian màu được sử dụng phổ biến hơn cả.

Hình 2-11. Mô hình không gian màu HSV

HSV là một chuẩn màu sử dụng ba khái niệm Hue, Staturation, Value để mô tả màu (hình 2-11). Hue: Màu sắc, loại màu như đỏ, xanh lá cây, vàng: phạm vi từ 0 - 360 thường là 0 – 100% trong một số ứng dụng. Saturation: Độ bão hòa, sự cộng hưởng của các màu: phạm vi từ 0 – 100%. Value: Giá trị, mức sáng của màu sắc: giá trị từ 0 – 100%.

9 Không gian màu YCrCb

Không gian màu YCrCb biểu diễn màu sắc bằng độ chói (cường độ sáng) thông qua một thành phần Y được xác định bằng tổng các giá trị R, G, B trong không gian màu RGB, và sắc độ biểu diễn bởi thành phần Cr và Cb xác định dựa trên hiệu giá trị của thành phần Y với các thành phần B và R (hình 2-12).

41

Không gian màu YCrCb làm giảm sự dư thừa trong biểu diễn của không gian màu RGB nên cũng là một lựa chọn tốt cho các quá trình xử lý ảnh.

Hình 2-12. Mô hình không gian màu YCrCb

Và cũng vì lý do này, giải thuật codebook mô hình hóa nền sử dụng không gian màu YCrCb.

2.5.2. Biểu diễn đối tượng dựa vào histogram

Biểu đồ phân bố mức xám, hay lược đồ xám (histogram) thể hiện tần suất xuất hiện mỗi mức xám trong ảnh. Nó cung cấp thông tin về mức xám của ảnh và cho phép phân tích khoảng có phân bố phần lớn mức xám [15]. Histogram cũng là một đặc trưng để so sánh sự khác biệt của hai đối tượng ảnh.

Có thể hình dung đơn giản, histogram trong hệ tọa độ Oxy thì trục hoành biểu diễn N mức xám (tùy theo số bit mã hóa pixel) hay N bins , trục tung biểu diễn số điểm ảnh tương ứng một mức xám.

42

Nếu ảnh sáng, phân bố histogram lệch về phía bên trái, nếu ảnh tối, phân bố

histogram lệch về bên phải so với điểm quy chiếu.

Hình 2-13. Biểu diễn histogram của một tập điểm ảnh [7]

2.5.3. Thước đo độ tương tự

Bằng cách tính toán sự sai khác giữa phân bố mức xám (histogram) của vùng ảnh chứa đối tượng chuyển động và vùng ảnh chứa quan sát, rồi so sánh sự sai khác này với một ngưỡng, chúng ta cũng có thể xác định quan sát đó có tương ứng với đối tượng quan tâm hay không.

Các công thức tính toán độ tương tự của histogram H1 và H2 được G.Bradski,  A.Kaehler tổng kết trong [7]:

9 Correlation :

43

Theo công thức này, dcorrel càng lớn thì hai phân bố càng khớp nhau. Kết quả lý tưởng là 1, kết quả kém nhất là -1 và 0 tức là không có liên hệ.

9 Chi - square :

Chi - square này bắt nguồn từ công thức trong toán xác xuất thống kê do

Karl Pearson phát minh. Kết quả thu được càng thấp thì hai phân bố càng khớp nhau và lý tưởng là 0.

9 Intersection :

Cũng giống như Correlation, giá trị dintersection lớn thể hiện kết quả tốt. Nếu các phân bố được chuẩn hóa về 1, kết quả lý tưởng là 1 và xấu nhất là 0.

9 Bhattacharyya:

Ở công thức Bhattacharyya, giá trị thấp thể hiện kết quả tốt và lý tưởng là 0. Theo G.Bradski và A.Kaehler [7], Correlation và Intersection tính toán nhanh hơn Chi - square và Bhattacharyya nhưng kết quả thường không chính xác bằng. Trong khuôn khổ của đề tài, độ đo Chi-square được sử dụng đối sánh các biểu diễn

histogram của đối tượng nhằm phục vụ quá trình gán quan sát - đối tượng.

(2-21)

(2-22)

44

CHƯƠNG III - THIẾT KẾ VÀ CÀI ĐẶT

Trong chương I và II, đề tài tiến hành tìm hiểu và đề xuất các giải pháp phù hợp cho bài toán theo dõi đối tượng ảnh trong video. Do vậy, nội dung chương III này sẽ đi sâu mô tả quy trình thiết kế và cài đặt module bài toán sử dụng các kỹ

thuật đã lựa chọn.

3.1. Môi trường thiết kế

Module chương trình và các tiện ích được cài đặt trên môi trường Visual Studio.Net 2008 Version 9.0.21022.8 RTM, sử dụng thư viện mã nguồn mở

OpenCV 1.1, cấu hình phần cứng CPU Intel Core2Duo 2.1Ghz, RAM 2GB.

Vì module được xây dựng trên ngôn ngữ C++ nên có thể tiếp tục phát triển trên các hệđiều hành khác nhau (Windows, Linux…).

3.2. OpenCV và các hàm xử lý

OpenCV là một công cụ mạnh, được sử dụng rộng rãi cho những ứng dụng xử lý ảnh và thị giác máy tính [17]. Nó tương thích với thư viện IPL (Intel Image

Processing Library), là thư viện dùng cho các quá trình xử lý cấp thấp (low-level) trên ảnh số của Intel . Vì vậy, bên cạnh việc thực hiện dễ dàng các nhiệm vụ như

nhị phân hóa, lọc ảnh, thống kê ảnh, OpenCV thể hiện ưu thế của mình ở các giải thuật cấp cao (high-level) như kỹ thuật hiệu chỉnh camera(camera calibration), trích chọn đặc trưng (feature extraction), tìm luồng quan học (optical flow), phân tích hình học, tách biên (geometry, contour processing), xây dựng mẫu và bộước lượng (motion templates, estimators), xây dựng ảnh 3D (view morphing), phân đoạn và nhận dạng (histogram, embedded Hidden Markov models, eigen objects).

Trong OpenCV, những dạng dữ liệu cơ bản gồm dạng mảng: IplImage (IPLimage), CvMat (matrix), quy hoạch: CvSeq (deque), CvSet, CvGraph và dữ

45

ảnh: CvPoint (2dpoint), CvSize (width and height). CvTermCriteria (termination

criteria), IplConvKernel (convolution kernel).

Mặt khác, thư viện OpenCV là thư viện mã nguồn mở, nên rất thuận lợi cho việc phát triển các ứng dụng thị giác máy trên PC. Và vì là sản phẩm của Intel, nên nó được tối ưu hóa với kiến trúc vi xử lý của Intel.

Phần tiếp theo trong chương III, song song với việc trình bày quá trình hoạt

động và các thuật toán để phát hiện và theo dõi đối tượng, sẽ giới thiệu một số hàm của thư viện OpenCV được sử dụng trong luận văn.

3.3. Module chương trình

Về cơ bản, để thực hiện theo dõi đối tượng ảnh trong video, trước tiên video

đầu vào, là file video hay thu trực tiếp từ camera cần được tách thành các frame

ảnh. Quá trình xử lí tiếp theo sẽ áp dụng trên từng ảnh một. Do đó, những mô hình thực hiện trong module đều là mô hình làm việc với ảnh.

Khi tiến hành chạy module thiết kế, trước hết chương trình nạp các giá trị cài

đặt cần thiết như ngưỡng học của giải thuật codebook, ngưỡng kích thước để phát hiện đối tượng... Sau đó, chương trình liên tục đọc các frame từ video đầu vào. Nếu kiểm tra không có frame ảnh, chương trình tựđộng thoát ra. Nếu kiểm tra có frame

ảnh thì chương trình sẽ bắt đầu thực hiện các công việc theo thứ tự như sau cho đến khi người sử dụng dừng ứng dụng (hình 3-1):

1) Học và trừ nền theo giải thuật codebook. 2) Phát hiện đối tượng chuyển động.

3) Khởi tạo bộ lọc Kalman và thực hiện các khâu dự báo vị trí của đối tượng, gán quan sát đối tượng và cập nhật thông tin đối tượng.

46 Bắt đầu Đọc frame ảnh từ video Frame ≠NULL Học và trừ nền theo giải thuật Codebook Phát hiện đối tượng chuyển động Dự báo vị trí đối tượng sử dụng Kalman Filter Đối tượng ≠NULL Gán quan sát -đối tượng Cập nhật thông số cho Kalman Filter ESC=NULL Kết thúc Đúng Sai Sai Đúng Đúng Sai Cài đặt thông số  

47

Mặt khác, có thể thấy rằng, module chương trình được thiết kế bằng cách chia ra thành những module nhỏ hơn, nên rất dễ dàng lựa chọn và thay đổi các phần cho phù hợp ứng dụng và nhu cầu cải tiến.

3.4. Học và trừ nền theo giải thuật codebook

Quá trình học và trừ nền theo giải thuật codebook cải tiến của G.Bradski, A.Kaehler [7] áp dụng trong module thiết kế gồm hai pha: pha thứ nhất học nền và pha thứ hai trừ nền (hình 3-2).

3.4.1. Lưu đồ thuật toán

frame video

Chuyển ảnh sang không gian màu YCrCb

frinput ≤frtoLearn

Học nền theo giải thuật codebook với ngưỡng học

learnHigh, learnLow

Mô hình background Đúng

Sai

Trừ nền theo giải thuật codebook với ngưỡng kiểm

tra minMode, maxMode

Lọc bỏ nhiễu Liên kết thành phần liên thông Ảnh foreground   Hình 3-2. Lưu đồ thuật toán học và trừ nền

48

Pha học nền thực hiện một quá trình học trên các ảnh đầu vào. Mục đích là xây dựng mô hình nền sử dụng cho pha trừ nền tiếp theo .

9 Đầu vào: Tâp frame ảnh đầu tiên của video. 9 Đầu ra: Ảnh nền kết quả YCrCb.

9 Thuật toán: Khi có frame ảnh đầu vào, chương trình chuyển frame này từ

không gian màu RGB sang không gian màu YCrCb. Sau đó, chương trình kiểm tra xem số lượng frame đầu vào (frInput) có vượt quá số lượng frame học nền (frtoLearn) hay không. Nếu frInput ≤ frtoLearn, frame ảnh đầu vào

được chuyển vào chu trình học nền theo giải thuật codebook với các thông số

cài đặt: các ngưỡng biên codewords min, max và các ngưỡng học cho mỗi từ

mã learnHigh, learnLow.

Kết thúc pha học nền, những frame ảnh tiếp theo của video được đưa sang pha trừ nền. Mục đích pha này là tìm hiệu giữa frame ảnh video với ảnh nền đã xây dựng trong pha học nền trước đó..

9 Đầu vào: Frame ảnh video và ảnh nền đã xây dựng. 9 Đầu ra: Ảnh foreground hai mức 0 và 255.

9 Thuật toán: Khi frInput > frtoLearn, chương trình áp sẽ thực hiện trừ nền theo giải thuật codebook giữa frame ảnh này và ảnh nền với thông số cài đặt là ngưỡng kiểm tra cho mỗi từ mã minMode, maxMode. Ảnh kết quả thu

được từ phép trừ nền tiếp tục qua hai công đoạn “làm sạch”: lọc bỏ nhiễu và liên kết thành phần liên thông để có ảnh kết quả cuối cùng foreground. Công

đoạn lọc bỏ nhiễu sử dụng phép toán hình thái morphological, cho phép loại

đi những thành phần có kích thước nhỏ, đơn lẻ, không thuộc đối tượng quan tâm. Công đoạn liên kết các thành phần liên thông thực hiện nhóm các pixel lân cận thành một nhóm liên thông tương ứng với một đối tượng nào đó. Chi tiết cụ thể những bước này thêm tại mục 2.3.5.

Ảnh kết quả foreground là ảnh hai mức xám, 0 tương ứng với nền và 255 tương ứng với đối tượng được phát hiện.

49

3.4.2. Các hàm xử lý

9 Hàm chuyển đổi không gian màu:

void cvCvtColor( src, dst, code );

Trong đó :

src : ảnh đầu vào 8-bit, 16-bit, 32 float point.

dst : ảnh đích.

code : mã chuyển đổi CV_<src_color_space>2<dst_color_space> Hàm cvCvtColor chuyển ảnh đầu vào src từ không gian màu src_color_space sang một không gian màu khác dst_color_space. Ảnh kết quả lưu trong dst.

code thực hiện đưa ảnh RGB sang YcrCb là CV_BGR2YcrCb, và đưa

ảnh RGB sang ảnh xám là CV_RGB2GRAY. Đây là hai mã chuyển đổi được sử

dụng chủ yếu trong module chương trình. Những mã cấu trúc khác có thể xem thêm tại [17] và các tài liệu hướng dẫn của OpenCV .

9 Các hàm học nền và trừ nền theo giải thuật codebook:

Hàm xây dựng mô hình nền: model = cvCreateBGCodeBookModel(); Hàm học nền: CVAPI(void) cvBGCodeBookUpdate( model, image); Hàm trừ nền: CVAPI(int) cvBGCodeBookDiff(model,image, fgmask); Trong đó :

model : mô hình nền.

img : ảnh đầu vào YCrCb.

50

Hàm cvCreateBGCodeBookModel() khởi tạo một mô hình nền model với các thông số min, max, learnHigh, learnLow cài đặt cho cấu trúc CvBGCodeBookModel do OpenCV định nghĩa.

Hàm cvBGCodeBookUpdate đưa ảnh imge dạng YCrCb vào chu trình học nền với mô hình nền model.

Hàm cvBGCodeBookDiff trừảnh imge dạng YCrCb và ảnh nền đã xây dựng theo mô hình nền model với các thông số min, max, maxMode, minMode.

9 Hàm liên kết thành phần liên thông:

CVAPI(CvSeq*) cvSegmentFGMask( fgmask, poly1Hull0, perimScale );

Trong đó :

fgmask : ảnh đen trắng.

poly1Hull0 : dạng xấp xỉ

perimScale : tỷ lệ ngưỡng.

Hàm cvSegmentFGMask tiến hành nối các vùng liên thông và xấp xỉ theo đa giác lồi (poly1Hull0=1) hoặc thành một đường bao lối (poly1Hull0 = 0). Tỷ lệ

ngưỡng perimScale dùng để xóa các vùng có chu vi đường bao nhỏ hơn giá trị

(chiều cao ảnh+chiều rộng ảnh)/perimScale.

3.4.3. Kết quả minh họa

Hình 3-3 thể hiện kết quả thực hiện trừ nền theo giải thuật codebook đối với frame #165 video 1 . Chi tiết về video 1 xem trong chương 4.

Một phần của tài liệu Nghiên cứu và xây dựng module theo dõi tự động các đối tượng ảnh (Trang 51)

Tải bản đầy đủ (PDF)

(89 trang)