Danh mục các hình vẽ trong đồ án tốt nghiệpHì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ố.. Trong
Trang 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
Trang 2Lờ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
Trang 3Mụ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
Trang 4Ghi 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
Trang 53.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
Trang 6Danh 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.
Trang 7Hì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.
Trang 8Mở đầ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
Trang 9Trong 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
Trang 10Phầ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:
Trang 11Qua sơ đồ trên, ta có thể thấy thị giác máy tính và thị giác máy có liên quan đến rất nhiều ngành như tự động điều khiển, xử lý ảnh số, quang học, sinh học, toán học, máy học và Trí tuệ nhân tạo Sự kết hợp của những ngành này tạo cho Thị giác máy tính một khả năng ứng dụng hết sức rộng lớn trong mọi lĩnh vực của khoa học, sản xuất và đời sống Có thể liệt kê một
số ứng dụng của thị giác máy tính như sau :
Điều khiển tiến trình (ví dụ: trong các robot công nghiệp, hay các thiết bị,
xe tự hành)
Phát hiện sự kiện (ví dụ: các thiết bị giám sát)
Tự động hóa tòa nhà
Mô hình hoá đối tượng (ví dụ: quá trình kiểm tra trong môi trường công nghiệp, xử lý ảnh trong y học)
Tương tác (đóng vai trò làm đầu vào cho thiết bị trong quá trình tương tác giữa người và máy)
Nhận dạng
Quân sự
Trong lĩnh vực điều khiển tiến trình, thị giác máy tính đóng vai trò đặc biệt quan trọng như một cảm biến vị trí cho robot công nghiệp hoặc xe tự hành
Trong hệ thống máy CNC, hoặc các dây chuyền công nghệ, các cảm biến thị giác thu thập dữ liệu ảnh về đối tượng công nghiệp, xử lý và tách đối tượng ra khỏi ảnh Sau khi tách đối tượng, hệ thống thị giác máy tính toán các đặc trưng của đối tượng, như vị trí, hướng, để giúp cánh tay máy của robot công nghiệp thao tác chính xác việc gắp hoặc gia công đối tượng
Với những hệ thống thị giác được tích hợp các camera có độ phân giải lớn, được lập trình chính xác, có thể điều khiển tay máy để thao tác với những vi mạch nhỏ đòi hỏi độ chính xác gần như tuyệt đối
Trang 12Hì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
Cũng như vậy, với xe tự hành đi trong môi trường phức tạp, nhiều vật cản, hệ thống thị giác máy giúp cho xe phát hiện ra những đối tượng, vị trí và khoảng cách của chúng đối với xe Trong trường hợp này, hệ thống thị giác máy không chỉ đóng vai trò như môt cảm biến thị giác, mà còn thực hiện việc
vẽ bản đồ đối tượng, cho phép xe tự hành chọn được đường đi thích hợp nhất
Hệ thống thị giác máy còn được ứng dụng trong những lĩnh vực công nghiệp với vai trò như một cảm biến kiểm soát lỗi bề mặt sản phẩm Camera thu thập hình ảnh về bề mặt sản phẩm, sẽ truyền dữ liệu vào cho hệ thống xử
lý để tìm ra lỗi trên sản phẩm, vị trí lỗi và kích thước lỗi Với những hệ thống thị giác sử dụng camera hồng ngoại, ta còn có thể đo nhiệt độ sản phẩm và sự phân bố nhiệt độ trên sản phẩm
Như vậy, có thể nói, trong lĩnh vực công nghiệp, thị giác máy và cảm biến thị giác có thể thay thế một lượng lớn các cảm biến ví trí thông thường, vốn cần rất nhiều trong một dây chuyền sản xuất hoặc CNC, giúp giảm thiểu chi phí và công sức lắp đặt cảm biến, và quan trọng nhất là tạo nên một hệ thống
xử lý thống nhất những thông tin về quá trình và đối tượng công nghiệp Trong lĩnh vực tự động hóa tòa nhà, hệ thống thị giác máy cũng đóng một vai trò ngày càng quan trọng
Trang 13Với sự phát triển của các thuật toán xử lý dữ liệu ảnh, ứng dụng các thành tựu mới nhất của công nghệ xử lý và trí tuệ nhân tạo, các cảm biến thị giác ngày nay có thẻ thực hiện những chức năng thông minh như đếm số người trong phòng, nhận dạng đối tượng chuyển động, nhận dạng khuôn mặt, cảnh báo sự kiện, nhận dạng vân tay
Các hãng như ALTALS và SELTEC, đã cho ra đời những máy đếm số người, dựa trên chuỗi hình ảnh Bằng cách quan sát sự di chuyển của dòng người và số người , hệ thống thị giác máy sẽ tính toán tốc độ và mật độ dòng người di chuyển Bài toán này được ứng dụng nhiều trong những khu công cộng như nhà ga, tàu điện ngầm để kiểm soát lưu lượng người ra vào nhằm đưa ra những quyết định điều hành chính xác.[2]
Hệ thống thị giác máy còn được ứng dụng rộng rãi trong việc nhận dạng, chuẩn đoán y học, quân sự ( xác định vị trí đối phương) và vũ trụ
Xu thế phát triển của các cảm biến ngày nay, đó là độ chính xác cao, kèm với tính phân tán, thông minh, khả năng loại bỏ lỗi (fault tolerance) Các hệ thống cảm biến thị giác đang chứng tỏ ngày càng đáp ứng được xu thế đấy Các hệ thống cảm biến thị giác ngày nay, đã có thể thay thế được một lượng lớn cảm biến vị trí trong những bài toán cụ thể, đồng thời, khả năng xử lý thông tin không cần đến sự điều khiển của bộ điều khiển trung tâm, cho phép chúng có thể tích hợp rộng rãi vào những hệ thống điều khiển phân tán Thêm vào đó, các cảm biến thị giác có tính linh hoạt rất cao, có thể ứng dụng trong nhiều bài toán với những yêu cầu đo đạc và giám sát khác nhau Và cuối cùng, do đặc điểm hoạt động của mình, các cảm biến thị giác có thể hoạt động tốt trong những môi trường khắc nghiệt, như nhiệt độ cao, phóng xạ, bụi, điện trường, độ ẩm lớn
Với những 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