Tải bản đầy đủ (.pdf) (10 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.21 MB, 10 trang )

TẠ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 Zynq7000 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.

3


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.

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 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 Zynq7000 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.

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

4


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à 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.
5


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.

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ộ

Hình 5. Kết quả bảng màu qua xử lý cân trắng.
6


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:

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.

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
7



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

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.
8


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 antihalo 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 antialias 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
9


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), 32to-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.

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ý.

Hình 10. Sơ đồ khối thiết kế cho ứng dụng nhận dạng chuyển động.
10


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

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

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ư
11


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.


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.

Ngày nhận bài: 06/6/2016

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 Programmable (AP) SoC Video and Imaging Kit.

Biên tập xong: 15/01/2017

12

Duyệt đăng: 20/01/2017




×