Thiết kế hệ thống xử lý ảnh số trên nền FPGA
www.ngohaibac.net 1 ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA ĐIỆN – BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG THIẾT KẾ HỆ THỐNG XỬ LÝ ẢNH SỐ TRÊN N ỀN FPGA Nhóm sinh viên thực hiện: Ngô Hải Bắc Đỗ Trung Hiếu Lớp Điều khiển tự động 1 – K48 Giáo viên hướng dẫn: Ts. Lưu Hồng Việt HÀ NỘI - 2008 www.ngohaibac.net 2 Lời cảm ơn Trước hết, chúng em xin gửi lời cảm ơn sâu sắc đến thầy giáo TS. Lưu Hồng Việt, người đã giúp đỡ rất nhiều về định hướng nghiên cứu, thiết bị thí nghi ệm phục vụ cho nghiên cứu. Chúng em xin chân thành c ảm ơn các thầy cô giáo đã giảng dạy chúng em, đặc biệt là các thầy cô giáo trong Bộ môn Điều khiển tự động – Khoa Điện, TS. Phạm Ngọc Nam – Phó Trưởng bộ môn Điện tử - Tin học – Khoa Điện tử Viễn Thông – Trường Đại học Bách Khoa Hà Nội đã tạo điều kiện giúp đỡ chúng em hoàn thành đồ án tốt nghiệp này. Xin chân thành c ảm ơn Dave Vanden Bout, kĩ sư của công ty XESS Corporation đã trả lời tận tình những thắc mắc của chúng em về KIT XSA- 3S1000 và XST-3.0. Và cu ối cùng, chúng em xin dành tất cả lòng biết ơn và kính trọng sâu sắc nh ất tới bố mẹ chúng em, những người đã sinh thành, nuôi dưỡng chúng em nên người, đã lo lắng, chỉ bảo từ những việc nhỏ nhất, đã tạo mọi điều kiện cho chúng em được sống và học tập một cách tốt nhất để vươn tới những ước mơ và hoài bão của mình. M ặc dù đã rất nỗ lực và cố gắng để hoàn thành luận văn tốt nghiệp này, song ch ắc chắn không thể tránh khỏi sai sót. Vì vậy, chúng em rất mong được s ự chỉ bảo của thầy cô giáo để đề tài tốt nghiệp này hoàn thiện hơn. www.ngohaibac.net 3 Mục lục Lời cảm ơn 2 Mục lục . 3 Danh mục các hình vẽ trong đồ án tốt nghiệp 6 Mở đầu 8 Phần 1 : Cơ sở lý thuyết xử lý ảnh số . 10 1.1. Khái quát về hệ thống Thị giác máy tính và Cảm biến thị giác 10 1.3. Các thành phần của hệ thống xử lý ảnh: . 16 1.3.1. Thành phần thu thập ảnh, Camera và vấn đề định dạng ảnh 16 1.3.2. Thành phần xử lý ảnh 17 1.3.2.1. Các khái niệm cơ bản của xử lý ảnh số 17 1.3.2.2. Các thuật toán xử lý ảnh số . 18 1.4. Một số giải pháp phần cứng cho hệ thống thị giác máy . 28 FPGA 28 DSP Processor . 28 Mainboard, laptop . 29 Phần 2 : Khái quát về FPGA và mạch phát triển XST 3S1000 của XESS 31 2.1. Giới thiệu chung về FPGA và ngôn ngữ VHDL 31 2.1.1. Khái niệm và ứng dụng FPGA 31 2.1.2. Kiến trúc FPGA . 32 2.1.2.1. Kiến trúc chung FPGA 32 Configurable Logic Blocks (CLBs) 33 Configurable I/O Blocks . 34 Programmable Interconnect . 34 Mạch đồng hồ (Clock Circuitry ) . 35 2.1.2.2. So sánh giữa cấu trúc nhỏ và cấu trúc lớn . 36 2.1.2.3. So sánh giữa SDRAM Programming và Anti-fuse programming 36 2.1.2.4. Cấu trúc FPGA của Spartan 3 . 37 2.1.3. Trình tự thiết kế một chip 38 www.ngohaibac.net 4 Ghi các đặc điểm kĩ thuật . 39 Chọn công nghệ 40 Chọn một hướng tiếp cận thiết kế 40 Chọn công cụ tổng hợp . 40 Thiết kế chip . 41 Mô phỏng – cái nhìn tổng quan về thiết kế 41 Tổng hợp 41 Place and Route 41 Mô phỏng lại – tổng quan cuối cùng 42 Kiểm tra 42 2.1.4. Ngôn ngữ mô tả phần cứng VHDL . 42 Trình tự thiết kế một chíp dựa trên VHDL . 43 2.2. Giới thiệu mạch phát triển XST 3S 1000 của hãng XESS 44 2.2.1. XSA-3S1000 45 2.2.2. XST-3.0 (XStend Board) . 46 2.3. Giới thiệu hãng Xilinx và các công cụ lập trình: 49 Hãng Xilinx . 49 ISE 9.2 . 49 LogicCore 9.2 . 49 EDK 9.2 . 50 System Generator 9.2 . 50 Phần 3 : Xây dựng hệ thống xử lí ảnh động trên nền FPGA 51 3.1. Sơ đồ cấu trúc hệ thống xử lí ảnh động . 51 3.2. Xây dựng hệ thống thu thập, lưu trữ, xử lý và hiển thị ảnh 53 3.2.1. Thành phần thu thập ảnh Framegrabber . 53 3.2.2. Lưu dữ liệu từ Framegrabber vào SDRAM 55 3.2.3. Các cơ chế ghi đọc SDRAM: SDRAM Controller, Dual Port SDRAM 55 SDRAM Controller 55 Pipeline Read Operation 56 Pipeline Write Operation . 56 Dualport Module for the SDRAM Controller 58 www.ngohaibac.net 5 3.2.4. Image Processing core . 60 3.2.5. Hiển thị ảnh lên VGA: VGA Generator 67 VGA Color Signals 67 VGA Signal Timing . 68 Nguyên tắc hoạt động của VGA Generator 69 3.2.6. Picoblaze và hệ thống điều khiển trung tâm 71 3.2.6.1. Khái quát PicoBlaze . 71 KCPSM3 Module . 73 Kết nối với bộ nhớ ROM chương trình 73 3.2.6.2. Sơ đồ cấu trúc của khối xử lý trung tâm 75 Thuật toán của chương trình . 75 3.3. Thiết kế giao diện điều khiển hệ thống . 76 Chức năng 77 3.4. Mô phỏng và kết quả . 77 Phương án mô phỏng . 77 Kết quả 78 Kết luận 79 Tài liệu tham khảo . 82 www.ngohaibac.net 6 Danh mục các hình vẽ trong đồ án tốt nghiệp Hình 1.1 Một tay máy thực hiện gắp đối tượng với sự trợ giúp của hệ thống thị giác máy tính Hình 1.2 Các bước cơ bản của xử lý ảnh số. Hình 1.3 Những kiểu liên kết giữa các điểm ảnh. Hình 1.4 Những kiểu đường liên kết giữa các điểm ảnh. Hình 1.5 Kết quả của phép lọc Gaussian với cửa sổ 3x3. Hình 1.6 Kết quả thuật toán dò biên. Hình 1.7 Phân ngưỡng theo lược đồ xám. Hình 1.8 Loại bỏ nhiễu và khôi phục đối tượng bằng quá trình làm mảnh-làm đầy. Hình 1.9 Sơ đồ thuật toán gán nhãn đối tượng. Hình 2.1 Kiến trúc chung của FPGA. Hình 2.2 Một Logic Block điển hình. Hình 2.3 Configurable Logic Blocks. Hình 2.4 Programmable Interconnect. Hình 2.5 Cấu trúc các thành phần của Spartan 3A. Hình 2.6 Design Flow. Hình 2.7 Qui trình thiết kế chip dựa trên VHDL. Hình 2.8 KIT XSA-3S1000. Hình 2.9 Sơ đồ cấu trúc của XSA-3S1000. Hình 2.10 XST-3.0 Board. Hình 2.11 XST-3S1000. Hình 3.1 Một ảnh cần được xử lý. Hình 3.2 Sơ đồ chung của hệ thống. Hình 3.3 Pixel stream waveform. Hình 3.4 Framegrabber state machine. Hình 3.5 Pipelined Read Operation timing waveforms. Hình 3.6 Pipelined Write Operation timing waveforms. Hình 3.7 Ghép nối với SDRAM Controller. Hình 3.8 Ghép nối dualport với SDRAM Controller. Hình 3.9 Xây dựng 4 ports SDRAM interface. Hình 3.10 Sơ đồ khối xử lý ảnh. Hình 3.11 Khối ghi dữ liệu từ read_fifo vào Buffer. www.ngohaibac.net 7 Hình 3.12 Khối thuật toán xử lý ảnh. Hình 3.13 Cơ chế ghi và đọc buffer. Hình 3.14 Khối đọc dữ liệu từ buffer. Hình 3.15 Sơ đồ khối thanh ghi dịch Pixel register Hình 3.16 Cấu trúc nhân chập. Hình 3.17 Cấu trúc bộ xử lý đồng cấu ảnh nhị phân. Hình 3.18 Khối gán nhãn đối tượng. Hình 3.19 VGA Connection. Hình 3.20 8 màu cơ bản. Hình 3.21 CRT Display Timing Example. Hình 3.22 640 x 480 Mode VGA Control Timing. Hình 3.23 Sơ đồ khối cấu trúc của VGA Generator. Hình 3.24 Sơ đồ khối cấu trúc của PicoBlaze. Hình 3.25 Sơ đồ cấu trúc PicoBlaze Microcontroller. Hình 3.26 Sơ đồ khối điều khiển trung tâm và giao tiếp UART. Hình 3.27 Giao diện điều khiển. www.ngohaibac.net 8 Mở đầu Thị giác máy là một lĩnh vực đã và đang rất phát triển. Khái niệm thị giác máy – Computer vision có liên quan t ới nhiều ngành học và hướng nghiên c ứu khác nhau. Từ những năm 1970 khi mà năng lực tính toán của máy tính ngày càng tr ở nên mạnh mẽ hơn, các máy tính lúc này có thể xử lý được nh ững tập dữ liệu lớn như các hình ảnh, các đoạn phim thì khái niệm và kỹ thuật về thị giác máy ngày càng được nhắc đến và nghiên cứu nhiều hơn cho tới ngày nay. Th ị giác máy bao gồm lý thuyết và các kỹ thuật liên quan nhằm mục đích tạo ra một hệ thống nhân tạo có thể tiếp nhận thông tin từ các hình ảnh thu được hoặc các tập dữ liệu đa chiều. Ngày nay, ứng dụng của thị giác máy đã trở nên rất rộng lớn và đa dạng, len l ỏi vào mọi lĩnh vực từ quân sự, khoa học, vũ trụ, cho đến y học, sản xuất, và t ự động hóa tòa nhà. M ục đích của đồ án này là nghiên cứu các khái niệm cơ bản của Thị giác máy tính và x ử lý ảnh số. Đồng thời trên cơ sở đó, chúng em xây dựng một h ệ thống cảm biến thị giác trên nền phần cứng vi mạch khả trình FPGA. Cảm bi ến này thực hiện các chức năng cơ sở của một cảm biến thị giác : đó là tiếp nh ận thông tin từ hình ảnh thu được để xử lý và phục vụ cho các quá trình phân tích cao h ơn. www.ngohaibac.net 9 Trong phần 1 của đồ án, chúng em đề cập đến những các khái niệm của hệ thống thị giác máy tính, những ứng dụng và các thành phần của nó. Đồng th ời chúng em trình bày cơ sở kiến thức xử lý ảnh số sẽ được dùng trong việc xây d ựng hệ thống cảm biến thị giác. Trong ph ần 2, chúng em trình bày những khái niệm cơ bản về chip khả trình FPGA, hãng Xilinx và những công cụ lập trình và phát triển hệ thống v ới FPGA. Chúng em cũng đề cập đến vi mạch tích hợp XST 3S 1000 của hãng XESS, được sử dụng trong đồ án này. Ph ần 3, chúng em trình bày phương án thực thi hệ thống thị giác máy trên n ền FPGA. Việc xây dựng các thành phần thu thập ảnh, lưu trữ ảnh, xử lý ảnh và hiện thị ảnh trên mạch tích hợp XST 3S 1000 được đề cập chi tiết trong ph ần này. Trong phần này, chúng em cũng trình bày phương án chạy mô ph ỏng kiểm tra hoạt động của hệ thống. Và cu ối cùng, chúng em tổng kết những kết quả đạt được, những ưu điểm, nhược điể m của giải pháp, hiệu quả của giải pháp và những hướng phát tri ển. www.ngohaibac.net 10 Phần 1 : Cơ sở lý thuyết xử lý ảnh số 1.1. Khái quát về hệ thống Thị giác máy tính và Cảm biến thị giác Theo định nghĩa từ [1] : Hệ thống thị giác - bao gồm cả thị giác máy (machine vision) và th ị giác máy tính (computer vision)- là những hệ thống ti ếp nhận thông tin từ các cảm biến thị giác (vision sensor) với mục đích cho phép máy móc đư a ra những quyết định thông minh. Th ị giác máy tính là một ngành khoa học mới phát triển. Mặc dù đã có nh ững ứng dụng của xử lý ảnh số trong những thập niên đầu của thế kỉ XX vào m ột số lĩnh vực, nhưng phải đến những năm 1970, những nghiên cứu về lĩnh vực này mới được bắt đầu khi máy tính đã có thể quản lý các quá trình x ử lý một lượng lớn dữ liệu như các ảnh số. L ĩnh vực nghiên cứu của thị giác máy rất rộng, và đặc điểm chung là các bài toán v ề thị giác máy tính đều không có một đề bài chung và cách giải duy nh ất. Mỗi giải pháp giải quyết vấn đều được một kết quả nhất định cho nh ững trường hợp cụ thể. Ta có thể thấy sự tương quan giữa Computer vision v ới các lĩnh vực khác như sau: [...]... www.ngohaibac.net Hệ thống xử lý ảnh số bao gồm một phạm vi rộng các kiến thức về phần cứng, phần mềm và cơ sở lý thuyết Các bước cơ bản của xử lý ảnh số được mô tả trong sơ đồ dưới đây: Phân vùng, phân ngưỡng Biểu diễn Tiền xử lý Cơ sở kiến thức Xử lý và nhận dạng Thu nhận ảnh Hình 1.2 : Các bước cơ bản của xử lý ảnh số Thu thập ảnh( image acquision) : Ảnh số được thu thập bằng một cảm biến ảnh có khả năng... giải pháp trên, còn nhiều những giải pháp phần cứng khác cho một hệ thống xử lý ảnh số như : Main công nghiệp, Single Board Computer(SBC) sử dụng Single on Chip (SoC) Trong đồ án này, chúng em sử dụng giải pháp là vi mạch khả trình FPGA để xây dựng toàn bộ hệ thống xử lý ảnh và điều khiển trung tâm Mục đích của đề tài là xây dựng một hệ thống xử lý ảnh trên nên FPGA, trong đó thực hiện được một số thuật... Các thành phần của hệ thống xử lý ảnh: 1.3.1 Thành phần thu thập ảnh, Camera và vấn đề định dạng ảnh Giới thiệu chung về camera : Trong hệ thống xử lý ảnh số, camera là một thiết bị rất quan trọng có chức năng quan sát và thu nhận ảnh đầu vào của hệ thống Nó thường được coi là hộp đen trong đó có các quá trình biến đổi để chuyển một ảnh thành dạng lưu trữ trong máy tính Các bước xử lý này bao gồm sự... lý do đó, hệ thống thị giác máy và cảm biến thị giác đang ngày càng được ứng dụng nhiều trong những hệ thống phức tạp và hiện đại, hoạt động liên tục và đòi hỏi yêu cầu về độ chính xác và xử lý thông tin cao 1.2 Khái quát quá trình xử lý ảnh số trong hệ thống thị giác máy tính Hệ thống thị giác máy tính bao gồm nhiều lĩnh vực, trong đó xử lý ảnh số đóng một vai trò quyết định 13 www.ngohaibac.net Hệ. .. độ và hiệu suất xử lý, đòi hỏi những nền phần cứng đủ mạnh với khả năng xử lý và tính thời gian thực cao Dưới đây là một số giải pháp phần cứng thường được sử dụng cho một hệ thống xử lý ảnh số FPGA Đây là giải pháp về phần cứng mà hay được sử dụng hiện nay Tận dụng đặc tính của FPGA là linh hoạt và tốc độ xử lý nhanh (cứng hoá các giải thuật), đặc biệt với khả năng xử lý song song, FPGA rất phù hợp... tiện cho các quá trình xử lý cao hơn Đầu ra của quá trình phân vùng ảnh là các pixel chưa được lọc, bao gồm liên kết của 1 vùng hoặc tất cả các điểm ảnh trong vùng đó Số liệu này cần được biến đổi thành dạng thích hợp cho máy tính xử lý Phân tích ảnh: đây là giai đoạn xử lý bậc cao trong hệ thống xử lý ảnh số Ảnh sau khi được phân vùng thành các đối tượng riêng biệt, đã được đánh số phân biệt, sẽ được... vào quá trình lưu trữ và xử lý Các chuẩn video thường gặp như IUT-R-BT 656, 601 Tiền xử lý ảnh : Sau khi ảnh số được thu thập dưới dạng tín hiệu số, cần phải trải qua giai đoạn tiền xử lý Chức năng chủ yếu của tiền xử lý là cải thiện ảnh, nâng cao các tính chất của ảnh giúp cho các quá trình xử lý về sau 14 www.ngohaibac.net được thuận tiện hơn Các công đoạn cơ bản của tiền xử lý là : nâng cao độ tương... ngưỡng, phân vùng, xử lý đồng cấu ảnh nhị phân, đánh nhãn đối tượng và cuối cùng là tính toán các đặc trưng của đối tượng (vị trí, diện tích ) Hệ thống được xây dựng với mục đích thử nghiệm những thuật toán xử lý ảnh số đã được nghiên cứu, sử dụng công nghệ FPGA, đồng thời tạo nền tảng cho hệ thống thị giác máy tính với những thuật toán xử lý cao hơn 30 www.ngohaibac.net Phần 2 : Khái quát về FPGA và mạch... hợp Một số kiến trúc FPGA hiện nay còn có thể cho phép cấu hình lại từng phần (partial re-configuration) Có nghĩa là cho phép một phần của thiết kế được cấu hình lại trong khi những thiết kế khác vẫn tiếp tục hoạt động Một ưu điểm khác của FPGA, là người thiết kế có thể tích hợp vào đó các bộ xử lý mềm (soft processor) hay vi xử lý tích hợp (embedded processor) Các vi xử lý này có thể được thiết kế như... các thuật toán xử lý ảnh số cơ bản, người ta thường sử dụng một toán tử đặc biệt gọi là toán tử cửa sổ Toán tử cửa sổ là một tập hợp có hình dạng nhất định, gồm các pixel có liên kết với một pixel trung tâm, là pixel đang được xử lý Các phép 18 www.ngohaibac.net toán trên các pixel này sẽ có ảnh hưởng đến các pixel trung tâm cũng là các pixel đang được xử lý trong một thuật toán xử lý ảnh Toán tử cửa