Một số thuật toán phát hiện chuyển động

Một phần của tài liệu Nghiên cứu phát triển một số thuật toán phát hiện và phân loại phương tiện từ dữ liệu video giao thông (Trang 62)

Trừ nền là phương pháp phổ biến để phát hiện đối tượng chuyển động, Massimo Piccardi, năm 2004, trong công trình [17], đã trình bày một số thuật toán trừ nền dùng cho việc phát hiện chuyển động: trừ nền cơ bản, trừ nền trung bình, -,...

Thuật toán trừ nền cơ bản

2.1.1.

BSM cơ bản là phương pháp dựa trên sự sai khác giữa hai ảnh (trừ hai ảnh theo từng điểm ảnh tương ứng) và so sánh sự sai khác này với một giá trị ngưỡng cho trước. Trường hợp sự sai khác này lớn hơn giá trị ngưỡng đã cho, có nghĩa đã có sự sai khác về các số các điểm ảnh. Xét 2, 3 khung hình liên tiếp để phát hiện chuyển động.

Gọi It là dãy các khung hình của đoạn video, lấy ảnh đầu tiên I0 là ảnh nền, gọi  là giá trị ngưỡng sai lệch cho phép giữa các giá trị điểm ảnh của khung hình It và ảnh nền. Trong công thức (2.1), Dt(x,y)=0 (độ chênh lệch giữa hai điểm ảnh nhỏ hơn giá trị ngưỡng ) đưa ra kết luận đây là những điểm ảnh của nền, ngược lại, Dt(x,y)=1 (độ chênh lệch giữa hai điểm ảnh lớn hơn ngưỡng 

cho trước) đưa ra kết luận đây là những điểm ảnh của đối tượng chuyển động. Tập hợp các điểm ảnh này ta sẽ có hình ảnh của đối tượng chuyển động.

Nội dung thuật toán:

Thuật toán trừ nền cơ bản:

Đầu vào: Video

 : Giá trị ngưỡng cho trước NF: Số khung hình cần sử dụng

m,n: kích thước một khung hình (điểm ảnh) Đầu ra: {Dt(m,n)| t=1..NF}

//Ảnh đã tách ngưỡng đối tượng chuyển động Các bước thực hiện:

1. Thu nhận khung hình

For t=0 to NF It = FrameCapture(video,t)

//NF là số khung hình thu được trong vùng quan sát. 2. Xác định nền

// B: Giá trị nền cố định B = I0

3. Phát hiện mặt nạ nhị phân chứa đối tượng chuyển động: For t=0 to NF

For x=0 to n For y=1 to m

If |It(x,y)-Bt(x,y)|>  then Dt(x,y)=1 Else Dt(x,y)=0

4. Return {Dt(m,n)|t=0..NF}

Độ phức tạp thuật toán:

Gọi NF là số khung hình thu nhận từ dữ liệu video, mỗi khung hình là một ảnh tĩnh. Gọi m, n là kích thước của mỗi khung hình. Căn cứ vào bước thứ 3 trong thuật toán, dễ dàng ước tính được số lượng các phép toán:

- Số lượng khung hình xét là NF; - Kích thước mỗi khung hình là nm; - Số phép toán ước tính là NFmn.

Độ phức tạp của thuật toán là O(NFmn), với NF là số khung hình; mn là kích thước ảnh của khung hình.

Thuật toán trừ nền trung bình

2.1.2.

BSM trung bình là một cải tiến của BSM cơ bản [17]. Thay vì giữ nguyên giá trị khung hình nền B(x,y) trong phép trừ thì BSM trung bình cải tiến cập nhật liên tục giá trị khung hình nền nhằm tăng tính chính xác kết quả phát hiện đối tượng chuyển động. Gọi β là hệ số được chọn trước thuộc (0,1), ảnh nền đầu tiên B0 gán bằng ảnh I0, ta có ảnh nền được cập nhật trung bình theo phương trình (2.2),

Bt(x,y) = (1-)Bt-1(x,y)+It(x,y) (2.2) Gọi  là giá trị ngưỡng sai lệch cho phép giữa các giá trị điểm ảnh của khung hình It và ảnh nền ta có ảnh tách ngưỡng (chứa đối tượng chuyển động) được tính theo công thức (2.3).

