Bài viết Thực hiện khối tách biên ảnh trên FPGA trình bày một ứng dụng của công nghệ FPGA và công cụ hỗ trợ phát triển Xilinx System Generator trong thiết kế và phát triển thuật toán tách biên ảnh trên phần cứng cấu hình lại FPGA.
Trần Nhật Tin, Lê Thanh Lâm, Huỳnh Việt Thắng 20 THỰC HIỆN KHỐI TÁCH BIÊN ẢNH TRÊN FPGA IMPLEMENTATION OF AN EDGE DETECTION MODULE ON FPGA Trần Nhật Tin, Lê Thanh Lâm, Huỳnh Việt Thắng Trường Đại học Bách khoa, Đại học Đà Nẵng; Email: thanghv@dut.udn.vn Tóm tắt - Bài báo trình bày ứng dụng cơng nghệ FPGA công cụ hỗ trợ phát triển Xilinx System Generator thiết kế phát triển thuật toán tách biên ảnh phần cứng cấu hình lại FPGA Bài báo trình bày quy trình thiết kế đánh giá hai tách biên ảnh thông dụng sử dụng mặt nạ Sobel Prewitt phần mềm Matlab Simulink board mạch Virtex-5 FPGA Xilinx Thơng qua ví dụ thiết kế này, quy trình đồng thiết kế kiểm tra phần mềm phần cứng cho ứng dụng xử lý tín hiệu FPGA trình bày, giúp ích cho việc phát triển nhanh thuật tốn xử lý tín hiệu ứng dụng liên quan FPGA Abstract - This paper presents an application of the FPGA and the Xilinx System Generator tool in designing and developing the edge detection algorithm on the FPGA hardware platform The paper shows the process of designing and evaluating the two edge detectors using Sobel and Prewitt masks on both Matlab Simulink and Virtex-5 FPGA boards This example illustrates the process of co-designing and monitoring software and hardware for the FPGA digital signal processing applications, helping to accelerate the signal processing algorithms and the FPGA-related applications Từ khóa - edge detection; FPGA; system generator; DSP; Xilinx; hardware implementation Key words - edge detection; FPGA; system generator; DSP; Xilinx; hardware implementation Đặt vấn đề Ngày nay, công nghệ xử lý hình ảnh ứng dụng rộng rãi nhiều lĩnh vực y học, an ninh, giao thông, bảo mật, lĩnh vực tự động hóa Các ứng dụng xử lý ảnh chẩn đoán y học dựa vào thiết bị phần cứng đa dạng máy chụp cắt lớp, máy chụp cộng hưởng từ, máy siêu âm, máy điện tim Trong an ninh, xử lý ảnh hỗ trợ phát chuyển động, giúp cảnh báo xâm phạm, phát tình bất thường dựa nhận dạng cử động thể người Trong giao thông, việc thu thập xử lý tín hiệu hình ảnh từ camera giúp theo dõi lượng xe lưu thông đường nhằm cảnh báo sớm tình trạng ùn tắc, ghi nhận trường hợp vi phạm giao thông, chụp truy xuất số xe vi phạm để xử lí Có thể nói, kỹ thuật xử lý ảnh đóng vai trị quan trọng hữu rộng khắp hệ thống điện tử thơng minh có thị trường Ngày nay, yêu cầu sử dụng thiết bị nhúng thơng minh tích hợp kỹ thuật xử lý ảnh nâng cao gia tăng nhanh chóng Điều địi hỏi tích hợp kỹ thuật xử lý ảnh hệ thống nhúng để đạt yêu cầu khắt khe công suất tiêu thụ, tốc độ xử lý, tài nguyên phần cứng thời gian phát triển sản phẩm Có nhiều bước xử lý khác thực hệ thống xử lý ảnh, tách biên ảnh (Edge Detection) [1] bước xử lý nhằm trích rút đặc trưng mong muốn đối tượng từ liệu ảnh số hóa Kỹ thuật tách biên ảnh thực phép nhân chập hai chiều mặt nạ định nghĩa trước với ảnh muốn tách biên Tùy thuộc vào loại mặt nạ sử dụng, tách biên ảnh phân chia thành tách biên ảnh sử dụng toán tử Sobel, Prewitt, hay Roberts [1] Thách thức đặt làm để thực thi kỹ thuật tách biên ảnh kỹ thuật xử lý ảnh khác cách hiệu phần cứng hệ thống nhúng Trong bối cảnh đó, cơng nghệ FPGA (Field Programmable Gate Array) cho phép thiết kế thực thi hệ thống số với tốc độ cao, công suất tiêu thụ thấp, đồng thời cho phép tái cấu hình cấu hình động phần Các ứng dụng điển hình FPGA sử dụng FPGA tăng tốc phần cứng (hardware-accelerator) hệ thống tính tốn hiệu cao, sử dụng FPGA để thiết kế phát triển hệ thống nhúng Cùng với đời dòng sản phẩm chip FPGA có mật độ tích hợp ngày cao công suất tiêu thụ cực thấp, công cụ phần mềm hỗ trợ thiết kế kèm cho FPGA hãng sản xuất FPGA trọng phát triển với mục tiêu giúp người dùng giảm thiểu thời gian thiết kế phát triển sản phẩm Hai công cụ tiêu biểu hãng Xilinx [2] – hãng sản xuất FPGA hàng đầu giới – Embedded Development Kit (EDK) cho phép phát triển hệ thống nhúng Xilinx System Generator (XSG) [3] cho phép phát triển nhanh ứng dụng xử lý tín hiệu (bao gồm xử lý ảnh) board phát triển FPGA Xilinx [4, 5] Bài báo trình bày việc thực thi đánh giá tách biên ảnh sử dụng hai mặt nạ thông dụng mặt nạ Sobel mặt nạ Prewitt FPGA hãng Xilinx sử dụng công cụ XSG Khác với nghiên cứu công bố [5], nghiên cứu thực so sánh hiệu hai loại mặt nạ thơng dụng sử dụng tốn tách biên ảnh, nghiên cứu trình bày chi tiết quy trình đồng thiết kế phần mềm phần cứng (software-hardware co-design) sử dụng XSG kết phân tích đánh giá chi tiết Nội dung báo xếp theo trình tự sau Phần trình bày sở lý thuyết kỹ thuật tách biên ảnh công cụ phần mềm sử dụng thiết kế bao gồm XSG Matlab Simulink Phần trình bày chi tiết kiến trúc tách biên ảnh thực XSG Phần trình bày kết mơ phần mềm thực thi phần cứng đánh giá tài nguyên công suất tiêu thụ Cuối cùng, số kết luận hướng nghiên cứu đưa Phần Cơ sở lý thuyết Phần giới thiệu khái quát sở lý thuyết liên quan, làm tiền đề cho việc thiết kế thực thi tách biên TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 9(82).2014 (ISSN 1859-1531) ảnh FPGA sử dụng cơng cụ Xilinx System Generator trình bày phần sau 2.1 Kỹ thuật tách biên ảnh dựa gradient Như đề cập Phần I, tách biên ảnh thực phép nhân chập hai chiều mặt nạ với kích thước hệ số định nghĩa trước với ảnh đầu vào muốn tách biên Một điểm coi điểm biên có thay đổi nhanh đột ngột mức xám Đường biên tập hợp điểm biên liên tiếp loại đặc trưng cục tiêu biểu phân tích nhận dạng ảnh, có ý nghĩa quan trọng phân vùng ảnh Nhận dạng biên dựa gradient kỹ thuật thường sử dụng Phương pháp gradient [1] phương pháp dị biên cục (phương pháp tìm biên trực tiếp) dựa theo đạo hàm cực đại bậc Gradient hiểu vectơ có thành phần biểu thị tốc độ thay đổi giá trị cường độ sáng điểm ảnh theo hai hướng x (hướng ngang) y (hướng dọc) Trong phương pháp gradient, hai tốn tử Sobel Prewitt (cịn gọi mặt nạ Sobel Prewitt) sử dụng phổ biến Trong nghiên cứu này, lựa chọn sử dụng mặt nạ có kích thước 3x3 Với kích thước mặt nạ lựa chọn, hệ số lọc Sobel cho theo biểu thức (1) hệ số lọc Prewitt cho biểu thức (2) 1 1 1 2 1 Gx 2 2 ; Gy 0 (1) 1 1 1 2 1 1 1 1 1 1 Gx 1 1 ; Gy 0 (2) 1 1 1 1 1 Trong biểu thức (1) (2), Gx Gy thành phần mặt nạ nhạy với thay đổi theo phương x y tương ứng Hai mặt nạ dịch chuyển toàn ảnh cần tách biên để thực phép nhân chập chiều cho toàn điểm ảnh Kết tách biên theo hai phương x y kết hợp kết từ hai thành phần, cho theo công thức (3) Trong thực tế, để đơn giản hóa việc tính tốn, công thức (4) thường sử dụng để xấp xỉ giá trị điểm biên thay cho công thức (3) G = (Gx2 + Gy2) 1/2 (3) G = |Gx| + |Gy| (4) 2.2 Công cụ Xilinx System Generator (XSG) Xilinx System Generator (XSG) công cụ phát triển hệ thống cho FPGA, cho phép thiết kế hệ thống số FPGA dạng khối, hỗ trợ mô phỏng, debug, tạo code để nạp vào FPGA kết hợp vào ứng dụng lớn XSG xây dựng Blockset Simulink môi trường MATLAB Do đó, XSG thừa hưởng tất ưu điểm Simulink việc xây dựng hệ thống mô XSG sử dụng thư viện LogicCore để xây dựng block Trong thư viện XSG có tất khối thực chức từ cộng, trừ, nhân, khối logic v v, thiết kế phức tạp hướng đến xử lý tín hiệu số lọc số, phép nhân chập, khả tích hợp 21 loại nhớ hỗ trợ cho FPGA SinglePort RAM, DualPort RAM, FIFOs [3] Bên cạnh đó, thư viện Simulink XSG chứa thư viện: Xilinx Blocksets Xilinx Reference Blocksets Trong thư viện “Xilinx Blocksets” chứa khối chức đơn giản như: ghi, cộng, delay, hàm toán học đơn giản, ROM, lọc FIR, nhớ đệm FIFO Thư viện “Xilinx Reference Blocksets” chứa khối chuẩn Các khối tương đối phức tạp sử dụng với mục đích xác định khác như: tính FFT, DFT… phù hợp cho thực hệ thống xử lý tín hiệu số FPGA [3, 4] Thực khối tách biên ảnh FPGA sử dụng Xilinx System Generator 3.1 Sơ đồ khối tổng quát hệ thống Hình trình bày sơ đồ khối tổng quát hệ thống thực thi thuật toán tách biên ảnh dựa mặt nạ 3x3 thực MATLAB kết hợp XSG Trong sơ đồ khối này, Image Source khối nhận ảnh đầu vào ảnh màu hay ảnh đa cấp xám (gray scale), Image Preprocessing Unit khối tiền xử lý ảnh thực môi trường MATLAB, tương tự khối Image Postprocessing Unit thực thi thao tác hậu xử lý ảnh sau nhận liệu đầu từ khối tách biên ảnh để hiển thị ảnh tách biên lên sổ MATLAB sử dụng Image Vỉewer Tất khối Image Source, Image Pre-processing Unit Image Post-processing Unit thực bên môi trường MATLAB Simulink Using MATLAB Image source Image preproscessing unit Using XSG Edge detection module Using MATLAB Image postprocessing unit Image viewer Hình Sơ đồ khối tổng quát hệ thống tách biên ảnh sử dụng Xilinx System Generator MATLAB Simulink Khối quan trọng hệ thống thiết kế Edge Detection Module thực chức tách biên ảnh sử dụng mặt nạ xác định trước, khối thiết kế, tổng hợp, mô thực thi phần cứng FPGA sử dụng công cụ XSG Trong phạm vi nghiên cứu này, sử dụng phần mềm MATLAB R2010b, kèm với Simulink Fixed-Point Toolbox, mơi trường thiết kế Xilinx ISE Design 13.2 có tích hợp công cụ Xilinx System Generator Tất phần mềm chạy hệ điều hành Windows phiên 32-bit 3.2 Thiết kế khối tiền xử lý hậu xử lý Nhiệm vụ hai khối tiền xử lý hậu xử lý đảm bảo tương thích định dạng liệu ảnh đầu vào ảnh sau xử lý với khối tách biên XSG Sơ đồ hai khối tiền xử lý ảnh (Image Pre-processing Unit) hậu xử lý ảnh (Image Post-processing Unit) trình bày Hình Hình Trong khối tiền xử lý ảnh (Hình 2), ảnh đầu vào ảnh màu RGB hay ảnh đa cấp xám đọc vào từ file ảnh với kích thước lựa chọn 256x256 điểm ảnh Trần Nhật Tin, Lê Thanh Lâm, Huỳnh Việt Thắng 22 Ảnh sau cho qua khối chuyển đổi khơng gian màu để đảm bảo ảnh đưa vào xử lý khối tách biên ảnh đa cấp xám Các khối thực chuyển đổi ảnh dạng hai chiều thành dạng biểu diễn chiều để đưa điểm ảnh vào xử lý khối tách biên Trong khối hậu xử lý ảnh (Hình 3), trình ngược lại thực để chuyển liệu ảnh nối tiếp đầu khối tách biên thành biểu diễn ảnh hai chiều đưa hiển thị kết tách biên cửa sổ đồ họa MATLAB sở lý thuyết trình bày biểu thức (1)-(4) Phần Hình Chi tiết Edge Detection Module thực XSG Hình Khối tiền xử lý ảnh (Image Pre-processing Unit) Hình Sơ đồ chi tiết thực mặt nạ theo phương ngang (Horizontal) phương dọc (Vertical) XSG Kết tổng hợp phần cứng đánh giá 4.1 Kết tổng hợp thiết kế phần cứng Hình Khối hậu xử lý ảnh (Image Post-processing Unit) 3.3 Thiết kế khối tách biên ảnh INPUT IMAGE FPGA Virtex5 xc5vlx110t-1ff1136 HORIZONTAL GRADIENT VERTICAL GRADIENT GRADIENT COMBINING THRESHOLD OUTPUT IMAGE Hình Sơ đồ khối tổng quát Edge Detection Module Hình Sơ đồ kết nối board FPGA Virtex-5 với máy tính thực đồng mô phần mềm phần cứng Các Hình 4, trình bày chi tiết trình thiết kế thực tách biên ảnh môi trường MATLAB Simulink sử dụng Xilinx System Generator Hai lọc tách biên ảnh thông dụng thử nghiệm đánh giá lọc Sobel lọc Prewitt có kích thước 3x3 Về hai lọc khác hệ số cụ thể lọc, nên cấu trúc phần cứng thực thi hai lọc nguyên tắc giống Quá trình thực thi tách biên ảnh trình bày Hình phản ảnh rõ ràng phù hợp với Chúng thực tổng hợp thiết kế hai tách biên ảnh trình bày phần trước cho FPGA Xilinx để đánh giá tài nguyên phần cứng, công suất tiêu thụ để thực việc đồng mô phần mềm phần cứng Để thực việc đánh giá này, lựa chọn loại FPGA có sẵn thị trường hãng Xilinx: Virtex5 XC5VLX110T-1FF1136 Kết tổng hợp phần cứng FPGA trình bày Bảng Dựa vào số liệu từ Bảng nhận thấy lọc Sobel tiêu tốn tài ngun TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 9(82).2014 (ISSN 1859-1531) so với lọc Prewitt Dự đốn phép toán nhân với hệ số “+2” “-2” mặt nạ Sobel thực phép dịch bit, tiết kiệm tài nguyên Do báo cáo tổng hợp phần cứng Xilinx bị giới hạn nên việc phân tích sâu khơng dễ dàng thực hiện, vấn đề cần tìm hiểu nghiên cứu Bảng Ước lượng tài nguyên phần cứng tách biên Sobel Prewitt board Virtex-5 XC5VLX110T Slices FFs LUTs IOBs DSP48s Phần cứng sử dụng Sobel Prewitt 252 301 458 782 496 658 16 16 18 18 Một thông số khác quan trọng để đánh giá thiết kế FPGA công suất tiêu thụ Chúng sử dụng công cụ Xilinx XPower Analyzer để ước lượng công suất tiêu thụ phần cứng lọc Sobel Prewitt Tổng công suất tiêu thụ thiết kế 1.062W 1.065W, tương ứng sử dụng lọc Sobel Prewitt Điều nói lên lọc Sobel tiêu tốn cơng suất so với Prewitt Kết ước lượng công suất hoàn toàn phù hợp với kết ước lượng tài nguyên phần cứng trình bày trên, thiết kế tốn nhiều tài ngun cơng suất tiêu thụ lớn 4.2 Kết tách biên phần mềm chạy kiểm tra thực tế phần cứng FPGA Chúng thực đồng mô phần mềm phần cứng (hardware-software co-design) Simulink để đánh giá kết tách biên ảnh Board mạch FPGA sử dụng Virtex-5 XUP xc5vlx110t-1ff1136, sơ đồ kết nối phần mềm MATLAB Simulink phần cứng FPGA minh họa Hình Hình Kết ảnh tách biên sử dụng lọc Sobel, kết tách biên phần mềm Hình 10 Kết ảnh tách biên sử dụng lọc Sobel, kết tách biên phần cứng FPGA Kết tách biên trình bày Hình 8, 9, 10, 11 12 Trong đó: Hình hiển thị ảnh gốc ngõ vào (ảnh Lena) sử dụng để tách biên cho hai mặt nạ Sobel Prewitt; Hình Hình 10 kết tách biên sử dụng mặt nạ Sobel phần mềm phần cứng; Hình 11 Hình 12 kết tách biên sử dụng mặt nạ Prewitt phần mềm phần cứng Hình 11 Kết ảnh tách biên sử dụng lọc Prewitt, kết tách biên phần mềm Hình Ảnh gốc ngõ vào Hình 12 Kết ảnh tách biên sử dụng lọc Prewitt, 23 Trần Nhật Tin, Lê Thanh Lâm, Huỳnh Việt Thắng 24 kết tách biên phần cứng FPGA Hình 13 Ảnh Lena bị làm nhiễu với nhiễu “salt and pepper” Hình 14 Ảnh nhiễu sau qua lọc Sobel phương pháp tách biên trực tiếp, biến thiên độ sáng khơng đột ngột biên khó tách hồn tồn Đối với lọc Sobel hay Prewitt, kết tách biên thực phần mềm phần cứng FPGA giống Điều cho thấy thuật toán xây dựng FPGA sử dụng công cụ XSG đảm bảo tính đắn thiết kế Quan sát kỹ ảnh tách biên Hình 9-12 nhận thấy rằng, lọc Sobel cho kết tách biên tốt hơn, có khả tách nhiều chi tiết (biên) so với lọc Prewitt, ví dụ phần mũ tóc Lena Chúng tơi thử nghiệm hai lọc với ảnh nhiễu đầu vào; đó, ảnh bị làm nhiễu với nhiễu “salt and pepper” (Hình 13) Kết thử nghiệm trình bày Hình 14 (Sobel) Hình 15 (Prewitt) Kết tách biên với ảnh bị nhiễu dùng lọc Sobel tốt lọc Prewitt, với nhiều chi tiết biên phát Việc thử nghiệm với loại nhiễu khác thực nghiên cứu Kết luận Bài báo trình bày ứng dụng FPGA cơng cụ hỗ trợ phát triển Xilinx System Generator thiết kế thực thuật toán tách biên ảnh phần cứng cấu hình lại FPGA Trong báo này, quy trình đồng thiết kế kiểm tra phần mềm, phần cứng (softwarehardware co-design) cho ứng dụng xử lý tín hiệu FPGA trình bày tương đối hồn chỉnh Tn theo quy trình này, ứng dụng xử lý tín hiệu khác (ngồi kỹ thuật tách biên ảnh khảo sát) dễ dàng thực thi đánh giá cách tương tự Hướng nghiên cứu bao gồm: i) tăng tốc độ thực mô phần mềm tính tốn phần cứng sử dụng XSG Simulink, ii) thực thuật toán xử lý tín hiệu khác FPGA sử dụng cơng cụ XSG theo quy trình biết TÀI LIỆU THAM KHẢO Hình 15 Ảnh nhiễu sau qua lọc Prewitt So sánh ảnh gốc (Hình 8) với ảnh kết thực tách biên với lọc Sobel (Hình 10) hay lọc Prewitt (Hình 11 12) thấy rằng: Phương pháp tách biên trực tiếp dựa vào biến thiên mức xám ảnh theo hướng cho kết tốt, chịu ảnh hưởng nhiễu Bên cạnh đó, số chi tiết tách biên chưa rõ ràng Điều giải thích hạn chế [1] Rafael C Gonzalez, and Richard E Woods, “Digital Image Processing”, 2nd Edition, Prentice-Hall, Inc., 2002 [2] Xilinx Inc., http://www.xilinx.com/ [3] Xilinx Inc., “Xilinx System Generator for DSP: User Guide”, http://www.xilinx.com/support/documentation/sw_manuals/sysgen _user.pdf [4] A Moreo, P Lorente, F Soto-Valles, J Muro, C Andres, "Experiences on developing computer vision hardware algorithms using Xilinx system generator", Microprocessors and Microsystems 29, pp 411–419, 2005 [5] Hong Nguyen, Cecile Belleudy, and Tuan Pham, "Performance and Evaluation Sobel Edge Detection on Various Methodologies," International Journal of Electronics and Electrical Engineering, Vol 2, No 1, pp 15-20, March 2014 BBT nhận bài: 01/07/2014, phản biện xong: 10/09/2014 ... vào xử lý khối tách biên Trong khối hậu xử lý ảnh (Hình 3), trình ngược lại thực để chuyển liệu ảnh nối tiếp đầu khối tách biên thành biểu diễn ảnh hai chiều đưa hiển thị kết tách biên cửa sổ... khối tiền xử lý ảnh thực môi trường MATLAB, tương tự khối Image Postprocessing Unit thực thi thao tác hậu xử lý ảnh sau nhận liệu đầu từ khối tách biên ảnh để hiển thị ảnh tách biên lên sổ MATLAB... Hình 10 Kết ảnh tách biên sử dụng lọc Sobel, kết tách biên phần cứng FPGA Kết tách biên trình bày Hình 8, 9, 10, 11 12 Trong đó: Hình hiển thị ảnh gốc ngõ vào (ảnh Lena) sử dụng để tách biên cho