Nội dung thực hiện đề tài: Nghiên cứu kiến trúc SoC ZYNQ-7000 và các chuẩn giao thức AXI, AXI4, AXI4-Stream trên ZYNQ-7000 Nghiên cứu các giải thuật trong bộ lọc xử lý phát hiện biên
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH
THỰC HIỆN VÀ ÐÁNH GIÁ HIỆU NĂNG CÁC BỘ LỌC XỬ LÝ ẢNH TRÊN NỀN TẢNG SoC ZYNQ-7000
S K L 0 0 5 3 2 0
GVHD: PHAN VĂN CA SVTH : LÊ MẠNH TRƯỜNG MSSV: 14119107
SVTH : VŨ ĐỨC HUY MSSV: 14119132
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
Tp Hồ Chí Minh, tháng 07 năm 2018
Trang 3TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
Tp Hồ Chí Minh, tháng 07 năm 2018
Trang 4Tp Hồ Chí Minh, ngày tháng năm 2018
Ngành:Công Nghệ Kỹ Thuật Máy Tính Lớp: 14119CL1
Giảng viên hướng dẫn: PGS.TS Phan Văn Ca ĐT:
Ngày nhận đề tài: 07/03/2018 Ngày nộp đề tài: 09/07/2018
1 Tên đề tài: Thực hiện và đánh giá hiệu năng các bộ lọc xử lý ảnh trên nền tảng SoC ZYNQ-7000
2 Các số liệu, tài liệu ban đầu:
Anphy Jose, K Deepa Merlin Dixon, Naiji Joseph, E Silpa George, V Anjitha,
"Performance study of edge detection operators," 2014 International Conference
on Embedded Systems (ICES), pp 7-11, July 2014
3 Nội dung thực hiện đề tài:
Nghiên cứu kiến trúc SoC ZYNQ-7000 và các chuẩn giao thức AXI, AXI4, AXI4-Stream trên ZYNQ-7000
Nghiên cứu các giải thuật trong bộ lọc xử lý phát hiện biên ảnh (Sobel, Prewitt, Canny)
Tích hợp các IPCore phần cứng với lõi ARM để tạo platform cho việc xây dựng các bộ lọc trên hệ thống
Xây dựng các IPCore phần cứng cho các bộ lọc xử lý ảnh trên ZYNQ-7000
Nâng cấp hệ thống bằng việc thay thế các bộ lọc ảnh trên phần mềm bằng các IPCore phần cứng đã xây dựng
So sánh tốc độ xử lý và đánh giá hiệu năng của các bộ lọc trên phần mềm và phần cứng
4 Sản phẩm: Chương trình các bộ lọc xử lý ảnh cho phần cứng và phần mềm trên
kit ZYNQ-7000
Trang 5PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên: Lê Mạnh Trường MSSV: 14119107
Vũ Đức Huy MSSV: 14119132 Ngành: Công nghệ kỹ thuật Máy Tính Tên đề tài: Thực hiện và đánh giá hiệu năng các bộ lọc xử lý ảnh trên nền tảng SoC ZYNQ-7000
Họ và tên Giáo viên hướng dẫn: PGS.TS Phan Văn Ca
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:……….(Bằng chữ: )
Tp Hồ Chí Minh, ngày 17 tháng 7 năm 2018
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
*******
Trang 6PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên: Lê Mạnh Trường MSSV: 14119107 …
Vũ Đức Huy MSSV: 14119132 Ngành: Công nghệ kỹ thuật Máy Tính Tên đề tài: Thực hiện và đánh giá hiệu năng các bộ lọc xử lý ảnh trên nền tảng SoC ZYNQ-7000
Họ và tên Giáo viên phản biện:
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:……….(Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng năm 2018
Giáo viên phản biện
(Ký & ghi rõ họ tên)
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
*******
Trang 7LỜI CẢM ƠN
Để nhóm nghiên cứu hoàn thành tốt đề tài này, nhóm đã nhận được sự hỗ trợ, giúp đỡ của nhiều thầy cô, bạn bè Với tình cảm sâu sắc, chân thành, cho phép nhóm nghiên cứu được bày tỏ lòng biết ơn sâu sắc đến tất cả các cá nhân, tổ chức đã tạo điều kiện giúp đỡ nhóm thực hiện đề tài trong suốt quá trình học tập và nghiên cứu đề tài Trước hết nhóm nghiên cứu xin gửi lời cảm ơn sâu sắc nhất đến thầy Phan Văn
Ca là giảng viên hướng dẫn đề tài cho nhóm, đã tận tâm, trách nhiệm, nhiệt tình chỉ bảo, định hướng cho nhóm trong suốt thời gian thực hiện đề tài và đã quan tâm giúp đỡ nhóm nghiên cứu hoàn thành tốt đề tài: "Thực hiện và đánh giá hiệu năng các bộ lọc xử
lý ảnh trên nền tảng SoC ZYNQ-7000"
Đồng thời nhóm xin gửi tới các thầy cô bộ môn Máy tính - Viễn thông Trường
ĐH Sư phạm Kỹ thuật Tp.HCM lời cảm ơn sâu sắc Vì sự quan tâm, dạy dỗ, chỉ bảo tận tình chu đáo của các thầy cô và đã tạo điều kiện tốt nhất để nhóm có thể hoàn thành tốt đề tài được giao
Nhóm nghiên cứu cũng xin cảm ơn quý thầy cô trong hội đồng bảo vệ đã dành chút thời gian quý báu của mình để xem luận văn tốt nghiệp của nhóm Và đánh giá những ưu khuyết điểm của luận văn này Đó sẽ là những nhận định quý báu để nhóm trau dồi thêm kiến thức hạn hẹp của mình và có thể vận dụng tốt hơn kiến thức đã học vào thực tiễn cuộc sống trong tương lai
Cuối cùng nhóm nghiên cứu xin gửi lời cảm ơn đến gia đình và bạn bè đã luôn đồng hành, góp ý và động viên nhóm trong suốt thời gian thực hiện đề tài Là điểm tựa tinh thần để nhóm có thể hoàn thành tốt đề tài này
Với kinh nghiệm còn hạn chế của một học viên, đề tài này không thể tránh được những thiếu sót Nhóm nghiên cứu rất mong nhận được sự chỉ bảo, đóng góp ý kiến của các thầy cô để nhóm có điều kiện bổ sung, nâng cao kiến thức của mình
Nhóm xin chân thành cảm ơn!
Thủ Đức, ngày tháng năm 2018
Trang 8đó nhóm nghiên cứu đã quyết định thực hiện đề tài này với các bộ lọc phát hiện biên ảnh, trong đề tài này hệ thống các bộ lọc xử lý ảnh sẽ được xây dựng trên nền tảng SoC ZYNQ-7000 một nền tảng mới được cung cấp bởi Xilinx, với chuỗi công cụ sử dụng cho thiết kế là Vivado 2017.4, Vivao HLS (High-Level Synthesis) 2017.4, SDK (Software Development Kit) 2017.4 và SDSoC (Software-Defined System On Chip) 2017.4 Trong đề tài này hệ thống sẽ nhận dữ liệu đầu vào từ cổng HDMI (High-Definition Multimedia Interface) trên kit ZYNQ-7000 và đầu ra kết quả xử lý sẽ hiện thị trên màn hình kết nối với cổng VGA (Video Graphics Array) Các giải thuật phát hiện biên ảnh Sobel, Prewitt, Canny sẽ được thực thi trên phần mềm, sau đó hệ thống
sẽ được cải tiến bằng việc thay thế các bộ lọc xử lý trên nền tảng phần mềm bằngcác IPCore đã được xây dựng trên nền tảng phần cứng nhằm tăng hiệu suất xử lý lên nhiều lần cụ thể tốc độ xử lý được cải tiến nhanh hơn khoản 100 lần so với phần mềm và 3 lần so với thực thi trên Matlab R2016a Tốc độ xử lý của một chu trình lọc biên ảnh của một bức ảnh với kích thước khung ảnh 1080x1920 pixel trên nền tảng phần cứng vào khoản 0.018s
Trang 9MỤC LỤC
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii
LỜI CẢM ƠN iv
TÓM TẮT v
MỤC LỤC vi
DANH MỤC TỪ VIẾT TẮT ix
DANH MỤC BẢNG BIỂU x
DANH MỤC HÌNH ẢNH VÀ BIỂU ĐỒ xi
Chương 1 : TỔNG QUAN 1
1.1 GIỚI THIỆU 1
1.2 MỤC TIÊU ĐỀ TÀI 3
1.3 NỘI DUNG THỰC HIỆN 4
1.4 TÌNH HÌNH NGHIÊN CỨU 5
1.5 BỐ CỤC QUYỂN BÁO CÁO 7
Chương 2 : CƠ SỞ LÝ THUYẾT 8
2.1 NỀN TẢNG SoC ZYNQ-7000 8
2.2 GIAO THỨC AXI, AXI4 11
2.3 MÔ HÌNH PIPELINE, DATAFLOW 14
Mô hình Pipeline 14
Mô hình Dataflow 16
2.4 GIẢI THUẬT TÁCH BIÊN ẢNH MÀU 17
Lý thuyết ảnh màu và xử lý ảnh 17
Kỹ thuật tách biên ảnh màu 20
2.4.2.1 Chuyển đổi ảnh xám 21
2.4.2.2 Tích chập trong xử lý ảnh 22
2.4.2.3 Bộ lọc Gaussian Blur 24
2.4.2.4 Bộ lọc Sobel 25
2.4.2.5 Bộ lọc Prewitt 26
Trang 102.4.2.6 Bộ lọc Canny 26
2.5 CƠ BẢN VỀ OPENCV 27
Chương 3 : THỰC HIỆN CÁC GIẢI THUẬT XỬ LÝ LỌC ẢNH TRÊN HW/SW 29
3.1 ĐẶC TẢ HỆ THỐNG 29
3.2 THỰC THI GIẢI THUẬT TRÊN NỀN TẢNG PHẦN MỀM 29
Quy trình thực thi thiết kế 29
Xây dựng Platform cho hệ thống 31
3.2.2.1 Xây dựng platform phần cứng cho hệ thống 32
3.2.2.2 Xây dựng platform phần mềm cho hệ thống 36
Triển khai các giải thuật 37
3.2.3.1 Giải thuật Sobel 37
3.2.3.2 Giải thuật Prewitt 39
3.2.3.3 Giải thuật Canny 40
3.3 THỰC THI GIẢI THUẬT TRÊN NỀN TẢNG PHẦN CỨNG 42
Quy trình thực thi thiết kế 42
Xây dựng các khối giao tiếp HDMI và VGA 44
Xây dựng các IPCore với các giải thuật phát hiện biên ảnh 48
3.3.3.1 IPCore với giải thuật Sobel 48
3.3.3.1 IPCore với giải thuật Prewitt 51
3.3.3.2 IPCore với giải thuật Canny 52
Chương 4 : KẾT QUẢ 59
4.1 SƠ ĐỒ MẠCH HỆ THỐNG TRÊN PHẦN CỨNG 59
4.2 THÔNG SỐ HỆ THỐNG TRÊN PHẦN CỨNG 63
4.3 KẾT QUẢ THỰC NGHIỆM VÀ SO SÁNH HIỆU SUẤT 65
Kết quả thực thi với giải thuật Sobel 66
Kết quả thực thi với giải thuật Prewitt 67
Kết quả thực thi với giải thuật Canny 68
Chương 5 : KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 69
5.1 KẾT LUẬN 69
Trang 115.2 HƯỚNG PHÁT TRIỂN 69
TÀI LIỆU THAM KHẢO 70 PHỤ LỤC 73
Trang 12DANH MỤC TỪ VIẾT TẮT
AI Artificial Intelligenc
HLS High-Level Synthesis
SDK Software Development Kit
SDSoC Software-Defined System On Chip
HDMI High-Definition Multimedia Interface
VGA Video Graphics Array
AXI Advanced Extensible Interface
ADAS Advanced Driver Assistance Systems
IoT Internet of Things
OpenCV Open Computer Vision
AMBA Advanced Microcontroller Bus Architecture
XDC Xilinx Design Constraints
IDE Integrated Development Environment
APU Application Processor Unit
IOP I/O Peripherals
FPU Floating Point Unit
MMU Memory Management Unit
MIO Multiplexed Input/Output
EMIO Extended Multiplexed Input/Output
CLB Configurable Logic Blocks
XADC Analog-to-digital converter
VDMA Video Direct Memory Access
PSNR Peak Signal to Noise Ratio
MSE Mean Square Error
Trang 13DANH MỤC BẢNG BIỂU
Bảng 4.1 Tài nguyên đã sử dụng cho hệ thống 63
Bảng 4.2 Thông số về năng lượng của hệ thống 63
Bảng 4.3 Thông số thời gian của các IPCore xử lý ảnh 64
Bảng 4.4 Thông số thời gian từng khối trong các IPCore 64
Bảng 4.5 Thông số khi thực thi bộ lọc Sobel 66
Bảng 4.6 Thông số khi thực thi bộ lọc Prewitt 67
Bảng 4.7 Thông số khi thực thi bộ lọc Canny 68
Trang 14DANH MỤC HÌNH ẢNH VÀ BIỂU ĐỒ
Hình 2.1 Kiến trúc ZYNQ-7000 8
Hình 2.2 Cấu trúc khối CLB 10
Hình 2.3 Hoạt động đọc và ghi dữ liệu trong giao diện AXI4 12
Hình 2.4 Quá trình truyền dữ liệu của giao thức AXI4-Stream 13
Hình 2.5 Hoạt động của AXI4 khi đọc một khung ảnh 14
Hình 2.6 Mô hình Pipeline 14
Hình 2.7 Ví dụ về áp dụng Pipeline trong xây dựng IPCore 15
Hình 2.8 Mô hình Dataflow 16
Hình 2.9 Mô hình Dataflow trong việc xây dựng IPCore 17
Hình 2.10 Các giai đoạn của hệ thống xử lý ảnh 18
Hình 2.11 Các mô hình biên ảnh tiêu biểu (a) biên ảnh dạng bước đột ngột, (b) biên ảnh dạng bước nghiêng, (c) biên ảnh dạng mái 20
Hình 2.12 Ảnh màu (trái), ảnh đã chuyển sang ảnh xám (phải) 22
Hình 2.13 Tích chập trong xử lý ảnh 23
Hình 2.14 Ảnh trước (trái) và sau (phải) khi qua bộ lọc Gaussian Blur 24
Hình 2.15 Lọc biên ảnh khi không sử dụng Gaussian (Trái) và có sử dụng Gaussian (Phải) 25
Hình 2.16 Lưu trữ ảnh dưới dạng Mat trong OpenCV (a) ảnh xám, (b) ảnh RGB 28
Hình 3.1 Sơ đồ đặc tả hệ thống 29
Hình 3.2 Quy trình thực thi thiết kế với phần mềm trên nền tảng ZYNQ-7000 30
Hình 3.3 Sơ đồ khối platform phần cứng 32
Hình 3.4 IP DVI to RGB 33
Hình 3.5 IP RGB to VGA 33
Hình 3.6 IP AXI Interconnect 34
Hình 3.7 Kết nối bên trong IP AXI Interconnect 34
Hình 3.8 IP AXI Direct Memory Access 35
Hình 3.9 IP ZYNQ7 Processing System 35
Hình 3.10 Sơ đồ kết nối các IPCore trong platform phần cứng 36
Hình 3.11 Lưu đồ giải thuật Sobel 37
Hình 3.12 Lưu đồ giải thuật Prewitt 39
Hình 3.13 Lưu đồ giải thuật Canny 40
Hình 3.14 Quy trình thực thi thiết kế với phần cứng trên nền tảng ZYNQ-7000 42
Hình 3.15 Sơ đồ khối hệ thống trên phần cứng 44
Hình 3.16 Sơ đồ khối IP DVI to RGB 45
Hình 3.17 IP Video Into AXI4-Stream 46
Hình 3.18 IP RGB to VGA 47
Hình 3.19 Sơ đồ kết nối các khối IP cho giao tiếp HDMI và VGA 47
Hình 3.20 Sơ đồ luồng dữ liệu IPCore bộ lọc Sobel 48
Trang 15Hình 3.21 IPCore bộ lọc Sobel 50
Hình 3.22 Sơ đồ luồng dữ liệu IPCore bộ lọc Prewitt 51
Hình 3.23 IPCore bộ lọc Prewitt 52
Hình 3.24 Sơ đồ luồng dữ liệu IPCore bộ lọc Canny 53
Hình 3.25 Quy ước hướng Gradient trong giải thuật 55
Hình 3.26 Mô tả kết quả sau khi tính tính toán Gradient 56
Hình 3.27 Cách sử dụng bộ nhớ đệm trong giải thuật 57
Hình 3.28 IPCore bộ lọc Canny 58
Hình 4.1 Sơ đồ kết nối toàn bộ hệ thống trên phần cứng 59
Hình 4.2 Sơ đồ kết nối khối đọc dữ liệu từ HDMI 60
Hình 4.3 Sơ đồ kết nối khối xuất dữ liệu qua VGA 61
Hình 4.4 Sơ đồ kết nối khối lọc ảnh 62
Hình 4.5 Kết quả thực thi với bộ lọc Sobel trên các nền tảng, (a) Ảnh gốc, (b) Matlab R2016a, (c) Phần mềm, (d) Phần cứng 66
Hình 4.6 Kết quả thực thi với bộ lọc Prewitt trên các nền tảng, (a) Ảnh gốc, (b) Matlab R2016a, (c) Phần mềm, (d) Phần cứng 67
Hình 4.7 Kết quả thực thi với bộ lọc Canny trên các nền tảng, (a) Ảnh gốc, (b) Matlab R2016a, (c) Phần mềm, (d) Phần cứng 68
Trang 16
xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, nén ảnh và truy vấn ảnh Trước đây xử
lý ảnh chủ yếu dược sử dụng trong việc nâng cao chất lượng hình ảnh Nhưng với sự phát triển vượt bậc về công nghệ, xử lý ảnh đã được ứng dụng rộng rãi hơn trong đời sống và đặc biệt xử lý ảnh là một mảng quan trọng trong lĩnh vực thị giác máy tính Ngày nay xử lý ảnh không chỉ gói gọn trong truyền thông mà còn mở rộng sang các lĩnh vực khác, như trong y học xử lý ảnh dùng để phát hiện khối u, biến đổi hình ảnh được tạo ra từ nguồn bức xạ X-ray thành hình ảnh quang học trên bề mặt phim x-quang, hay ứng dụng trong siêu âm 3 chiều giúp nhận biết các bộ phận cơ thể người và các nguy cơ tìm ẩn, hay sử dụng để nâng cao chất lượng hình ảnh X-ray [1] Trong lĩnh vực địa chất xử lý ảnh được dùng để khôi phục hình ảnh từ vệ tinh từ đó phục vụ cho việc phân tích dữ liệu xác định cấu trúc bề mặt trái đất giúp tạo ra các bản đồ 3D Trong nông nghiệp xử lý ảnh dùng để nhận diện loại côn trùng trong các vụ mùa, nhận diện hạt cafe từ đó đưa ra khuyến cáo cho người canh tác [2], [3] Ngoài ra trong công nghiệp xử lý ảnh dùng để giám sát hàng hóa, phân loại, nhận diện sản phẩm kiểm tra sản phẩm [4] Trong các lĩnh vực về bảo mật xử lý ảnh được ứng dụng trong các công nghệ bảo mật vân tay, hay gần nhất là công nghệ FaceID của Apple trên Iphone 8 ra mắt vào năm 2017 Đặc biệt xử lý ảnh còn là một phần quan trọng trong trí tuệ nhân tạo (AI - Artificial Intelligen), với việc giúp các robot có thể tự nhận biết được vật thể hay ứng dụng vào nhận biết làn đường, nhận biết vật cản trong các hệ thống xe tự hành, giám sát hoạt động của các phương tiện giao thông [5]
Đi song song với đó là các vấn đề về giải thuật xử lý ảnh, độ chính xác khi xử lý hay việc tối ưu lượng dữ liệu cần xử lý để tăng tốc độ xử lý hình ảnh Ta dễ dàng nhận thấy trong hầu hết các ứng dụng của xử lý ảnh thì lượng dữ liệu cần xử lý là rất lớn, bởi
vì phải xử lý trên từng điểm ảnh, nhưng không phải điểm ảnh nào cũng chứa thông tin cần cho mục đích xử lý Vì thế giải thuật phát hiện biên ảnh là một lựa chọn hoàn hảo
để giải quyết việc này Phát hiện biên ảnh giúp giảm tối đa lượng dữ liệu cần xử lý của một bức ảnh nhưng vẫn giữ lại được các đặc điểm quan trọng trong cấu trúc của hình ảnh cần xử lý và loại bỏ đi các thành phần màu không cần thiết [6], biên ảnh là thành phần quan trọng trong các kỹ thuật nén ảnh và phục hồi hình ảnh Các giải thuật phát hiện biên ảnh thông dụng là Sobel, Prewitt, Canny,… các giải thuật này đều dựa trên
Trang 17nền tảng sự chênh lệch cường độ mức xám giữa các pixel lân cận để phát hiện ra đường biên ảnh, mục tiêu chính của các bộ lọc này là tìm kiếm, phân loại và xác định các điểm gián đoạn trong một hình ảnh [7] Hiện nay có rất nhiều giải thuật dùng cho phát hiện biên ảnh trong xử lý ảnh với các ưu nhược điểm khác nhau tùy vào yêu cầu ứng dụng [8] Nhưng hầu hết các giải thuật đều được tiến hành trên phần mềm với sự
hỗ trợ từ các hàm trên Matlab, các giải thuật được thực thi với các vòng lặp lồng nhau nên độ trễ xử lý còn tương đối cao [9] Bên cạnh đó việc lựa chọn một nền tảng để triển khai các ứng dụng này cũng là một vấn đề vô cùng quan trọng Chúng ta có thể sử dụng một nền tảng phần mềm với việc tận dụng các lợi thế về tính linh hoạt, dễ tiếp cận và dễ dàng thực thi nhưng đổi lại sẽ là các vấn đề về hiệu suất hay tốc độ xử lý Chúng ta cũng có thể sử dụng một nền tảng phần cứng với việc tận dụng các lợi thế về các mô hình Pipeline, Dataflow để làm việc trên các ma trận một cách dễ dàng hơn nhằm cải thiện hiệu năng nhưng đổi lại sẽ là các vấn về tính linh hoạt và khó khăn trong việc tiếp cận
Trên cơ sở đó, trong đề tài nhóm nghiên cứu thực hiện giải thuật các bộ lọc biên ảnh Sobel Prewitt, Canny và tối ưu hóa thời gian xử lý các giải thuật với việc sử dụng nền tảng SoC ZYNQ-7000 - một nền tảng đáp ứng tốt trong việc xử lý ảnh, đây là một nền tảng dựa trên kiến trúc Xilinx All Programmable SoC, một nền tảng thực thi các thiết kế song song trên cả phần cứng lẫn phần mềm hướng đến SoC (System On Chip) Với sự kết hợp của 2 thành phần chính: PS (Processing System) là lõi ARM cotex-A9
và PL (Programmable Logic) với công nghệ 28nm của Xilinx Trong đó lõi ARM đóng vai trò chủ chốt điều hành toàn bộ hệ thống bao gồm cả bộ nhớ, giao diện giao tiếp bộ nhớ và bộ giao diện giao tiếp với các I/O [10] Nền tảng SoC ZYNQ-7000 là một nền tảng dùng để tùy biến trong các thiết kế hay nói cách khác là dùng để xây dựng các ứng dụng tùy chỉnh theo mong muốn người thiết kế nên để sử dụng các I/O trên nền tảng này ta phải xây dựng IPCore kết nối với các I/O này mới có thể sử dụng chúng Và giao thức cho các kết nối IPCore là giao thức theo chuẩn AXI (Advanced Extensible Interface), AXI4 đây là các giao diện theo quy ước của nhà sản xuất khi làm việc trên nền tảng SoC ZYNQ-7000
Trang 18Bên cạnh đó với việc xây dựng hệ thống các bộ lọc xử lý ảnh trên nền tảng SoC ZYNQ-7000, nhóm nghiên cứu muốn tận dụng lợi thế từ các kiến thức đã học về thiết
kế song song, SoC, các kiến thức về kiến trúc ARM, FPGA, các mô hình Pipeline, Dataflow vào thực tiễn cũng như xu hướng của công nghệ ở hiện tại và trong tương lai
Trang 191.3 NỘI DUNG THỰC HIỆN
Từ mục tiêu đề ra nhóm nghiên cứu đã tiến hành tìm hiểu và thực thi đề tài, việc thực thi đề tài được chia thành 3 nội dung chính:
Tìm hiểu về nền tảng phần cứng và các giải thuật
Nghiên cứu kiến trúc SoC ZYNQ-7000 và các chuẩn giao thức AXI, AXI4, AXI4-Stream trên ZYNQ-7000
Nghiên cứu về việc sử dụng các công cụ hỗ trợ Vivado, Vivado HLS, SDK, SDSoC và việc xây dựng các IPCore, Platform cho hệ thống
Nghiên cứu các giải thuật trong việc phát hiện biên ảnh (Sobel, Prewitt, Canny)
Nghiên cứu về cách thức hoạt động của các mô hình Pipeline, Dataflow trên nền tảng phần cứng
Tìm hiểu về các tệp XDC (Xilinx Design Constraints), đây là các tệp xuất hiện trong quá trình tổng hợp IPCore, chứa các ràng buộc cho IPCore được người dùng tạo ra phục vụ cho dự án, các chỉ dẫn được tham khảo từ tài liệu do Xilinx cung cấp [11], [12]
Xây dựng các IPCore phần cứng cho các bộ lọc xử lý ảnh trên
ZYNQ-7000 với việc ứng dụng các mô hình Pipeline, Dataflow
Nâng cấp hệ thống bằng việc thay thế các bộ lọc ảnh trên phần mềm bằng các IPCore phần cứng đã xây dựng
Kết nối hệ thống, xây dựng hệ thống trên phần cứng
Tiến hành thực nghiệm và đo các thông số của hệ thống trên cả phần cứng lẫn phần mềm
So sánh đánh giá
So sánh tốc độ xử lý và đánh giá hiệu năng của các bộ lọc trên phần mềm
và phần cứng
Trang 201.4 TÌNH HÌNH NGHIÊN CỨU
Trong những năm gần đây Việt Nam cũng có rất nhiều ứng dụng với việc ứng dụng các tính năng mạnh mẽ của xử lý ảnh như các nghiên cứu của FPT Software về nhận dạng mẫu (Pattern recognition) đang được phát triển dựa trên bộ mẫu Moire trong ảnh kĩ thuật số, tối ưu bảng Quantization trong JPEG, nhận dạng truyện tranh (hình ảnh, bóng ảnh và chữ), đọc hiểu hình ảnh từ X-ray Hay ADAS (Advanced Driver Assistance Systems) là một trong những mảng có số lượng nghiên cứu và ứng dụng lớn nhất ADAS cung cấp các nghiên cứu quan trọng để phát triển các loại cảm biến, xử lí thông tin cảm biến để trích xuất các tính năng liên quan, phát hiện và đếm được các loại phương tiện giao thông lưu động, phân tích hành vi của người điều khiển phương tiện… như các bài toán về đếm lưu lượng xe cộ theo thời gian thực, theo dõi đối tượng,
đo khoảng cách giữa các xe (Nguồn: www.tech.fpt.com.vn) Ngoài ra còn có nhiều đề tài nghiên cứu khác ứng dụng xử lý ảnh như việc ứng dụng xử lý ảnh cho ra soát, phát hiện và đếm số lượng tôm giống [13] bằng giải thuật trừ ảnh, tách lớp và phân đoạn ảnh mà ở đây cụ thể là giải thuật phát hiện biên ảnh từ đó lọc kích thước tôm và đếm số lượng tôm, việc áp dụng công nghệ vào xử lý giúp tăng cao hiệu suất công việc cũng như từng bước hiện đại hóa ngành nuôi trồng thủy hải sản Hay ứng dụng xử lý ảnh trong phân tích chứng minh nhân dân [14] nhằm số hóa các tài liệu giấy phục vụ cho lưu trữ và quản lý, ứng dụng được xây dựng bằng các giải thuật nhị phân ảnh đầu vào với bằng phương pháp Otsu, Sauvola, căn chỉnh độ nghiêng hình ảnh và tiến hành phân đoạn ảnh, phân vùng ảnh để xử lý, tìm và tách các trường thông tin cần thiết với mặt nạ dòng
Ngoài ra các ứng dụng về xử lý ảnh cũng được đăng tải rất nhiều trên tạp chí khoa học thế giới Như việc ứng dụng xử lý ảnh trong nông nghiệp để phát hiện côn trùng gây hại trong các vụ mùa [2], bằng cách sử dụng Sobel để phân đoạn hình ảnh côn trùng tác giả tiến hành phân tích và nhận dạng côn trùng thông qua hình dạng hình học của chúng, thuật toán được triển khai trên Matlab R2015b Hay một ứng dụng khác với việc áp dụng phát hiện biên ảnh vào hệ thống giám sát giao thông [5], ở đây tác giả
sử dụng giải thuật phát hiện biên ảnh để xử lý thông tin đầu vào nhận từ camera giám sát và chuyển hình ảnh đã qua xử lý cho các mô-đun tiếp theo trong hệ thống để tìm kiếm hình ảnh các phương tiện giao thông, loại bỏ các hình ảnh sai, hình ảnh không cần thiết từ camera giám sát, sau đó dùng dữ liệu này để phân tích hành vi của đối tượng được giám sát Một ứng dụng khác từ xử lý ảnh là áp dụng các giải thuật này vào
hệ thống IoT (Internet of Things) để xây dựng bãi đỗ xe thông minh [15], trong dự án này tác giả sử dụng xử lý ảnh để nhận dạng biển số xe, cung cấp vị trí trống trong bãi
đỗ xe, các thông tin nhận dạng biển số xe giúp cho việc quản lý bãi đỗ dễ dàng hơn vì
Trang 21chỉ có xe đã được đăng ký mới có thể vào bãi đỗ Các giải thuật xử lý ảnh được triển khai với mã nguồn mở OpenCV (Open Computer Vision) trên nền tảng Raspberry Pi Ngoài ra còn các ứng dụng khác với việc sử dụng nền tảng SoC ZYNQ-7000 như việc thực thi giải thuật nén ảnh dựa trên wavelet trên ZYNQ-7000 [16], hay việc mã hóa video 3D dựa trên nền tảng ZYNQ-7000 [17], ứng dụng trong việc truyền dữ liệu đa phương tiện với tốc độ nhanh hơn và đảm bảo về chất lượng hình ảnh Các ứng dụng này đều tận dụng lợi thế phần cứng để tăng tốc độ xử lý và việc thực thi đều được thực hiện với chuỗi công cụ Vivado, Vivado HLS, SDK, SDSoC
Trang 221.5 BỐ CỤC QUYỂN BÁO CÁO
Bố cục quyển báo cáo gồm 5 chương:
Chương 1 Tổng quan
Chương này trình bày tổng quan về đề tài đã thực hiện bao gồm mục tiêu, nhiệm
vụ, các công việc thực hiện và tình hình nghiên cứu Đồng thời giới thiệu về bối cảnh công nghệ hiện tại, lý do nhóm nghiên cứu lựa chọn đề tài này để thực hiện và các văn bản có liên quan đến đề tài
Chương 2 Cơ sở lý thuyết
Chương này trình bày về các cơ sở lý thuyết đã được nhóm nghiên cứu sử dụng trong đề tài Các kiến thức liên quan đến giải thuật phát hiện biên ảnh, lý thuyết về ảnh màu và xử lý ảnh, nền tảng SoC ZYNQ-7000, các giao diện giao tiếp giữa các IPCore
và các mô hình tối ưu giải thuật trên nền tảng SoC ZYNQ-7000
Chương 3 Thực hiện các giải thuật xử lý lọc ảnh trên HW/SW
Trong chương này trình bày về việc thực hiện các giải thuật, các bước xây dựng platform cho hệ thống, các bước xây dựng IPCore cho đề tài, các bước thực thi các giải thuật phát hiện biên ảnh Sobel, Prewitt, Canny với các mô hình tối ưu trên nền tảng SoC ZYNQ-7000 Sơ đồ kết nối các IPCore cho ứng dụng trên phần cứng cũng như platform cho việc xây dựng ứng dụng trên pần mềm với lõi ARM
Chương 4 Kết quả
Trong chương này trình bày về kết quả đã thực hiện được trên cả phần cứng lẫn phần mềm Đồng thời trình bày các thông số như số cổng logic, số lượng FF, số lượng LUT,… đã được sử dụng trong thiết kế Bên cạnh đó là so sánh thời gian xử lý của giải thuật trên phần cứng và phần mềm
Chương 5 Kết luận và hướng phát triển
Dựa trên những gì đã thực hiện chương này sẽ trình bày về nhận định của nhóm nghiên cứu về đề tài đã thực thi Từ đó đề ra định hướng phát triển cho đề tài trong tương lai
Trang 23Hình 2.1 Kiến trúc ZYNQ-7000
Trang 24ZYNQ – 7000 là sản phẩm được sản xuất bởi Xilinx vào năm 2012, dựa trên nền tảng cấu trúc của PSoC ZYNQ-7000 được tích hợp một hệ thống xử lý dựa trên lõi kép ARM Cortex-A9 (PS) và nền tảng FPGA Xilinx 28 nm (PL) CPU ARM Cortex-A9 MPCore là trung tâm của PS, bao gồm các bộ nhớ on-chip, giao diện bộ nhớ ngoài
và bộ thiết bị ngoại vi I/O phong phú [18] Nền tảng ZYNQ-7000 hỗ trợ rất tốt cho các thiết kế SoC, các khối IP được kết nối thông qua giao diện bus AXI
Cấu trúc của ZYNQ-7000 gồm các khối sau:
Khối hệ thống xử lý PS - Processing System
Khối đơn vị xử lý - APU (Application processor unit)
Khối giao diện giao tiếp bộ nhớ - MI (Memory interfaces)
Khối thiết bị ngoại vi - IOP (I/O peripherals)
Khối kết nối
Khối logic lập trình PL - Programmable Logic
Các khối logic có khả năng tái cấu hình - CLB (Configurable Logic Blocks)
Khối RAM
Khối xử lý tín hiệu số - DSP48E1
Khối XADC (Analog-to-digital converter)
PS và PL có thể được kết hợp chặt chẽ hoặc không chặc chẽ bằng nhiều giao diện
và các tín hiệu khác có tổng cộng hơn 3.000 kết nối Điều này cho phép tích hợp hiệu quả các bộ tăng tốc phần cứng do người dùng tạo và các chức năng khác trong PL có thể truy cập tới các bộ vi xử lý và cũng có thể truy cập các tài nguyên bộ nhớ trong hệ thống xử lý
Thành phần PS của ZYNQ-7000
Trong PS khối APU bao gồm hai lõi vi xử lý ARM Cortex-A9 Trong đó mỗi lõi đều bao gồm các khối NEON, khối xử lý dữ liệu dấu chấm động (FPU: Floating Point Unit), khối quản lý bộ nhớ (MMU: Memory Management Unit), hai bộ nhớ cache I-cache (Instructions cache) và D-cache (Data cache) cho việc lưu trữ lệnh và dữ liệu APU cũng bao gồm một bộ nhớ cache L2 và bộ nhớ on-chip (On-Chip Memory: OCM) dùng chung cho cả hai lõi vi xử lý Ngoài ra APU còn bao gồm các giao diện ngoại vi, giao diện ghép nối bộ nhớ, mạng truyền thông và mạch tạo tín hiệu đồng bộ Truyền thông giữa PS với các thiết bị ngoại vi bên ngoài có thể thực hiện trực tiếp thông qua khối ghép nối MIO (Multiplexed Input/Output) gồm 54 chân Ngoài ra có thể sử dụng các I/O là một phần của PL cho các ngoại vi của PS, việc này được thực hiện nhờ kết nối EMIO (Extended MIO) Các kết nối ngoại vi I/O trong PS gồm:
Trang 25 2 kết nối SPI: cung cấp một phương thức truyền thông nối tiếp sử dụng 4 dây cho cả truyền và nhận
2 kết nối I2C: cung cấp một phương thức truyền thông nối tiếp sử dụng 2 dây cho cả truyền và nhận
2 kết nối CAN: chuẩn truyền thông nối tiếp được sử dụng phổ biến trong ngành công nghiệp ô-tô
2 kết nối UART: chuần truyền thông nối tiếp thường dùng để kết nối thiết
bị đầu cuối với máy tính cho mục đích gỡ rối, sửa lỗi
4 bộ kết nối GPIO: bộ ghép nối song song 32-bit
2 kết nối SD: dùng ghép nối với SDCard
2 kết nối USB: tương thích chuẩn USB 2.0
2 kết nối Ethernet: hỗ trợ tốc độ kết nối 10Mbps, 100Mbps và 1Gbps
Thành phần PL của ZYNQ-7000
PL trên ZYNQ-7000 bao gồm các khối logic có khả năng tái cấu hình và một số tài nguyên phần cứng chuyên dụng tương thích với chuẩn FPGA Artix-7 và Kintex-7 của Xilinx:
Các thiết bị dựa trên Artix: Z-7010 và Z-7020
Các thiết bị dựa trên Kintex: Z-7030 và Z-7054
Cũng giống như các FPGA khác, phần PL của ZYNQ-7000 bao gồm các khối logic cấu hình (CLB), mỗi CLB gồm 2 slice Mỗi slice chứa 4 LUT, 8 Flip-flop (FF),
và một ma trận chuyển mạch (Switch Matrix) có chức năng định tuyến linh hoạt cho
Hình 2.2 Cấu trúc khối CLB
Trang 26việc kết nối giữa các phần tử trong một CLB hoặc từ khối CLB đến các tài nguyên khác trong PL Ngoài ra còn có khối RAM và DSP
2.2 GIAO THỨC AXI, AXI4
Để cho PS giao tiếp với các thiết bị ngoại vi phần cứng được khởi tạo trong PL, thì một giao thức truyền thông cho phép cả PS và PL truy cập thông tin chia sẻ trong
bộ nhớ DDR3 một cách kịp thời và có tổ chức phải được thực hiện Giao thức truyền thông này là một tiêu chuẩn công nghiệp được gọi là AXI AXI là một phần của ARM AMBA (Advanced Microcontroller Bus Architecture) một loại bus điều khiển ở cấp độ
vi mô đầu tiên được giới thiệu vào năm 1996 Phiên bản đầu tiên của AXI được đưa vào AMBA 3.0 phát hành năm 2003 AMBA 4.0 được phát hành năm 2010, bao gồm phiên bản thứ hai của AXI là AXI4 Có ba loại giao diện AXI4: AXI4, AXI4-Lite, AXI4-Stream [19]
Trong giao thức này các thành phần được kết nối theo mô hình chủ - tớ, nên tất cả các khối IP được thiết kế cho một nền tảng ZYNQ-7000 phải đóng vai trò hoặc là chủ hoặc là tớ trong giao thức AXI Thiết bị chủ có khả năng khởi tạo các lệnh đọc và ghi, trong khi các thiết bị tớ chỉ có thể trả lời các lệnh này Trong các giao thức ánh xạ bộ nhớ, tất cả các giao dịch liên quan đến khái niệm di chuyển địa chỉ đích trong không gian bộ nhớ hệ thống, trong đó các IP hoạt động trong một bản đồ bộ nhớ xác định Vì thế khi triển khai thiết bị ngoại vi hoặc xây dựng các IPCore thì chúng phải bao gồm các I/O cần thiết để cho phép chúng tham gia vào bus AXI
AXI4 cung cấp các cải tiến mang lại nhiều lợi ích trong hiệu năng, tính linh hoạt
Trang 27 Tính khả dụng: bằng cách chuyển sang chuẩn công nghiệp, người thiết kế
dễ dàng hơn trong việc tái sử dụng các IPCore trên các nền tảng khác nhau
do Xilinx cung cấp hay các nền tảng của các nhà cung cấp khác trên toàn thế giới, hay tích hợp các IPCore đã xây dựng với các IPCore được cung cấp bởi Xilinx hay của cộng đồng ARM với cùng tiêu chuẩn truyền thông Giao diện AXI4 bao gồm năm kênh khác nhau: Đọc địa chỉ, ghi địa chỉ, đọc dữ liệu, ghi dữ liệu, ghi phản hồi Dữ liệu có thể di chuyển theo cả hai hướng giữa chủ và
tớ một cách đồng thời, và kích thước dữ liệu có thể thay đổi được Việc đọc và ghi của AXI4 được thể hiện trong hình sau:
Hình 2.3 Hoạt động đọc và ghi dữ liệu trong giao diện AXI4
Trang 28Trong các giao diện của chuẩn AXI4 thì AXI4-Stream có tính tối ưu cao trong các ứng dụng về xử lý ảnh Giao thức AXI4-Stream được sử dụng cho các ứng dụng tập trung vào một mô hình dữ liệu tập trung và luồng dữ liệu, trong đó khái niệm về một địa chỉ là không có hoặc không cần thiết Mỗi AXI4-Stream hoạt động như một kênh đơn hướng duy nhất cho luồng dữ liệu có tính bắt tay trong quá trình truyền nhận
dữ liệu Ở mức hoạt động thấp hơn (so với các loại giao thức bộ nhớ AXI được ánh xạ), cơ chế di chuyển dữ liệu giữa IPCore được xác định và hiệu quả hơn IPCore theo chuẩn AXI4-Stream được tối ưu hóa tốt hơn về hiệu năng trong các ứng dụng luồng dữ liệu, nhưng cũng có xu hướng chuyên biệt hơn cho các ứng dụng cụ thể [19] AXI4-Stream là một giao thức được thiết kế để truyền tải các luồng dữ liệu một chiều tùy ý Giao diện AXI4- Stream bao gồm các tín hiệu: TVALID, TREADY, TDATA, TSTRB, TKEEP, TLAST, TID, TDEST và TUSER
Trong một luồng AXI4-Stream TDATA (dữ liệu cần truyền) của các bit được truyền trong mỗi chu kỳ xung đồng hồ Quá trình truyền được bắt đầu khi thành phần chủ báo hiệu TVALID và nhận được phản hồi với TREADY Tín hiệu TLAST báo hiệu byte cuối cùng của luồng – EOL (End Of Line), và tín hiệu TUSER báo hiệu byte đầu tiên khung dữ liệu – SOF (Start Of Frame) AXI4-Stream có các tính năng tùy chọn bổ sung: gửi dữ liệu vị trí với các cổng TKEEP và TSTRB giúp người thiết kế có thể ghép vị trí dữ liệu và dữ liệu trên các dòng TDATA, định tuyến luồng bằng TID và TDEST tương đương với định danh luồng và định danh đích đến của luồng
Hình 2.4 Quá trình truyền dữ liệu của giao thức AXI4-Stream
Trang 292.3 MÔ HÌNH PIPELINE, DATAFLOW
Mô hình Pipeline
Pipeline là một kỹ thuật làm cho các giai đoạn khác nhau của nhiều lệnh được thi hành cùng một lúc, giúp tối ưu về hiệu năng và giảm độ trễ xử lý giải thuật, tận dụng tối đa thời gian CPU Trong các kiến trúc phần mềm các lệnh thực hiện một cách tuần
tự luân phiên nhau, nhưng trong kiến trúc phần cứng ta có thể tận dụng tính song song
để thực hiện các lệnh cùng một lúc vì thế để tận dụng lợi thế này thì việc sử dụng kỹ thuật Pipeline là điều tất yếu Pipeline được vận dụng trong các vòng lặp để tối ưu thời gian xử lý Tuy nhiên kỹ thuật này có một vài ràng buộc về thời gian xử lý cũng như tính độc lập trong dữ liệu Trong kiến trúc máy tính, một chu trình thực hiện lệnh của
hệ thống gồm 5 bước: lấy lệnh (IF: Instruction Fetch), giải mã (ID: Instruction Decode), thi hành (EX: Execute), truy cập bộ nhớ (MEM: Memory Access), lưu trữ kết quả vào thanh ghi (WB: Write Back) [20] Nếu thực thi 5 lệnh riêng biệt một cách tuần
tự ta sẽ mất 25 chu kỳ xung nhịp, còn nếu áp dụng kỹ thuật Pipeline ta sẽ chỉ mất 9 chu
kỳ xung nhịp (Hình 2.6)
Hình 2.6 Mô hình Pipeline Hình 2.5 Hoạt động của AXI4 khi đọc một khung ảnh
Trang 30Để thực hiện được Pipeline đòi hỏi phải đơn giản hóa giải mã, các khối ALU phải
có khả năng tính toán mạnh mẽ trong thời gian ngắn, một số lượng lớn các thanh ghi
bộ nhớ để lưu trữ các dữ liệu trong quá trình thực hiện Khi xây dựng các IPCore cho nền tảng ZYNQ-7000 ta có thể dễ dàng áp dụng mô hình này vào tối ưu giải thuật với
sự hỗ trợ từ Vivado HLS và các cài đặt “#pragma”
Một khó khăn khi áp dụng mô hình này là việc xung đột dữ liệu và việc này được giải quyết dễ dàng bằng cách tinh chỉnh cấu hình Pipeline khi tổng hợp với các cài đặt
“#pragma” để tùy chỉnh độ trễ cho các lệnh trong vòng lặp [21] Hình 2.7 mô tả việc sử dụng PIPILNE trong các IPCore cho nền tảng ZYNQ-7000
Với độ trễ II=1 là không thể thực hiện với vòng lặp trên do hệ thống không thể đọc dữ liệu cùng lúc tại cùng một kênh vì thế việc thiết lập lại II có thể giải quyết vấn
đề này một cách nhanh chống hơn Việc tùy chỉnh độ trễ cho các lệnh thực thi trong các vòng lặp giúp người thiết kế có thể áp dụng Pipeline một cách hiệu quả cho các thiết kế Các thông số thiết lập cho việc tổng hợp Pipeline trên nền tảng ZYNQ-7000 được tham khảo tại “www.xilinx.com”
Hình 2.7 Ví dụ về áp dụng Pipeline trong xây dựng IPCore
Trang 31Mô hình Dataflow
Kiến trúc Dataflow là một kiến trúc máy tính tương phản trực tiếp với kiến trúc Von Neumann truyền thống Các kiến trúc Dataflow không có bộ đếm chương trình, hoặc khả năng thực thi và thực hiện các lệnh được xác định duy nhất dựa trên sự sẵn có của các đối số đầu vào cho các lệnh, để thứ tự thực hiện lệnh không thể đoán trước được Trong việc xây dựng IPCore phần cứng Dataflow cho phép các hàm và các vòng lặp chồng lên nhau trong hoạt động của chúng, tăng tính đồng thời của việc triển khai RTL và tăng thông lượng tổng thể của thiết kế Các thiết lập Dataflow được tùy chỉnh bằng các lệnh “#pragma” trong quá trình tổng hợp IP
Tối ưu hóa phần cứng với Dataflow có thể được sử dụng trong thiết kế ở cấp cao nhất, cho phép các khối hoạt động đồng thời, các khối có thể là các hàm hoặc vòng lặp Dataflow cho phép các vòng lặp hoạt động đồng thời, mô hình này đặt các kênh giữa các khối chức năng để duy trì tốc độ dữ liệu Đối với mảng, các kênh sẽ bao gồm các phần tử bộ nhớ đệm hoặc đối với các đối tượng vô hướng thì các kênh là một thanh ghi
có các tín hiệu bắt tay trong quá trình truyền nhận [21]
Hình 2.8 Mô hình Dataflow
Trang 32Mô hình Dataflow được ứng dụng trong việc xây dựng các IPCore được mô tả trong hình sau với các kênh được đặc giữa các khối xử lý chức năng:
vị cơ bản nhất để tạo nên một bức ảnh kỹ thuật số, mỗi pixel là một điểm ảnh Trong
xử lý ảnh các hình ảnh màu thường được lưu trữ trong bộ nhớ như là một bản đồ raster
có thể hiểu đó là một mảng hai chiều của ba số nguyên nhỏ hoặc là ba bản đồ raster riêng biệt cho mỗi kênh màu Ba nguyên tố này là thành phần để biểu diễn một ảnh màu và là đại diện cho không gian màu của ảnh
Không gian màu là một mô hình toán học dùng để mô tả các màu sắc trong thực
tế được biểu diễn dưới dạng số học Trên thực tế có rất nhiều không gian màu khác nhau được mô hình hóa để sử dụng vào những mục đích khác nhau Các không gian màu thường dùng trong xử lý ảnh số là RGB và YUV ngoài ra còn có các không gian màu như: HSV, CMYK
Không gian màu RGB: RGB là không gian màu rất phổ biến được dùng trong đồ
họa máy tính và nhiều thiết bị kĩ thuật số khác Không gian màu này là sự kết hợp của
3 màu sắc cơ bản : màu đỏ (R - Red), xanh lục (G - Green) và xanh dương (B - Blue)
để mô tả tất cả các màu sắc khác nhau Một ảnh màu được biểu diễn bởi không gian màu này thì mỗi pixel ảnh sẽ bao gồm 3 thành phần R-G-B Nếu một ảnh số được mã hóa bởi 24 bit thì mỗi kênh màu sẽ được biểu diễn bằng 8 bit với các giá trị từ 0 đến
255, như vậy ta sẽ có tổng cộng 255x255x255 = 1.66 triệu màu sắc
Hình 2.9 Mô hình Dataflow trong việc xây dựng IPCore
Trang 33Không gian màu YUV: Mô hình YUV quy định một không gian màu được tạo
bởi độ sáng và hai thành phần màu (chrominance) YUV được sử dụng trong hệ thống phát sóng truyền hình theo chuẩn PAL, đây là chuẩn ở phần lớn các nước Mô hình YUV giúp tạo ra màu đúng với nhận thức của con người hơn chuẩn RGB, là loại được dùng trong các thiết bị đồ hoạ máy tính Y đại diện cho thành phần độ sáng, U và V là đại diện cho các thành phần màu Các tín hiệu YUV đều xuất phát từ các nguồn RGB Các giá trị trọng số của R, G và B được cộng lại với nhau để tạo ra một tín hiệu Y đơn,
để biểu diễn độ sáng chung tại một điểm đó Tín hiệu U sau đó được tạo ra bằng các trừ
Y khỏi tín hiệu xanh dương (B của RGB), và được nhân với một tỉ lệ có sẵn, còn V được tính bằng cách trừ Y khỏi màu đỏ (R của RGB), và nhân tỉ lệ với một hệ số khác Các công thức sau có thể dùng để tính toán Y-U-V từ R-G-B:
số Một hình ảnh kỹ thuật số a[m, n] được mô tả trong một không gian rời rạc 2D được tạo ra từ một hình ảnh tương tự a(x, y) trong không gian liên tục 2D thông qua quá trình lấy mẫu, quá trình này gọi là số hóa ảnh [23]
Hình 2.10 Các giai đoạn của hệ thống xử lý ảnh
Nhận dạng
Hiển thị
Truyền thông Lưu trữ
Lưu trữ
Trang 34 Thu nhận ảnh: Qua các camera, từ vệ tinh qua các bộ cảm biến, qua các máy quét ảnh
Số hóa ảnh: Biến đổi ảnh tương tự thành ảnh rời rạc để xử lý bằng máy tính thông qua quá trình lấy mẫu (rời rạc về mặt không gian) và lượng tử hóa (rời rạc về mặt biên độ)
Xử lí ảnh số là một tiến trình gồm nhiều công đoạn nhỏ: tăng cường ảnh, khôi phục ảnh, phát hiện biên, phân vùng ảnh, trích chọn các đặc tính, …
Hệ quyết định: Tùy mục đích của ứng dụng mà chuyển sang giai đọan khác là hiển thị, nhận dạng, phân lớp, truyền thông…
Trang 35Kỹ thuật tách biên ảnh màu
Tách biên ảnh màu là một kỹ thuật trong việc phân đoạn ảnh phục vụ cho các bước tiếp theo của một hệ thống xử lý ảnh Phân đoạn ảnh giúp giảm bớt lượng thông tin cần xử lý và khoanh vùng đối tượng cần xử lý trong bức ảnh Biên ảnh là ranh giới giữa hai vùng không đồng nhất Các thuộc tính mức xám của hai khu vực ở hai bên của một biên ảnh là khác biệt nhau Một biên ảnh thường được trích xuất bằng cách tính đạo hàm của hàm cường độ hình ảnh, bao gồm hai phần [24]:
Độ lớn của đạo hàm: đo cường độ, độ tương phản của biên ảnh
Hướng của vector phát sinh: hướng biên ảnh
Hai phương pháp chính của phát hiện biên ảnh là TM (Template Matching) và
DG (Differential Gradient) Trong cả hai cách mục đích là để tìm nơi cường độ gradient đủ lớn để làm dấu hiệu nhận biết vị trí cạnh của vật thể Cả hai phương pháp
DG và TM ước tính cường độ gradient bằng các mặt nạ tích chập thích hợp Phương pháp DG chỉ cần hai mặt nạ theo hướng x và y Phương pháp TM sử dụng tối đa 12 mặt nạ tích chập có khả năng ước tính các thành phần của gradient theo các hướng khác nhau (Prewitt, 1970; Kirsch, 1971; Robinson, 1977; Abdou và Pratt, 1979) Trong phương pháp TM cường độ gradient được ước lượng bằng cách lấy tối đa các phản hồi
Hình 2.11 Các mô hình biên ảnh tiêu biểu (a) biên ảnh dạng bước đột ngột, (b) biên
ảnh dạng bước nghiêng, (c) biên ảnh dạng mái
Trang 36Một quy trình phát hiện biên ảnh sẽ bao gồm 4 bước:
Làm mịn: loại bỏ các thành phần nhiễu trên ảnh mà không phá hủy các biên ảnh thực sự
Tăng cường: áp dụng một bộ lọc để nâng cao chất lượng của các biên ảnh trong hình ảnh (sắc nét)
Phát hiện: xác định các điểm ảnh nào cần được loại bỏ và cần được giữ lại
Bản địa hóa: xác định vị trí chính xác của một biên ảnh (độ phân giải pixel phụ có thể được yêu cầu cho một số ứng dụng, nghĩa là, ước tính vị trí của một cạnh tốt hơn khoảng cách giữa các pixel)
2.4.2.1 Chuyển đổi ảnh xám
Trong một hệ thống xử lý ảnh, để bắt đầu xử lý ảnh ảnh đầu vào phải trải qua quá trình tiền xử lý, quá trình này giúp quá trình xử lý dễ dàng triển khai thuật toán hơn Khi muốn xử lý thông tin trên ảnh, sẽ dễ dàng hơn nếu ta chỉ xử lý dữ liệu trên một ma trận số thay vì nhiều ma trận số Việc biến đổi ảnh màu về ảnh xám giúp giải quyết vấn
đề này, biến đổi ảnh xám thực hiện biến đổi thông tin ảnh về một ma trận số hai chiều duy nhất
Ảnh xám hay còn gọi là ảnh đơn sắc (Monochromatic) Ảnh với 8 giá trị mức xám mỗi điểm ảnh sẽ có giá trị nằm trong đoạn [0-7], ảnh 256 giá trị mức xám mỗi điểm ảnh sẽ có giá trị nằm trong đoạn [0-255].Giá trị của điểm ảnh bằng 0 đại diện cho điểm ảnh tối (đen), giá trị điểm ảnh lớn nhất đại diện cho điểm ảnh sáng (trắng) Độ sáng của ảnh đa mức xám được tính theo công thức (chuyển đổi từ hệ màu RGB):
𝑆 = 0.299 ∗ 𝑅 + 0.587 ∗ 𝐺 + 0.114 ∗ 𝐵 (2.6)
Giá trị của mỗi điểm ảnh hay còn gọi là cường độ sáng (Luminance Intensity) trong ảnh xám tính được là tổng trọng số khác nhau của mỗi thành phần màu trong hệ màu RGB Một trong những lý do của việc này là nếu chúng ta sử dụng cùng trọng số,
ví dụ (R + G + B) / 3 thì màu đỏ, màu xanh lá cây hay màu xanh da trời sẽ có cùng mức xám sau khi chuyển đổi Mặt khác theo khoa học đã chứng minh thì mắt người nhạy cảm hơn với thành phần màu xanh lá cây và màu đỏ so với xanh da trời.(Nguồn http://www.ieev.org)
Trang 372.4.2.2 Tích chập trong xử lý ảnh
Tích chập là kỹ thuật quan trọng trong xử lý ảnh, được sử dụng chủ yếu trong các phép toán trên ảnh như: đạo hàm ảnh, làm trơn ảnh, trích xuất biên ảnh Theo toán học, tích chập là phép toán tuyến tính, cho ra kết quả là một hàm bằng việc tính toán dựa trên hai hàm đã có Phép tích chập có thể được mô tả trực quan như một hàm số là tích phân của hai hàm thành phần và đo lường số lượng chồng chéo khi một hàm được dịch chuyển qua một hàm khác Tích chập tại một điểm là kết quả của hai hàm xảy ra khi cạnh đầu tiên của xung đi qua điểm đó, toán tử biểu diễn cho phép tích chập là “*” Tuy nhiên một hình ảnh về bản chất là một ma trận hai chiều, vì thế trong xử lý ảnh khi
áp dụng tích chập cho các hàm ảnh ta dùng phép tích chập 2D [26] Công thức tích chập giữa hàm ảnh 𝑓(𝑥𝑓, 𝑦𝑓) và bộ lọc 𝑘(𝑥𝑘, 𝑦𝑘) được biểu diễn như sau:
Mô hình tích chập này được mô tả trong hình sau:
Hình 2.12 Ảnh màu (trái), ảnh đã chuyển sang ảnh xám (phải)
Trang 38Thành phần không thể thiếu của phép tích chập là ma trận kernel (bộ lọc) Điểm neo (anchor point) của kernel sẽ quyết định vùng ma trận tương ứng trên ảnh để tích chập, thông thường điểm neo được chọn là tâm của kernel Giá trị mỗi phần tử trên kernel được xem như là hệ số tổ hợp với lần lượt từng giá trị độ xám của điểm ảnh trong vùng tương ứng với kernel Phép tích chập được hình dung thực hiện bằng việc dịch chuyển ma trận kernel lần lượt qua tất cả các điểm ảnh trong ảnh, bắt đầu từ góc bên trái trên của ảnh Và đặt điểm neo tương ứng tại điểm ảnh đang xét Ở mỗi lần dịch chuyển, thực hiện tính toán kết quả mới cho điểm ảnh đang xét bằng công thức tích chập Một vấn đề phát sinh khi trượt ma trận kernel trên ảnh nguồn là vùng kernel sẽ vượt ra khỏi phạm vi ảnh tại các vùng biên của toàn bức ảnh Một số cách xử lý vùng kernel vượt ra ngoài khỏi ảnh được đề cập đến là:
Bỏ qua, không thực hiện tính phần tử đó vào kết quả
Sử dụng một hằng số để tính toán
Nhân đôi pixel nằm ở biên của ảnh
Trong đề tài này nhóm nghiên cứu áp dụng cách loại bỏ các pixel ở biên ảnh không cho vào kết quả
Hình 2.13 Tích chập trong xử lý ảnh
Trang 392.4.2.3 Bộ lọc Gaussian Blur
Để áp dụng một giải thuật phát hiện biên ảnh cho một hình ảnh ta cần làm mịn ảnh cần xử lý và loại bỏ các điểm nhiễu trên ảnh, tăng mức độ chính xác cho thuật toán Bộ lọc Gaussian được sử dụng để giải quyết vấn đề này Trong xử ảnh, một hình ảnh đầu ra của bộ lọc Gaussian blur là kết quả của việc làm mờ một hình ảnh bằng một hàm Gaussian [27]
Gaussian Blur là một hiệu ứng được sử dụng rộng rãi trong phần mềm đồ họa, điển hình là giảm nhiễu hình ảnh Gaussian Blur cũng được sử dụng như là một giai đoạn tiền xử lý trong các thuật toán thị giác máy tính để tăng cường cấu trúc hình ảnh ở quy mô khác nhau, việc áp dụng hiệu ứng Gaussian Blur có tác dụng giảm các thành phần tần số cao của ảnh, vì Gaussian Blur là một bộ lọc thông thấp Hàm Gaussian trong Gaussian Blur dùng để tính toán phép biến đổi áp dụng cho từng pixel trong hình ảnh Phương trình của hàm Gaussian theo một chiều là:
Trang 40Trong đó x là khoảng cách tính từ gốc tọa độ theo trục hoành, y là khoảng cách tính từ gốc tọa độ theo trục tung và σ là độ lệch chuẩn của phân bố Gaussian Giá trị từ phân phối này được sử dụng để xây dựng ma trận tích chập được áp dụng cho hình ảnh gốc Giá trị mới của mỗi pixel được đặt thành mức trung bình có trọng số của vùng lân cận của pixel đó Khi triển khai giải thuật này ma trận tích chập cho hàm Gaussian thường được sử dụng là một ma trận 5x5 với giá trị σ được tính như sau:
𝜎 = 0.3 (𝑠𝑖𝑧𝑒 − 1
Trong giải thuật phát hiện biên ảnh Gaussian Blur giúp loại bỏ nhiễu, nâng cao chất lượng hình ảnh, giảm các thông tin không cần thiết trên ảnh giúp tăng hiệu quả cho quá trình triển khai thuật toán, ảnh hưởng của Gaussian Blur trong giải thuật phát hiện biên ảnh được thể hiện trong hình sau
2.4.2.4 Bộ lọc Sobel
Bộ lọc Sobel thực hiện phép đo gradient không gian 2 chiều trên một hình ảnh và
do đó nhấn mạnh các vùng có tần số không gian cao tương ứng với các cạnh Sobel được sử dụng để tìm độ lớn gradient tuyệt đối gần đúng tại mỗi điểm trong một ảnh xám Kỹ thuật này sử dụng 2 ma trận lọc xấp xỉ đạo hàm theo hướng x và y có kích thước 3x3 để tính xấp xỉ các dẫn xuất theo cả hai chiều ngang, dọc của ma trận ảnh Nếu chúng ta định nghĩa A là hình ảnh nguồn, và Gx và Gy là hai hình ảnh mà tại mỗi điểm chứa các xấp xỉ đạo hàm ngang và dọc tương ứng, các tính toán như sau [28]:
Hình 2.15 Lọc biên ảnh khi không sử dụng Gaussian (Trái)
và có sử dụng Gaussian (Phải)