( ) { ( ) ( ) ( ) ( ) (2.3) Trong công thức (2.3) ta có Dt(x,y) = 0, kết luận đây là điểm ảnh của nền, ngược lại, Dt(x,y) = 1, kết luận đây là điểm ảnh của đối tượng chuyển động. Tập hợp các điểm ảnh này ta sẽ có hình ảnh của đối tượng chuyển động.

Nội dung thuật toán:

Thuật toán trừ nền trung bình: (adsbygoogle = window.adsbygoogle || []).push({});

Đầu vào: Video

 : Giá trị ngưỡng cho trước NF: Số khung hình cần sử dụng

m,n: kích thước một khung hình (điểm ảnh)

: Tham số cập nhật nền cho trước  (0,1) Đầu ra: {Dt(m,n)| t=1..NF}

//Tập ảnh đã tách ngưỡng đối tượng chuyển động Các bước thực hiện:

1. Thu nhận khung hình For t=0 to NF

It = FrameCapture(video,t) 2. Khởi tạo giá trị nền ban đầu

3. Cập nhật giá trị nền Bt(x,y) theo chỉ số khung hình và tính mặt nạ nhị phân For t=0 to NF For x=0 to n For y=1 to m {

Bt(x,y) = (1-)Bt-1(x,y)+It(x,y)

If |It(x,y)-Bt(x,y)|>  then Dt(x,y)=1 Else Dt(x,y)=0

}

4. Return {Dt(m,n)|t=0..NF}

Độ phức tạp thuật toán:

Tương tự như trình bày trong thuật toán trừ nền trung hình, số phép toán ước tính tổng quan chung của thuật toán tập trung ở bước 3.

Độ phức tạp của thuật toán là O(NFmn), với NF là số khung hình; mn là kích thước ảnh của khung hình.

Thuật toán Σ-Δ

2.1.3.

Thuật toán Σ-Δ dựa trên phương pháp đệ quy phi tuyến đơn giản (còn được gọi là bộ lọc Σ-Δ). Thuật toán Σ-Δ sử dụng hàm sgn(a) để ước lượng giá trị của nền, công thức (2.4). Hàm sgn() được xây dựng như sau:

( ) {

(2.4)

Theo công thức (2.5), giá trị nền đối với mỗi khung hình tại thời điểm t là Bt(x,y), tăng hoặc giảm hoặc giữ nguyên tùy thuộc vào giá trị của hàm sgn(a).

t(x,y) là giá trị tuyệt đối hiệu giữa Bt(x,y) và It(x,y) theo công thức (2.6). Gọi Vt(x,y) là biến ngưỡng xác định cho sự chuyển động theo thời gian t, nhằm xác định xem mỗi điểm ảnh của một khung hình đang xét sẽ là điểm ảnh “nền” hay điểm ảnh của “đối tượng chuyển động”, được tính theo công thức (2.7), với N là tham số cho trước trong khoảng từ 14;

Giá trị Dt(x,y) là giá trị lưu trữ nền hoặc đối tượng chuyển động. Nếu Dt(x,y)=0 thì điểm (x,y) là của nền, ngược lại điểm ảnh của đối tượng chuyển động, công thức (2.8). = It(x,y) – Bt-1(x,y) Bt(x,y) = Bt-1( ) ( ) (2.5) ( ) ( ) ( ) (2.6) ( ) ( ) ( ( ) ( )) (2.7) ( ) { ( ) ( ) ( )( ) (2.8)

Nội dung thuật toán: Thuật toán Σ-Δ

Đầu vào: Video

 : Giá trị ngưỡng cho trước NF: Số khung hình cần sử dụng

m,n: kích thước một khung hình (điểm ảnh) α: Tham số cập nhật nền cho trước  [0,1] Đầu ra: {Dt(m,n)| t=1..NF}

//Ảnh đã tách ngưỡng đối tượng chuyển động Các bước thực hiện:

1. Thu nhận khung hình

For t=0 to NF It = FrameCapture(video,t) 2. Khởi tạo giá trị nền ban đầu (adsbygoogle = window.adsbygoogle || []).push({});

B0=I0 //Giá trị khởi tạo mô hình nền và khung hình video đến.

0 = 0 V0 = 0

3. Cập nhật giá trị nền Bt theo chỉ số khung hình và tính mặt nạ nhị phân

For each Image It For each x,y  [n,m] {

= It(x,y) – Bt-1(x,y)

( ) ( ) ( )

( ) ( ) ( ( ) ( )) If |t(x,y)-Vt(x,y)|> then Dt(x,y)=1

Else Dt(x,y)=0 4. Return {Dt(m,n)| t=1..NF}

Độ phức tạp thuật toán:

Gọi NF là số khung hình thu nhận từ dữ liệu video, mỗi khung hình là một ảnh tĩnh. Gọi m, n là kích thước của mỗi khung hình. Căn cứ vào bước thứ 3 trong thuật toán, dễ dàng ước tính được số lượng các phép toán tương đương với O(NFnm), với NF là số khung hình; n, m là kích thước khung hình.

Thuật toán Σ-Δ cải tiến

2.1.4.

Thuật toán Σ-Δ cập nhật mô hình nền theo hằng số thời gian sgn(a). Điều này tạo ra hạn chế đối với những ảnh chứa nhiều đối tượng chuyển động hoặc đối tượng có nhiều chuyển động. Thuật toán Σ-Δ cải tiến được đề xuất để giải quyết bài toán nhiều đối tượng và nhiều chuyển động. Phương pháp này sử dụng mô hình nền thích nghi để tăng khả năng phát hiện các chuyển động trong một ảnh phức tạp.

Việc xử lý theo thời gian có thể cho ra kết quả phát hiện chuyển động rất hiệu quả trong trường hợp đối tượng chuyển động chậm dần, dừng lại hoặc quay vòng. Tuy nhiên, do thuật toán Σ-Δ đặc trưng bởi khoảng thời gian cố định: cập nhật theo giai đoạn và độ lớn số lượng mức xám trên một giây. Đây là lý do gây ra hạn chế của thuật toánΣ-Δ trong việc thích nghi với khung hình phức tạp nhất định.

Thuật toán Σ-Δ cải tiến thay vì tính một nền riêng lẻ, chúng ta sẽ tính một tập các nền: { }. Công thức tính như sau:

( ) ( ) ( ( ) ( )) (2.9) Trong đó, ( ) là giá trị nền tham chiếu thứ i tại thời điểm t, ( ) là giá trị nền tham chiếu thứ i tại thời điểm (t-1), ( ) là giá trị nền tham chiếu thứ (i-1) tại thời điểm t, giá trị khởi tạo với i=0: ( ) ( ).

Mỗi nền được đặc trưng bởi thời gian cập nhật .

Với mỗi khung hình, tính giá trị hiệu tuyệt đối ( ) it( , )x y và giá trị

biến theo thời gian ( ) như sau:

( ) | ( ) ( )| (2.10) ( ) ( ) ( ( ( ( )) (2.11) Giá trị mô hình nền thích nghi tổng hợp B x yt( , ) được tính như sau:

( ) ∑ ( ) ( ) ∑ ( ) (2.12) Với i là giá trị được định nghĩa trước, i là chỉ số tham chiếu, R là tổng số chỉ số i. Giá trị thực nghiệm đặt K=3, α1, α2, α3 được đặt 1, 8, 16.

Trên mô hình nền thích nghi Bt(x,y) đã được tạo ra, áp dụng thuật toán Σ-Δ với mô hình nền Bt(x,y) này để xử lý xác định đối tượng chuyển động.

Nội dung thuật toán:

Thuật toán Σ-Δ cải tiến

Đầu vào: Video

 : Giá trị ngưỡng cho trước

NF: Số khung hình cần sử dụng

m,n: kích thước một khung hình (số điểm ảnh theo chiều ngang, dọc)

K: số lượng tập nền theo dõi cho trước

αi(i=1..K): Tham số cập nhật nền cho trước  [0,1] Đầu ra: {Dt(m,n)| t=1..NF} //Tập ảnh đã tách ngưỡng đối tượng 1. Thu nhận khung hình (adsbygoogle = window.adsbygoogle || []).push({});

For t=0 to NF

It= FrameCapture(video,t)

2. Khởi tạo giá trị nền và các tham số ban đầu For i=1 to K

{ }

V0 = 0

For i=1 to K {αi=const}

3. Cập nhật giá trị nền Bt theo chỉ số khung hình và tính mặt nạ nhị phân For t=0 to NF For x=0 to n For y=1 to m { For i=1 to K { ( ) ( ) ( ( ) ( )) ( ) | ( ) ( )| ( ) ( ) ( ( ) ( )) } //End of for i For i=1 to K { TS=TS + ( ( )) ( ) MS=MS + ( ) Bt(x,y) = TS/MS }

t(x,y) = |It(x,y)-Bt(x,y)|

Vt(x,y) = Vt-1(x,y) + sgn(N×t(x,y)-Vt-1(x,y)) If t(x,y)>Vt(x,y) then Dt(x,y)=1

Else Dt(x,y)=0 } //End of for t

4. Return {Dt(m,n)| t=1..NF}

Độ phức tạp thuật toán:

Gọi NF là số khung hình thu nhận từ dữ liệu video, mỗi khung hình là một ảnh tĩnh. Gọi m, n là kích thước của mỗi khung hình. Gọi k là số tập nền cần theo dõi. Căn cứ vào bước thứ 3 trong thuật toán, dễ dàng ước tính được số lượng các phép toán tương đương với O(NFkmn).

Thuật toán thống kê khác biệt cơ bản

2.1.5.

Thuật toán thống kê khác biệt cơ bản tính giá trị trung bình cho từng điểm ảnh riêng lẻ của khung video trước đó dựa trên việc sử dụng giá trị trung bình,

độ lệch tiêu chuẩn cũng như sắp xếp mô hình nền. Mô hình nền thích nghi được tạo ra thông qua việc xác định giá trị từng điểm ảnh xy của mô hình nền. Giá trị

xy được tính là giá trị trung bình của các điểm ảnh tương ứng từ một tập K khung hình trước đó trong một khoảng thời gian nhất định từ thời điểm khung video đầu tiên đến thời điểm khung video thứ K-1 (có thể coi khoảng thời điểm từ t0 – tK-1).

∑ ( )

(2.13)

K: là số lượng khung video đang xét; t: là chỉ số của khung video, t = 1..K; It(x,y): là giá trị khung video đến hiện thời thứ t.

Với mỗi điểm ảnh, một giá trị ngưỡng biểu diễn bằng độ lệch chuẩn xy

trong cùng một khoảng thời gian (t0 – tK-1), được tính bằng trung bình độ lệch giữa giá trị của điểm ảnh tương ứng trong các khung video trước và xy, công thức tính như sau:

( ∑ ( ( ) )

) (2.14)

Để phát hiện được chuyển động, giá trị tuyệt đối của hiệu giữa khung video đến và mô hình nền được tính toán. Từ đó ta sẽ xác định mặt nạ nhị phân phát hiện chuyển động Dt(x,y) được tính bởi công thức sau:

( ) { | ( ) |

| ( ) | (2.15) Ta chọn  là tham số thực nghiệm. Phương pháp chọn  được giải thích như sau: Theo [23], có nhiều cách để thể hiện các đặc tính của một phân phối xác suất. Cách dễ thấy nhất là thông qua hàm mật độ xác suất, nó cho biết khả năng xảy ra của mỗi giá trị của biến ngẫu nhiên. Hàm phân phối tích lũy cũng cho cùng thông tin, nhưng hình ảnh của nó thì thông tin chứa đựng không được dễ nhận thấy cho lắm. Các cách tương đương khi chỉ định một phân phối chuẩn là thông qua: mômen, ước lượng, hàm đặc trưng, hàm khởi tạo mômen, và hàm khởi tạo ước lượng và định lí Maxwell. Một số rất hữu ích về mặt lí thuyết,

nhưng không trực quan. Hàm mật độ xác suất của phân phối chuẩn với trung bình  và phương sai 2

(hay, độ lệch chuẩn ). Hàm mật độ là đối xứng qua giá trị trung bình (giá trị kì vọng). Giá trị trung bình cũng là mode và trung vị của nó. Ta có 68.26894921371% của diện tích dưới đường cong là nằm trong khoảng 1 lần độ lệch chuẩn tính từ trị trung bình (tức là khoảng (-, +)); 95.44997361036% của diện tích dưới đường cong là nằm trong khoảng 2 lần độ lệch chuẩn (-2,+2); 99.73002039367% của diện tích dưới đường cong là nằm trong khoảng 3 lần độ lệch chuẩn (-3,++). Do đó việc chọn <3. (adsbygoogle = window.adsbygoogle || []).push({});

NếuD x yt( , )0 thì điểm ảnh này được xác định là điểm ảnh của nền, ngược lại nếu D x yt( , ) 1 thì điểm ảnh này là điểm ảnh của đối tượng chuyển động. Tập hợp những điểm ảnh này, ta sẽ xác định được đối tượng chuyển động.

Nội dung thuật toán:

Thuật toán thống kê khác biệt cơ bản

Đầu vào: Video

 : Giá trị ngưỡng cho trước NF: Số khung hình cần sử dụng

m,n: kích thước một khung hình (điểm ảnh) K: số lượng tập nền theo dõi cho trước

αi(i=1..K): Tham số cập nhật nền cho trước  [0,1]

: lựa chọn giá trị <3. Đầu ra: {Dt(m,n)| t=1..NF}

//Ảnh đã tách ngưỡng đối tượng chuyển động Các bước thực hiện: 1. Thu nhận khung hình For t=0 to NF It=FrameCapture(video,t) 2. Xác định mặt nạ đối tượng For t=0 to NF

For each x,y  [n,m]{ 2.1. Tính 

∑ ( )

2.2. Tính : For k=0 to K-1 { ( ( ) ) √ } 2.3. Xác định mặt nạ:

If |It(x,y)- t(x,y)|>xy then Dt(x,y)=1 Else Dt(x,y)=0

}

3. Return {Dt(m,n)| t=1..NF}

Độ phức tạp thuật toán:

Gọi NF là số khung hình thu nhận từ dữ liệu video, mỗi khung hình là một ảnh tĩnh. Gọi m, n là kích thước của mỗi khung hình. Gọi k là số tập nền cần theo dõi. Căn cứ vào bước thứ 2 trong thuật toán, dễ dàng ước tính được số lượng các phép toán tương đương với O(NFmnk).

Mô hình Gauss hỗn hợp

2.1.6.

Stauffer [23] đã đưa ra phương pháp trộn các mô hình nền lại để giải quyết vấn đề ánh sáng thay đổi, các hành động lặp lại, sự lộn xộn từ khung cảnh thực tế. Mục đích là chứng minh một mô hình nền đơn thì không thể xử lý được các khung hình liên tục trong một thời gian dài. Sử dụng phương pháp pha trộn phân tán Gauss để biểu diễn mỗi điểm ảnh trên một mô hình. Theo luận điểm đó, thực hiện và tích hợp phương pháp này vào trong hệ thống giám sát.

Trong mô hình này, coi các giá trị của điểm ảnh theo thời gian như là một tiến trình điểm. Tiến trình điểm là một chuỗi giá trị điểm theo thời gian, tức là giá trị cấp xám hoặc là véc tơ đối với ảnh màu được gán theo thứ tự thời gian. Trong khung hình quan sát ở thời điểm hiện tại t, thì điểm ảnh (x,y) được quan sát ký hiệu là Xt, ở thời điểm t-1 được ký hiệu là Xt-1. Như vậy từ trước đó, thời điểm bắt đầu đến thời điểm t, ta được tập {X1, X2,...,Xt}là một tiến trình điểm.

Đây là các yếu tố hướng dẫn cách lựa chọn mô hình và các thủ tục cập nhật. Dãy {Xt} được mô hình hoá bởi K phân bố Gauss. Hay nói cách khác mỗi điểm ảnh sẽ được theo dõi bằng K Gauss. Xác suất quan sát của điểm ảnh hiện tại được tính bởi công thức:

( ) ∑ ( ) (2.16) Trong đó,

i,t là trọng số tương ứng với Gauss thứ i (iK) của hỗn hợp Gauss tại thời điểm t;

i,t là giá trị trung bình của các Gauss thứ i (iK) của hỗn hợp Gauss tại thời điểm t;

i,t là ma trận hiệp phương sai của phân bố Gauss thứ i (iK) của hỗn hợp Gauss tại thời gian t;

 là hàm mật độ xác xuất được xác định bởi công thức: ( )

( ) ⁄ ⁄

( ) ( ) (2.17)

K phụ thuộc vào bộ nhớ và khả năng xử lý của máy tính, thường được chọn từ 3 đến 5. Để tiện cho tính toán, ma trận hiệp phương sai được giả thiết theo dạng sau: (adsbygoogle = window.adsbygoogle || []).push({});

(2.18)

Trong đó, I là ma trận đơn vị.

Với giả thiết các giá trị màu R, G, B của các điểm ảnh là các thành phần độc lập và có cùng một phương sai. Khi biểu diễn ảnh trong không gian màu RGB, các màu R, G, B được xây dựng trong không gian tọa độ 3 chiều và liên hệ với nhau trong một hình khối elip. Tuy nhiên để đơn giản có thể giả thiết khối

Một phần của tài liệu Nghiên cứu phát triển một số thuật toán phát hiện và phân loại phương tiện từ dữ liệu video giao thông (Trang 62)