Ứng dụng công cụ mới trên nền tảng FPGA vào xử lý ảnh và video

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.

pdf 10 trang dienloan 6320
Bạn đang xem tài liệu "Ứng dụng công cụ mới trên nền tảng FPGA vào xử lý ảnh và video", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Ứng dụng công cụ mới trên nền tảng FPGA vào xử lý ảnh và video

Ứng dụng công cụ mới trên nền tảng FPGA vào xử lý ảnh và video
TAÏP CHÍ KHOA HOÏC ÑAÏI HOÏC SAØI GOØN Soá 24 (49) - Thaùng 01/2017 
3 
Ứ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. 
4 
1. 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. 
5 
Hì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à  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. 
6 
2.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. 
7 
Hì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. 
8 
3.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 
9 
thấ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-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 
10 
Khi 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. 
11 
Hệ 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 
12 
dụ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 

File đính kèm:

  • pdfung_dung_cong_cu_moi_tren_nen_tang_fpga_vao_xu_ly_anh_va_vid.pdf