Ứ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.
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
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:
- ung_dung_cong_cu_moi_tren_nen_tang_fpga_vao_xu_ly_anh_va_vid.pdf