TRÊN KẾT CẤU
Việc ứng dụng phương pháp dò tìm chuyển động dựa trên kết cấu bề mặt là một hướng khá mới mẻ. Với phương pháp này, mỗi frame sẽ được tính trực tiếp để ra kết quả mà không cần phải sử dụng phương pháp trừ frame truyền thống (hình 5.7). Do đặc thù của phương pháp dò tìm chuyển động hoàn toàn khác với phương pháp phân loại kết cấu bề mặt nên cách thực hiện dò tìm chuyển động dựa trên kết cấu bề mặt sẽ có những đặc trưng sau :
- Thứ nhất, phương pháp dò tìm chuyển động dựa trên kết cấu bề mặt đơn giản hơn phương pháp phân loại kết cấu bề mặt. Do phương pháp này chỉ cần xác định được vị trí có sự khác biệt trên 2 bức ảnh liền kề nhau trong một đoạn video thay vì nhiều bức ảnh chứa kết cấu khác nhau.
- Thứ hai, phương pháp dò tìm chuyển động phải được thực hiện ở thời gian thực. Điều này đòi hỏi các thuật toán được sử dụng phải có khả năng tương thích cao với thiết kế phần cứng (độ phức tạp thấp, có khả năng thực hiện song song nhiều luồng dữ liệu) để tốc độ đạt được là cao nhất.
Hình 5.7 : Phương pháp dò tìm chuyển động dựa trên kết cấu bề mặt
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Thuật toán dò tìm chuyển động trong đề tài này được thực hiện dựa trên toán tử LBP. Rất khác biệt so với các phương pháp dò tìm chuyển động truyền thống, phương pháp này không dùng cách trừ 2 frame liên tiếp nhau mà sẽ tính trực tiếp trên mỗi frame được đưa vào. Với mỗi pixel trên frame sẽ có một phân bố thống kê tượng trưng cho pixel đó. Như vậy, khi có sự sai biệt giá trị phân bố thống kê giữa 2 pixel cùng vị trí trên 2 frame liên tiếp nhau tức đó chính là vùng có sự chuyển động. Ngược lại, nếu là vùng chứa cảnh nền thì phân bố thống kê trên các pixel tại đây sẽ không thay đổi hoặc thay đổi rất ít (do nhiễu).
Trước tiên, với frame đầu tiên được đưa vào, ta phải thiết lập được một phân bố thống kê cho từng pixel trên frame đó. Một cửa sổ 5 x 5 được tạo ra quét trên toàn bộ frame. Theo thực nghiệm cho thấy, cửa sổ này chồng lấp lên nhau sẽ cho kết quả tốt hơn khi chúng không chồng lên nhau (hình 5.8).
Hình 5.8 : Một cửa sổ quét chồng lên nhau qua toàn bộ frame
Trong mỗi cửa sổ 5 x 5 ta sẽ có 25 pixel. Từng pixel sẽ được tính bằng toán tử LBP để được một giá trị tương ứng. Để có thể tạo ra tính bất biến đối với phép quay cho toán tử LBP, ta sẽ tính ra các giá trị mà ta có thể có và chọn giá trị nhỏ nhất làm giá trị đại diện. Giá trị này sẽ hoàn toàn bất biến đối với phép quay.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Toán tử LBP được sử dụng là 1 toán tử LBP truyền thống (P=4, R=1) có dạng như hình 5.9.
Hình 5.9 : Toán tử LBP truyền thống (P=4, R=1)
Ví dụ như hình 5.10, sau khi lấy LBP theo chiều kim đồng hồ, ta sẽ được các giá trị sau tùy theo vị trí bắt đầu : 9 (1001), 3 (0011), 6 (0110), 12 (1100). Giá trị nhỏ nhất sẽ được chọn ra làm đại diện đó chính là 3 (0011).
Hình 5.10 : Ví dụ lấy LBP với 1 pixel
Sau đó, ta phải tìm được một phân bố thống kê dựa trên 25 giá trị vừa tìm được trong mỗi cửa sổ 5 x 5. Do các giá trị được lấy là giá trị nhỏ nhất nên ta sẽ có 6 trường hợp sau : 0 (0000), 1 (0001), 3 (0011), 5 (0101), 7(0111), và 15 (1111). Do đó, một vectơ đặc trưng cho mỗi pixel chính là phân bố thống kê của
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
25 giá trị với 6 trường hợp vừa nêu trên. Như vậy, tương ứng với từng pixel trên frame sẽ có một vectơ đặc trưng mô tả kết cấu bề mặt tại vùng chứa pixel đó. Khi đã có phân bố thống kê cho từng pixel trên frame đầu tiên, các frame tiếp theo sau khi tính toán sẽ so sánh với giá trị phân bố thống kê của frame trước. Nếu như có đối tượng chuyển động tại vùng chứa pixel đó, phân bố thống kê của những pixel tại vùng đó sẽ bị thay đổi. Dựa vào sự sai biệt này ta có thể xác định được vùng chuyển động trên mỗi frame. Cách tính sự sai biệt giữa 2 vectơ đặc trưng sử dụng khoảng cách Mahattan :
(5.6)
Giá trị phân bố thống kê sau mỗi lần tính toán sẽ được cập nhật lại liên tục. Nhờ vậy, cảnh nền trong từng frame luôn duy trì được phân bố thống kê của nó cho dù có sự thay đổi của ngoại cảnh. Hơn nữa, hướng chuyển động của đối tượng cũng sẽ được xác định.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Chương 6
THIẾT KẾ PHẦN CỨNG VAØ KẾT QUẢ THỰC NGHIỆM
6.1.THIẾT KẾ PHẦN CỨNG
6.1.1. Giới thiệu FPGA họ Cyclone II
FPGA họ Cyclone II là một loại FPGA giá rẻ với công nghệ cấu hình dựa trên SRAM, mật độ tích hợp lên đến 68K phần tử logic và hơn 1.1 Mbit Ram nhúng trên chip. Chip được hỗ trợ thêm với 18 x 18 khối nhân được dùng cho các ứng dụng DSP phức tạp, các bộ vòng khóa pha (PLL) dùng cho điều khiển xung clock hệ thống và các giao tiếp bộ nhớ ngoài tốc độ cao kết nối với SRAM, SDRAM trên kit. Vì vậy, Cyclone II là dòng FPGA giá rẻ nhưng khả năng thực thi cao cho các hầu hết các ứng dụng DSP phức tạp. Hơn nữa, hãng Altera cũng cung cấp linh kiện cấu hình nối tiếp giá rẻ cho dòng Cyclone II nên có thể nói dòng Cyclone II rất phù hợp để thiết kế các ứng dụng DSP chuyên nghiệp với chi phí thấp.
* Các đặc trưng của dòng Cyclone II :
- Mật độ tích hợp cao, khoảng 68.000 phần tử logic
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
- Hỗ trợ các khối bộ nhớ nhúng M4K
- Các khối nhân dùng cho các ứng dụng DSP
- Quản lý xung clock linh động với 4 PLL cung cấp khả năng nhân, chia, dịch pha, thay đổi duty cycle . . .
- Cấu hình nhanh với giá thành thấp : linh kiện cấu hình nối tiếp tốc độ cao cho phép nạp xuống FPGA với thời gian dưới 100ms.
Hình 6.1 là các thông số đặc trưng của các FPGA trong dòng Cyclone II.
Hình 6.1 : Đặc trưng của các FPGA trong dòng Cyclone II * Kiến trúc của dòng Cyclone II
Dòng Cyclone II có kiến trúc 2 chiều dựa trên dòng và cột để thực hiện các khối logic. Các kết nối bên trong giữa dòng và cột cung cấp các tín hiệu kết nối giữa các khối phần cứng với nhau gồm các LAB (Logic Array Block), bộ nhớ nhúng và các bộ nhân cho DSP.
Một dãy logic chứa các LAB, với mỗi LAB có 16 phần tử logic. Mỗi một phần tử logic là đơn vị nhỏ nhất cung cấp khả năng thực hiện các hàm logic do
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
người thiết kế tự định nghĩa. Các LAB được tập hợp trên các hàng và cột trong linh kiện. Dòng Cyclone II có từ 4.000 đến 68.000 phần tử logic.
Dòng Cyclone II cung cấp một mạng clock toàn cục với sự hỗ trợ của 4 vòng khóa pha. Mạng clock toàn cục bao gồm 16 đường clock trải đều suốt toàn bộ diện tích linh kiện. Mạng này cung cấp xung clock cho tất cả các thành phần trong linh kiện như các I/O, phần tử logic, bộ nhớ nhúng và các khối nhân. Các bộ PLL cung cấp khả năng điều khiển một cách linh hoạt xung clock hệ thống như nhân tần, chia tần, dịch pha v.v . . .
Các khối nhớ M4K thực sự là các bộ nhớ 2-cổng với 4 Kilo bit cùng với parity. Các khối nhớ này có thể được cấu hình thành các bộ nhớ 2-cổng hoặc 1- cổng với tần số hoạt động lên đến 260 MHz và chiều rộng bus lên đến 36 bit. Các khối M4K được sắp xếp trên các cột giữa các LAB.
Mỗi một khối nhân có thể thực hiện đồng thời 2 bộ nhân 9 x 9 bit hoặc 1 bộ nhân 18 x 18 bit với tần số hoạt động lên đến 250 MHz. Các khối nhân dùng cho DSP này cũng được sắp xếp dọc theo cột của linh kiện.
Hình 6.2 là sơ đồ khối của các thành phần trong linh kiện FPGA dòng Cyclone II.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Hình 6.2 : Sơ đồ khối FPGA dòng Cyclone II
6.1.2. Giới thiệu kit DE2
Kit DE2 của hãng Altera được thiết kế như là một phương tiện lý tưởng nhằm mục đích nghiên cứu và giảng dạy các môn học về logic số, cấu trúc máy tính trong môi trường đại học, cao đẳng chuyên ngành thiết kế điện tử (hình 6.3). Kit này hỗ trợ hầu hết các giao tiếp vào ra cơ bản (USB, Com, VGA, PS/2 . . .), các loại bộ nhớ (SRAM, SDRAM, Flash, SD card) cùng với những công cụ phần mềm kèm theo (Quartus II, Nios II) nhằm phục vụ cho nghiên cứu và giảng dạy. Kit sử dụng FPGA Cyclone II 2C35, đây là một loại linh kiện logic khả trình giá thành rẻ, công suất thấp, hiệu năng cao. Vì vậy kit DE2 thực sự rất phù hợp trang bị cho các phòng thực tập cho sinh viên.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Hình 6.3 : Kit DE2
Các phần cứng được tích hợp trên kit DE2 (hình 6.4) :
- FPGA Cyclone II 2C35 (33.216 phần tử logic, 105 khối M4K RAM, 483.840 bit RAM, 35 khối nhân nhúng, 4 PLL, 475 chân I/O)
- USB Blaster (cấu hình cho FPGA) - Bộ nhớ SRAM 512 KB
- Bộ nhớ SDRAM 8 MB - Bộ nhớ Flash 4 MB - Khe cắm thẻ nhớ SD
- 2 bộ dao động 50 MHz và 27 MHz - Bộ giải mã Audio 24 bit
- VGA DAC (kết nối với màn hình theo chuẩn VGA) - Bộ giải mã TV
- Bộ điều khiển Ethernet 10/100
- Bộ điều khiển chuẩn USB với các đầu kết nối loại A và B
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
- RS-232 (cổng COM)
- PS/2 (nối với bàn phím hoặc chuột) - Bộ chuyển đổi hồng ngoại
Ngoài ra, kit DE2 còn hỗ trợ thêm các nút gạt, nút bấm, led thường, led 7 đoạn, các khe mở rộng . . .
Hình 6.4 : Sơ đồ khối kit DE2
Hơn nữa, đối với các đặc trưng phần cứng, DE2 còn có sự hỗ trợ của phần mềm cho các giao tiếp I/O chuẩn cùng với sự linh hoạt trong điều khiển để truy cập đến các thành phần phần cứng khác nhau.
Phần cứng của hệ thống hoàn toàn được thực hiện trên kit DE2 của hãng Altera. Một hệ thống nhúng hoàn chỉnh sẽ được tích hợp trên FPGA Cyclone II.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Dữ liệu đầu vào được lấy từ camera hoặc từ bộ nhớ, dữ liệu ra sẽ được hiển thị trên màn hình LCD.
6.1.3. Sơ đồ khối tổng quát
Mô hình toàn bộ hệ thống (hình 6.5) : trung tâm của hệ thống là lõi CPU Nios II đóng vai trò điều khiển hoạt động của toàn bộ hệ thống. CPU này được cấu hình bằng công cụ SoPC Builder trên FPGA Cyclone II của kit DE2. Các khối phần cứng khác bao gồm: Khối dò tìm chuyển động, khối điều khiển màn hình, và các bộ DMA (direct memory access) cùng với các vùng nhớ đệm. Tất cả đều được tích hợp vào trong CPU Nios II bằng công cụï SoPC Builder với khả năng Custom Instruction. Ngoài ra còn có các bộ điều khiển bộ nhớ (memory controller) giao tiếp với các bộ nhớ ngoài (SRAM, SDRAM) để cung cấp vùng nhớ lệnh và vùng nhớ dữ liệu cho Nios II hoạt động.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
ME MO RY CONT RO LLO R B U FFER DSP VG A CONT ROL L O R Me m o ry LC D Lo õi NIOS II DM A BU FF E R DM A NIOS II
Hình 6.5 : Mô hình thiết kế toàn hệ thống
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
6.1.4. Khối dò tìm chuyển động
Khối dò tìm chuyển động gồm các phần chính (theo hình 6.6) : - Bộ nhớ đệm (lấy dữ liệu ảnh và các giá trị phân bố được lưu trữ)
- Lọc trung bình dịch chuyển 9 phần tử (cửa sổ 3 x 3) - Tính phân bố thống kê sử dụng toán tử LBP và cập nhật - Tính vị trí chuyển động
Hình 6.6 : Sơ đồ khối của phần dò tìm chuyển động
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Lọc trung bình dịch chuyển (cửa sổ 3 x 3)
Đầu tiên, ảnh tại được đưa vào xử lý phải qua mạch lọc trung bình dịch chuyển, thực chất là một mạch lọc thấp qua. Chức năng của mạch lọc này nhằm mục đích làm cho ảnh trở nên “mịn” hơn, hạn chế các loại nhiễu giúp cho kết quả dò tìm chuyển động chính xác hơn.
Hình 6.7 : Lọc trung bình dịch chuyển (a) ảnh gốc (b) ảnh sau khi lọc
Với một mạch lọc trung bình dịch chuyển với cửa sổ 3 x 3, đối với ảnh sau khi lọc mức độ chi tiết sẽ kém hơn với ảnh gốc như hình 6.7. Tuy nhiên, thuật toán dò tìm chuyển động của một đối tượng không quan trọng đến những chi tiết mà chỉ quan tâm đến các “vùng” có sự chuyển động. Nên việc sử dụng một lọc trung bình sẽ rất có ích trong việc hạn chế các điểm nhiễu trên ảnh kết quả sau quá trình dò tìm chuyển động.
Để thực hiện lọc trung bình dịch chuyển 9 phần tử (sử dụng cửa sổ 3 x 3 quét toàn bộ ảnh) ta cần phải có các thanh ghi dịch như hình 6.8. Do bức ảnh có kích thước 320 x 240 pixel nên trong mạch tạo cửa sổ ta sẽ sử dụng 1 thanh ghi
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
dịch chính với kích thước 320 phần tử, mỗi phần tử là 4 bit. Dữ liệu ảnh khi được đưa vào trong mạch sẽ theo thứ tự từ trái qua phải rồi từ trên xuống dưới theo từng hàng.
Shift 1 word Shift 1 word Shift 1 word
Data Q11 Q12 Q13
Shift 320 word Q21 Shift 1 word Q22 Shift 1 word Q23
Shift 1 word Shift 1 word
Q31 Q32 Q33
4 bit
Shift 320 word
Hình 6.8 : Sơ đồ mạch tạo cửa sổ 3 x 3
Như vậy, ta sẽ có các ngõ ra Q11, Q12 . . . tương ứng với giá trị của mỗi pixel trên cửa sổ. Ngõ ra sẽ tương ứng với trung bình của 9 giá trị mức xám của 9 pixel trên cửa sổ. Ta có đoạn mã sau :
wire [7:0] tong = ((q11 + q12) + (q13 + q21) +
(q22 + q23) + (q31 +q32) + q33) / 8'd9; assign result = tong[3:0];
Mạch dò tìm chuyển động sử dụng toán tử LBP
Do có một toán tử LBP truyền thống (P=4, R=1) được sử dụng trên một cửa sổ 5 x 5 gồm 25 pixel, nên mỗi một pixel được đưa ra từ mạch lọc trung bình dịch chuyển sẽ được cho vào một mạch tạo cửa sổ 5 x 5 tương tự như hình 6.8. Mỗi một pixel trên cửa sổ sẽ được lưu lại và xem xét các lân cận trên một vòng GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
tròn của nó. Tổng cộng sẽ có 4 pixel xung quanh pixel trung tâm được lấy giá trị. Giá trị này sẽ được so sánh với với giá trị mức xám của pixel trung tâm. Một hệ số k sẽ được thêm vào khi so sánh nhằm mục đích tạo ra sự sai biệt về mức xám một cách rõ ràng hơn. Ví dụ một ảnh có nền là bầu trời thì các pixel tại vùng này thường có giá trị mức xám chênh lệch nhau không lớn. Do vậy ta cần phải thêm một hệ số k để có thể xác định chính xác hơn.
Hình 6.9 : Sơ đồ khối phần cứng dò tìm chuyển động
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Sau khi dùng toán tử LBP để tính được một giá trị thể hiện mối tương quan về mức xám giữa pixel trung tâm so với các pixel lân cận của nó, ta sẽ thiết lập một phân bố thống kê cho 25 giá trị vừa tìm được này. Với việc chọn giá trị nhỏ nhất của LBP cho mỗi pixel, ta sẽ có 6 trường hợp có thể xảy ra cho 25 giá trị đó. Từ đó, việc xây dựng một phân bố thống kê cho mỗi cửa sổ 5 x 5 sẽ tạo thành