Bài viết này đề xuất phát triển các ứng dụng xử lý ảnh và video thời gian thực trên thiết bị FPGA mới được phát triển bởi hãng Xilinx: Bộ công cụ Xilinx ZVIK. Bộ ZVIK được xây dựng trên nền tảng bộ Zynq-7000 ZC702, bao gồm cả phần cứng, phần mềm và các thành phần IP dùng trong phát triển các ứng dụng video.
Trang 1TẠP CHÍ KHOA HỌC ĐẠI HỌC SÀI GÒN Số 24 (49) - Tháng 01/2017
Ứng dụng cơng cụ mới trên nền tảng FPGA
vào xử lý ảnh và video
A novel FPGA implementation for image and video processing applications
GS.TS Lê Tiến Thường, Trường Đại học Bách khoa TP.HCM
Le Tien Thuong, Prof.,Ph.D., Ho Chi Minh University of Technology
Đinh Gia Khánh, Trường Đại học Bách khoa TP.HCM Dinh Gia Khanh, Ho Chi Minh University of Technology
Ngơ Hải Long, Trường Đại học Bách khoa TP.HCM Ngo Hai Long, Ho Chi Minh University of Technology
Nguyễn Quang Trường, Trường Đại học Bách khoa TP.HCM Nguyen Quang Truong, Ho Chi Minh University of Technology
Tĩm tắt
Bài báo này đề xuất phát triển các ứng dụng xử lý ảnh và video thời gian thực trên thiết bị FPGA mới được phát triển bởi hãng Xilinx: bộ cơng cụ Xilinx ZVIK Bộ ZVIK được xây dựng trên nền tảng bộ Zynq-7000 ZC702, bao gồm cả phần cứng, phần mềm và các thành phần IP dùng trong phát triển các ứng dụng video Trong bài báo này, bộ cơng cụ zynq-7000 được dùng trong xử lý ảnh và video thời gian thực, được hỗ trợ với giao diện người dùng trên nền web, giúp cho việc tùy chỉnh các thơng số trong hệ thống xử lý ảnh trở nên dễ dàng và thân thiện hơn Ở đây, một giải thuật nhận dạng chuyển động thời gian thực được triển khai trên phần cứng, đồng thời sử dụng hệ thống nhúng để điều khiển phần mềm
Từ đĩ cĩ thể được ứng dụng trong các hệ thống giám sát, an ninh
Từ khĩa: FPGA; zvik; zynq-7000; xử lý ảnh; xử lý video thời gian thực
Abstract
In this article, we introduce Xilinx ZVIK, a novel FPGA implementation for real-time video and image processing applications that has been developed by Xilinx Inc The ZVIK was built based on the
Zynq-7000 ZC702 and contains additional hardware, software, and IP core components for building and developing custom video applications In this article, the ZVIK is applied with real-time image and video applications, supported by a web-based graphical user interface, which allows configuring each of the Xilinx video IP cores in the image-processing pipeline A motion detection algorithm is applied on the hardware and controlled by the embedded system in parallel By all this technique, Xilinx ZVIK can
be applied in monitoring and security cameras
Keywords: FPGA; zvik; zynq-7000; image processing; real-time video processing
Trang 21 Giới thiệu
Bộ công cụ Xilinx Zynq®-7000 All
Programmable (AP) SoC Video and
Imaging Kit (ZVIK) xây dựng trên nền
tảng của dòng kit ZC702, bao gồm phần
cứng, phần mềm và các thành phần IP core
cần thiết để phát triển các ứng dụng xử lý
ảnh và xử lý video thời gian thực Ngoài ra,
bộ công cụ cũng bao gồm một module I/O
FMC được cung cấp bởi Avnet, hỗ trợ kết
nối qua cổng HDMI, nhận ngõ vào từ cảm
biến ảnh CMOS, cho phép phát triển tức
thời phần mềm hệ thống, phần sụn và các
thiết kế phần cứng dBên cạnh khả năng xử
lý mạnh mẽ của con ARM® Cortex™-A9
MPCore™, bộ công cụ còn xây dựng các
kết nối ngoại vi cho phép kết nối và giao
tiếp với các thiết bị ngoại vi như PC hay
thẻ nhớ SD
Hình 1 Bộ công cụ ZVIK
Video ngõ vào được tạo bởi cảm biến
ảnh VITA-2000 từ bộ bán dẫn ON, được
cấu hình ở độ phân giải 1080 Ảnh mẫu
con thô Bayer được biến đổi thành ảnh
màu RGB bởi bộ liên hợp triển khai xử lý
ảnh sử dụng các lõi video IP LogiCORE™,
nó sẽ loại bỏ các điểm ảnh lỗi, de-mosaic
và sửa lại màu chính xác cho ảnh Một bộ
đệm khung hình được lắp đặt trong hệ
thống xử lý bộ nhớ DDR3, làm cho hình
ảnh được truy cập tới các lõi bộ xử lý
ARM® thông qua bộ AXI Video Direct
Memory Access (VDMA) Bộ đệm khung
hình không cần thiết trong quy trình xử lý ảnh, nhưng lại được bao hàm trong thiết kế
để cho phép chụp ảnh từ video dùng trong phân tích Hình 2 chỉ ra sơ đồ khối của thiết kế camera 1080p60
Hình 2 Sơ đồ khối bộ ZVIK và các thiết
bị ngoại vi
Dòng Zynq-7000 tích hợp hệ thống
xử lý trên nền của chip lõi kép ARM® Cortex™-A9 MPCore™ cùng phần luận
lý lập trình của Xilinx, với công nghệ xử
lý hiện đại nhất, hiệu suất xử lý cao, hiệu năng sử dụng năng lượng thấp, kích thước chỉ 28nm Các CPU của ARM Cortex-A9 MPCore là phần quan trọng nhất của hệ thống lập trình, bên cạnh bộ nhớ trong, bộ nhớ ngoài cùng các thiết bị ngoại vi khác Hệ quả là hệ thống
Zynq-7000 có thể ứng dụng rộng rãi ở nhiều lình vực, chẳng hạn như hỗ trợ tự động lái xe, truyền video, điều khiển động cơ công nghiệp, kết nối hệ thống mạng, thị giác máy tính, camera thông minh, hệ thống giám sát và theo dõi, xử lý ảnh chẩn đoán trong y khoa,…
Giao diện đồ họa người dùng (GUI – Graphical User Interface) trên nền web cho phép cấu hình mỗi lõi IP video trong quy trình xử lý ảnh, hiển thị thông tin về ảnh đi vào như đồ thị histogram của dữ liệu, và cho phép các thao tác nền vi xử lý trên dữ liệu như cân bằng trắng tự động hay phơi
sáng tự động
Trang 3Hình 3 Cấu trúc của họ Zynq-7000.
2 Giao diện người dùng trên web
Để truy cập vào giao diện người dùng
trên nền web, sử dụng một trình duyệt web
như Internet Explorer, Firefox hoặc Google
Chrome Nhập vào địa chỉ IP của bộ ZVIK
là http://192.168.1.10 Trang web sẽ hiện
ra như Hình 4
Từ giao diện người dùng này, có thể
điều chỉnh các thông số về khung hình
(frame) trong video theo mong muốn Khi điều chỉnh thì trình duyệt web sẽ gửi các gói HTTP Request đến cho bộ ZVIK Bộ ZVIK
sẽ thực hiện hiệu chỉnh theo các thông số và gửi trả lại gói HTTP Response Việc bộ ZVIK điều chỉnh các thông số hình ảnh như thế nào thì ZVIK sẽ sử dụng phần cứng và phần mềm trong board để thao tác, có thể được tìm hiểu sâu hơn ở các phần sau
Hình 4 Giao diện người dùng (GUI) của ZVIK trên nền web
Trang 42.1 Điều chỉnh độ lợi (Gain) và độ
sáng (Exposure)
Độ lợi và độ sáng có thể được điều
chỉnh tự động bằng cách đánh dấu vào các
ô như trong hình, nguyên lý làm việc cụ thể
như sau:
1 Processor Control: Một trong các
con vi xử lý của bộ Zynq-7000 SoC sẽ thu
thập thông tin ảnh từ lõi IP Thống kê ảnh
(Image Statistics IP) và dùng chúng để điều
chỉnh cài đặt độ lợi và độ sáng Có thể
chỉnh độ sáng theo yêu cầu bằng thanh
trượt ở mục Tarrget Intensity
2 Image Sensor Auto Gain/Exposure:
Sử dụng bộ điều khiển tự động độ lợi/độ sáng
nội trong cảm biến ảnh để tùy chỉnh độ lợi và
độ sáng của ảnh Có thể chỉnh thủ công bằng
thanh trượt ở mục Target Intensity
2.2 Chụp ảnh từ video
Mục chụp ảnh (Image Capture) của
giao diện người dùng cho phép chụp ảnh từ
video Sau khi nhấn Click to Take Snapshot,
ảnh nén được hiển thị ra Ảnh đúng kích cỡ
(24-bit RGB 1920x1080 bitmap (BMP)) có
thể được lưu trữ bằng cách nhấn phải chuột
và chọn Save Picture As
2.3 Cấu hình cho mục Sửa lỗi điểm
ảnh (Defective Pixel Correction)
Để quan sát quá trình IP core này hoạt
động thì di chuyển thanh trượt Pixel Age
lên 100 Lúc này các chấm trắng nhỏ sẽ
xuất hiện trên màn hình, đây chính là các
điểm ảnh lỗi trên ảnh Bằng việc chỉnh
thanh trượt Pixel Age về 0, các điểm ảnh
lỗi sẽ được loại bỏ khỏi ảnh thông qua xử
lý của lõi IP sửa điểm ảnh lỗi
2.4 Nâng cao chất lượng ảnh
Phần nâng cao chất lượng ảnh (Image
Enhancement) của Xilinx giúp giảm nhiễu
và tăng cường đường biên của các vật thể
trong ảnh Bộ lọc hai chiều được dùng để
khử nhiễu, đồng thời bảo toàn và tăng
cường đường biên vật thể Cụ thể, bộ lọc
thông thấp được dùng để giảm nhiễu, bộ
lọc thông cao được dùng để làm sắc nét đường biên Ngoài ra, hiệu ứng khử Halo giúp giảm nhiễu vòng và hiệu ứng cường điệu do bộ lọc thông cao gây ra
2.5 Cấu hình cho mục Ma trận hiệu chỉnh màu sắc ảnh
Phần Ma trận hiệu chỉnh màu sắc cho ảnh (Color Correction Matrix) cung cấp khả năng hiệu chỉnh màu cho ảnh nhằm chỉnh sửa theo các nguồn sáng khác nhau Ngoài ra, cài đặt cân bằng trắng có thể được điều khiển tự động bởi các bộ vi xử
lý của Zynq-7000 SoC Dựa trên thông tin thu nhận được từ lõi IP Image Statistic, con
vi xử lý sẽ chọn tổng một hay nhiều mức cấu hình cân bằng trắng, dựa trên các xác suất được tính toán của mỗi nguồn sáng Thanh chỉnh độ sáng và độ tương phản (Brightness and Contrast) được dùng để thay đổi cường độ của ảnh, làm cho ảnh tối
đi hoặc sáng hơn Thanh chỉnh độ bão hòa (Saturation) dùng để thay đổi cường độ màu sắc Khi độ bão hòa bằng 0 tương ứng với ảnh mức xám
Hình 5 minh họa ảnh hưởng của cân bằng trắng trên bảng kiểm tra màu cho bốn nguồn chiếu sáng khác nhau
Bốn ảnh phía trên là ngõ ra của chuỗi
xử lý ảnh chụp từ cảm biến ảnh không qua chỉnh sửa màu sắc ứng với bốn nguồn sáng khác nhau Bốn ảnh phía dưới là ngõ ra được chỉnh sửa lại màu sắc, minh họa cho cách chỉnh cân bằng sáng cho ảnh Các ảnh được chụp bởi camera trong bộ ZVIK ở hộp sáng X-Rite Macbeth Judge
Hình 5 Kết quả bảng màu qua xử lý cân trắng
Trang 5Hình 6 Sơ đồ khối phần cứng của bộ công cụ ZVIK
3 Nền tảng phần cứng trong bộ ZVIK
Quá trình xử lý ảnh và xử lý video
trong bộ công cụ ZVIK được thực hiện
theo từng bước tương ứng với từng khối IP
core theo chuỗi như sơ đồ sau đây:
Hình 7 Chuỗi các khối IP core dùng trong
xử lý ảnh và xử lý video
3.1 Clocking
Thành phần PL (Programmable Logic)
của hệ thống có hai vùng xung clock:
AXI4 - Lite (vùng xung điều khiển hoạt
động của các thanh ghi) và vùng video
clock Video clock có chức năng điều
khiển AXI4 interface (memory – mapped),
AXI4 – Stream peripherals (các giao tiếp
ngoại vi) và luồng video vào/ra của thiết
kế Hai vùng clock này tương ứng là 50
MHz và 148.5 MHz Nguồn clock ngoài
148.5 MHz trên FMC-IMAGEON card
được đưa vào bộ tạo xung clock, để tạo ra
xung clock 37.125 MHz cho camera
VITA-2000 Mặt khác, bộ tạo xung PS (Programmable System) tạo xung clock AXI4 – lite 50 MHz và 200 MHz cho dữ liệu từ VITA receiver
3.2 AXI interconnect
Phần thiết kế PL có một bộ kết nối cho AXI4 master và một bộ kết nối cho AXI4 – Lite register interface AXI4 interconnect được kết nối với một master, AXI VDMA, đồng thời nó cũng được kết nối với một slave, cổng HP0 trên Zynq-7000 AP SoC PS; hoạt động ở tần số xung 148.5 MHz, AXI4 – Lite register interface hoạt động ở tần số xung 50 MHz, kết nối như một slave tới cổng GP0 trên Zynq-7000 AP SoC Hoạt động của bộ xử lý song song được điều khiển bởi các thanh ghi bên trong mỗi
IP core Phụ thuộc vào luồng dữ liệu yêu cầu, bộ xử lý (ARM A9) sẽ ghi lên những thanh ghi bên trong mỗi IP core thông qua AXI4 - Lite interconnect Chức năng của AXI4 - Lite interconnect là đọc hoặc ghi
dữ liệu từ bộ xử lý, lựa chọn các IP core cần giao tiếp và thiết lập kết nối giũa bộ xử
lý và các IP core tương ứng
Trang 63.3 Các khối IP core trong chuỗi xử
lý ảnh và xử lý video trên bộ công cụ ZVIK
a) Test Pattern Generator (TPG)
Bộ tạo mẫu thử được Xilinx cung cấp
dưới dạng các IP core IP core TPG có
chức năng tạo các mẫu thử cho việc bắt
đầu hệ thống, đánh giá và tháo gỡ lỗi khi
gặp IP core này cho phép thiết lập màu,
mức chất lượng hình ảnh và trình diễn
video Đây là khối xử lý bắt buộc phải có
đối với những thiết kế sử dụng luồng dữ
liệu từ camera VITA-2000 Có thể thấy có
hai khối AXI TPG trong chuỗi xử lý ảnh
Khối thứ nhất có thể chèn các điểm ảnh lỗi
để kiểm tra khả năng làm việc của khối
AXI DPC phía sau Khối TPG thứ hai được
dùng để chèn một mẫu thử RGB vào trong
chuỗi xử lý Trong quá trình xử lý ảnh và
video thực tế, hai khối TPG sẽ bị vô hiệu
và để dòng dữ liệu video truyền qua mà
không bị sửa đổi gì
b) Defective Pixel Correction (DPC)
IP core AXI Defective Pixel Correction
(DPC) là phần tử xử lý đầu tiên trong chuỗi
xử lý chính thức Dữ liệu ảnh chụp từ
camera VITA-2000 có thể bao gồm một
hoặc vài điểm ảnh lỗi, nguyên nhân có thể
do lỗi phần cứng (manufacturing fault) hoặc
có thể do điều kiện môi trường (lỗi phơi
sáng) DPC có chức năng phục hồi lại những
điểm ảnh lỗi này thông qua bộ lọc Bayer
subsample Nguyên lý của bộ lọc Bayer là
so sánh mức xám của một điểm ảnh với các
điểm ảnh lân cận, nếu có sự sai biệt lớn về
mức xám thì bộ lọc Bayer sẽ thay thế mức
xám của điểm ảnh đó bằng mức xám tương
quan với các điểm ảnh lân cận nó
Hình 8 Mô tả ảnh sau khi đi qua bộ sửa
lỗi điểm ảnh
c) Color Filter Array Interpolation (CFA)
Đây là thành phần xử lý thứ hai trong chuỗi xử lý ảnh CFA có chức năng chuyển ảnh từ định dạng RAW sang miền RGB bằng thuật toán CFA, đồng thời cũng có thể phục hồi lại lỗi màu của các bit bằng bộ lọc Bayer Ảnh được chụp bởi cảm biến ảnh CMOS/CCD ban đầu đều là ảnh đơn sắc Để tạo ra ảnh màu, mỗi điểm ảnh cần
là tổ hợp của ba màu cơ bản là đỏ, lam và lục Trước khi cảm biến màu được chế tạo, ảnh màu được tạo ra bằng cách để ba tấm ảnh đỏ, lam và lục đồng nhất nhau phía trước cảm biến ảnh Việc đặt các tấm lọc màu này (gọi là Color Filter Array) phía trước cảm biến ảnh sẽ cho phép khôi phục lại màu sắc của một bức ảnh Các bộ lọc màu này được xem như một phần của cảm biến ảnh và được đặt ngay trên các transistor quang điện Những mẫu này được gọi là mẫu Bayer và được sử dụng ở nhiều hệ thống xử lý ảnh số
d) Image Statistic Engine (Stats)
Chức năng của IP core Image Statistic Engine (Stats) là phân tích các đặc trưng của ảnh như: color histograms, trung bình
và phương sai của cường độ sáng Các thông số này sẽ được gửi cho PS để thực hiện các giải thuật cân bằng trắng và độ phơi sáng của ảnh
e) Color Space Conversion
Cores Color Space Conversion có chức năng chuyển ảnh không gian màu RGB thành YcrCb (YUV) để phù hợp với thiết bị phát (màn hình) Nó là một bộ nhận
ma trện 3x3 đơn giản, giúp chuyển đổi màu
từ các mẫu ngõ vào
g) Image Edge Enhancement
Chức năng của IP core này là giảm nhiễu của ảnh và làm nổi bật các đường viền của vật thể bằng cách sử dụng bộ lọc hai chiều Sau khi đưa qua bộ lọc thông
Trang 7thấp để giảm nhiễu và đưa qua bộ lọc
thông cao để làm nổi bật đương viền, kết
quả hỗn hợp được đưa vào hai module
anti-halo và ant-alias Module anti-anti-halo sẽ làm
giảm nhiễn vòng cũng như hiệu ứng quá tải
do bộ lọc thông cao gây ra Module
anti-alias sẽ làm giảm nhiễu chồng lấn xuất
hiện khi tăng cường đường biên
h) Color Correction Matrix (CCM)
Trong một số điều kiện có thể gây ra
sự mất cân bằng trong các thông số của ảnh
- nguyên nhân có thể do điều kiện sáng
thay đổi hoặc do đặc tính của cảm biến Do
đó, core AXI CCM có chức năng cân bằng
lại các thông số ảnh như: cân bằng trắng,
độ sáng của ảnh, độ tương phản và mức
bão hòa
i) Gamma Correction
AXI Gamma Correction, còn gọi là
Gamma Compression hay encoding, được
dùng để mã hóa tính chất tuyến tính của giá
trị màu RGB cho phù hợp với tính phi
tuyến của thiết bị phát (ở đây là màn hình)
4 Ứng dụng bộ công cụ ZVIK trong
nhận dạng chuyển động
Luồng video được thực hiện bằng cánh
sử dụng các AXI Streams, HDMI được sử
dụng cho ngõ vào và ngõ ra Các IP core
được xây dựng bằng phần mềm Vivado
HLS (tổng hợp mức cao từ ngôn ngữ lập
trình C) Ở đây, ứng dụng được chạy trên
phần mềm Vivado bản 2013.3 với các IP
core được tích hợp
Một ứng dụng thực tế cho việc nhận
dạng chuyển động là sử dụng trong các
camera an ninh giám sát thông minh Ngõ
vào qua cổng HDMI sẽ được thay thế bởi
một camera và hệ thống FPGA có thể tích
hợp trong module camera
4.1 Giải thuật nhận dạng chuyển động
Hệ thống này thực hiện nhận dạng
chuyển động trong video thời gian thực,
hay còn được gọi là phân đoạn điểm ảnh tiền cảnh/ hậu cảnh
Mục tiêu của việc phân đoạn ảnh là đánh dấu mỗi điểm ảnh trong một khung hình như một phần của khung nền tĩnh hay tiền cảnh chuyển động Quyết định phụ thuộc vào các mô hình thống kê và tổ hợp Các điểm ảnh trong một bức ảnh được xem
là độc lập với nhau Mỗi điểm ảnh được mô hình hóa bởi tổ hợp của K mô hình nền Gauss mạnh nhất, trong ứng dụng này chọn K=4 Mỗi mô hình Gauss được định nghĩa bởi ba giá trị trung bình gồm
, tương ứng với ba màu cơ bản đỏ, lục, lam; với phương sai , và trọng lượng Các mô hình có không gian màu RGB được xem như không gian màu ‘nền tĩnh’ của điểm ảnh Ở đây có K=4
mô hình Gauss độc lập áp dụng cho mỗi điểm ảnh cho phép các trường hợp mà điểm ảnh thay đổi giữa hai màu đều đặn, như thang máy di chuyển hay cây lay trong gió Mỗi mô hình cũng chứa trọng số chỉ ra mức độ thường xuyên mà mỗi mẫu cụ thể được mô tả thành công theo điểm ảnh
Hình 9 Các bước giải thuật tiến hành cập
nhật các mẫu
Hình phía trên cho thấy cách mà giải thuật cập nhật các mẫu; được đơn giản hóa bằng việc bỏ qua các màu RGB và chỉ hiển thị ba mẫu Hình đầu tiên trên cùng hiện thị tình trạng ban đầu với ba mẫu
Trang 8Khi màu của điểm ảnh trùng với một trong
các mẫu, thì mô hình sẽ được tăng cường
bằng cách tăng nhẹ trọng lượng của nó, và
màu của điểm ảnh được xác nhận như
khung nền ổn định Như ở hình thứ hai,
màu trùng vào mẫu M3, trọng số được
tăng lên Nếu màu không trùng với mẫu
nào thì tự mẫu sẽ dịch chuyển nhẹ hướng
tới vị trí của màu Tuy nhiên, khi màu của
điểm ảnh mới không trùng bất kì mô hình
Gauss nào, thì sẽ được xem như tiền cảnh
đang di chuyển Mô hình yếu nhất sẽ bị
xóa bỏ và thay thế bằng một mô hình mới
đại diện cho màu mới, mặc dù có trọng số
khởi tạo nhỏ Điều này được minh họa như
trên hình thứ ba Giải thuật được lập trình
bằng ngôn ngữ C
4.1 Cấu trúc phần cứng
4.2 Hệ thống này gồm ba phần
chính: Nhận và xử lý video đầu vào, Xử lý
và xuất video đầu ra, Hệ thống con tăng
tốc độ xử lý
Phần xử lý video đầu vào được nối với nhau bằng các dây màu vàng như trên Hình
10 Phần này bao gồm các lõi xử lý sau đây: HDMI input and decoder; Video to AXI-Stream convertor, YUV 4:2:2 to 4:4:4 expander (16 to 24 bits) (custom core in VHDL), YUV 4:4:4 to RGB colour space converter, 24-to-32 bits pixel padding, Video DMA (lưu trữ video đầu vào, sau đó truyền tới bộ nhớ chính), AXI memory interconnect, Cổng kết nối Zynq HP0 (150MHz, 64bits)
Phần xử lý video đầu ra được nối với nhau bằng các dây màu lam như trên hình
Cơ bản phần này cũng bao gồm các thành phần như phần xử lý video đầu vào nhưng đảo ngược thứ tự, cụ thể: Cổng kết nối Zynq HP1 (150MHz, 64bits), AXI memory interconnect, Video DMA (đọc và tạo ra dòng điểm ảnh trên ngõ ra AXI-Stream), 32-to-24 bits trim, RGB to YUV 4:4:4 colour space convertor, YUV 4:4:4 to YUV 4:2:2 conversion (24 to 16 bits), AXI-Stream to video stream, HDMI output coder
Hình 10 Sơ đồ khối thiết kế cho ứng dụng nhận dạng chuyển động
Trang 9Hệ thống con tăng tốc độ xử lý sử
dụng các đường dẫn màu đỏ như trong
hình Cụ thể gồm các thành phần sau: Cổng
kết nối Zynq HP2 (100MHz, 64bits) (truy
cập điểm ảnh và dữ liệu thuộc tính),
Central DMA engine (tự động tìm các khối
mô tả mới thông qua cổng ACP), AXI
interconnects, AXI BRAM controllers,
BRAMs (chứa dữ liệu hoạt động cho bộ
gia tốc- các điểm ảnh vào/ ra…)
Phần cứng cho hệ thống gia tốc này
được xây dựng trên phần mềm Vivado
HLS
4.3 Kết quả mô phỏng
Hình 11 Giao diện hiển thị kết quả ứng
dụng nhận dạng chuyển động
Ngõ vào và ngõ ra được truyền thông
qua cổng HDMI trên card mở rộng
Imageon Video đầu vào có độ phân giải
1080p truyền qua cổng HDMI từ PC, ngõ
ra ở độ phân giải 1280x720p được hiển thị
lên màn hình Ảnh ngõ ra có một khung
hình kích thước 640x480 ở góc trái màn
hình, hiển thị nguồn để nhận diện chuyển
động Ở góc phải màn hình là một khung
hình trắng đen có kích thước 640x480 để
hiện thị đầu ra của ứng dụng
5 Kết luận và hướng phát triển
tương lai
Bài báo này đã trình bày ứng dụng của
bộ ZVIK trong việc nhận dạng chuyển
động từ video; cũng đã thành công xây
dựng nên phần cứng cho ứng dụng, bao
gồm các khối IP core xử lý ảnh và video
được cung cấp bởi hãng Xilinx cũng như
bên thứ ba là Avnet Giải thuật nhận dạng chuyển động đã được đơn gian hóa bớt để
có thể dễ dàng hơn trong việc xây dựng phần cứng cho hệ thống
Ở ứng dụng trên, video đầu vào được phát từ PC truyền qua cổng HDMI tới ZVIK, sau khi xử lý sẽ hiện kết quả lên màn hình Để áp dụng ứng dụng này vào thực tiến, hệ thống sẽ được phát triển lên bằng cách thay đầu vào bằng hình ảnh từ camera 1080p60 giống như sơ đồ khối dưới đây:
Hình 12 Sơ đồ khối phần cứng cho ứng
dụng nhận dạng chuyển động trực tiếp từ
camera
Thay vì phương pháp cổ điển sử dụng phần mềm để thực hiện các giải thuật tính toán phức tạp và linh động nhưng tốc độ
xử lý chậm; hoặc sử dụng phần cứng để thực hiện các giải thuật tính toán tốc độ nhanh nhưng không có khả năng tùy biến theo yêu cầu, ZVIK cung cấp cho người dùng khả năng kết hợp độc đáo giữa phần mềm ứng dụng trên nền tảng Linux và phần cứng thông qua các IP core để một ứng dụng vừa có tộc độ xử lý nhanh của phần PL và cũng như có thể thay đổi linh hoạt nhờ phần PS Điều này mang lại cho các ứng dụng thời gian thực một bước tiến mới, và tất nhiên, đi kèm với nó là chất lượng hình ảnh/ video được cải thiện lên nhiều lần
Trong tương lai, bộ ZVIK có thể được
sử dụng nhiều hơn trong các ứng dụng xử
lý video thời gian thực khác Cụ thể là ứng
Trang 10dụng làm hệ thống camera giám sát chuyển
động, nhận dạng và theo dấu khuôn mặt
của người đi đường, trong các tòa nhà, văn
phòng Ngoài ra, ZVIK cũng có thể được
ứng dụng trong hệ thống automotive (lái xe
hơi tự động), các tác vụ cụ thể của camera
như là nhận dạng làn đường, biển báo giao
thông, cảnh báo các chướng ngại vật trên
đường đi, tránh vật cản, hạn chế va chạm
với các phương tiện đang lưu thông khác
Ngoài ra, camera cũng có thể được dùng để
kiểm soát trạng thái của lái xe như là buồn
ngủ, không tỉnh táo khi lái xe…
Lời cảm ơn: Nghiên cứu này được hổ
trợ bởi Đại Học Quốc Gia Thành phố Hồ
Chí Minh theo mã số B2015-20-02
TÀI LIỆU THAM KHẢO
1 Jim Beneke, Designing High Pixel - Rate
Video Systems with Xilinx FPGAs, 2012,
Avnet Inc
2 Cecile Belleudy et al, “Fall Detection
Application on an ARM and FPGA
Heterogeneous Computing Platform”,
IJAREEIE, vol.3, issue 8, August 2014
3 Louise H Crockett Ross A Elliot, Martin A
Enderwitz and Robert W Stewart, The Zynq
Book- Embedded Processing with the ARM®
Cortex®-A9 on the Xilinx® Zynq®-7000 All
Programmable SoC, Department of
Electronic and Electrical Engineering,
University of Strathclyde, Glasgow, Scotland,
UK, 2014
4 Christopher V Dobson, An Architecture
Study on a Xilinx Zynq Cluster with Software
Defined Radio Applications, Virginia
Polytechnic Institute and State University,
2014
5 P KaewTraKulPong and R Bowden, “An Improved Adaptive Background Mixture Model for Realtime Tracking with Shadow
Detection”, Proc 2nd European Workshop on
Advanced Video Based Surveillance Systems, AVBS01 Sept 2001, Kluwer Academic
Publishers
6 Sofia Nayak, Shashank Sekhar Pujari,
“Moving Object Tracking Application: FPGA
And Model Based”, (2015) International
Conference on Computing Communication Control and Automation
7 S Pleshkova, “Development of Embedded Motion Detection in Thermo Visual System with Audio Visual Interface to Information
Networks”, Recent Advances in Systems
Science, pp 143 - 148
8 Peyman Sabouri, Hamid GholamHosseini and
John Collins, Border Detection of Melanoma
Skin Lesions on a Single System on Chip (SoC), Auckland University of Technology
Auckland, New Zealand
9 Mohammadsadegh Sadri et al, Energy and
Performance Exploration of Accelerator Coherency Port Using Xilinx ZYNQ,
Technische Universitat Kaiserslautern
10 Sheng Yang at al, Adaptive Energy Minimization of Embedded Heterogeneous Systems using Regression-based Learning,
University of Southampton and Imperial College, UK
PHỤ LỤC: TỪ VIẾT TẮT
[1] AXI: Advanced eXtensible Interface [2] FPGA: Field-Programmable Gate Array [3] GUI: Graphical User Interface
[4] IP: Intellectual Property core
[5] ZVIK: Xilinx Zynq®-7000 All
Program-mable (AP) SoC Video and Imaging Kit
Ngày nhận bài: 06/6/2016 Biên tập xong: 15/01/2017 Duyệt đăng: 20/01/2017