TÓM TẮT Ngày nay, xử lý ảnh số đang phát triển không ngừng và được ứng dụng trong hầu hết các lĩnh vực, chẳng hạn như xử lý video thời gian thực, nhận dạng chữ viết, vân tay, ảnh y học,
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
gịh
NGUYỄN QUANG MINH
THIẾT KẾ CORE XỬ LÝ ẢNH TRONG
HỆ THỐNG MULTIMEDIA (MULTIMEDIA CORE DESIGNS FOR
IMAGE PROCESSING)
Chuyên ngành: KỸ THUẬT VÔ TUYẾN ĐIỆN TỬ Mã số ngành: 2.07.01
LUẬN VĂN THẠC SĨ
Thành phố Hồ Chí Minh, tháng 7/2005
Trang 2Trước tiên, tôi xin chân thành cảm ơn Thầy hướng dẫn PGS.TS LÊ TIẾN THƯỜNGG đã tận tình hướng dẫn, luôn độngviên, giúp đỡ, và hỗ trợ về cơ sở vật chất, tài liệu và thiết bịtrong suốt quá trình tôi thực hiện luận văn này Sự độngviên và hỗ trợ kịp thời của thầy đã giúp tôi vượt qua đượcnhững khó khăn trong lúc thực hiện đề tài
-Tôi xin chân thành cảm ơn các thầy cô trong Khoa Điện –Điện Tử cùng các thầy cô thỉnh giảng đã truyền thụ kiếnthức quý giá trong quá trình tôi học tập và nghiên cứu ởtrường
Con xin cảm ơn ba, mẹ, những anh chị em trong gia đìnhđã tạo điều kiện và động viên con trong những lúc khókhăn khi thực hiện luận văn này
Xin chân thành cảm ơn các bạn bè đã giúp đỡ và góp ýtrong quá trình thực hiện luận văn
Do thời gian và kiến thức có hạn nên việc thực hiện đề tàikhông thể tránh khỏi thiếu sót Tôi rất mong sự góp ý củacác thầy cô và bạn bè để đề tài được hoàn chỉnh hơn
Tp Hồ Chí Minh, ngày 5 tháng 7 năm 2005 Học viên thực hiện
Nguyễn Quang Minh
Trang 3Nowaday digital image processing is continually grown and used in variety of fields, including real-time video processing, fingerprint/handwriting recognition, medical imaging, robotics, defect detection for automated production systems, space exploration, etc Many low-level image processing algorithms, such as denoising which uses linear or non-linear spatial filters, edge detection, contrast enhancement and sharpening, are usually implemented by software However, as image sizes and bit depths grow larger, software has become less useful, especially in real-time video processing
Today, with advances in the VLSI (Very Large Scale Integration) technology, hardware implementation has become an attractive alternative for low-level image processing Reconfigurable hardware in the form of Field Programmable Gate Arrays (FPGAs) has been proposed as a way of obtaining high performance for computationally intensive DSP applications such as Digital Image Processing (DIP), even under real time requirements Assigning complex computation tasks to hardware and exploiting the parallelism in algorithms and pipelining yield significant speed up in running times In this thesis, the most common low-level image processing algorithms such as image convolution, median filter and the variants based on it, are implemented as cores which can reuse in many image processing applications The hardware modeling is accomplished using VHSIC (Very High Speed Integrated Circuit) Hardware Description Language (VHDL) and simulated on ModelSim 5.6 SE These algorithms are also verified by implementing on Spartan-3 FPGA This thesis is separated into five chapters:
Chapter 1: Introduction
This chapter presents the motivation, research scope and meaning of the thesis, prior related work
Chapter 2: Core and core design tools
This chapter provides information on HDLs (Hardware Description Language), FPGAs, Spartan-3 FPGA, Spartan-3 Starter Kit, core-based system design concepts and core design process
Chapter 3: Background
This chapter describes the digital images, types of image noise, image processing algorithms like image convolution, median filter and the variants of it, Laplacian, Prewitt and Sobel operator
Chapter 4: Implementation
This chapter presents details on the implementation of the image processing algorithms for a 256x256 gray scale image
Chapter 5: Conclusions and Future work
The results are evaluated and future work is recommended
Keywords: FPGA, image processing algorithms, core, convolution, median filters
Trang 4TÓM TẮT
Ngày nay, xử lý ảnh số đang phát triển không ngừng và được ứng dụng trong hầu hết các lĩnh vực, chẳng hạn như xử lý video thời gian thực, nhận dạng chữ viết, vân tay, ảnh y học, robot, phát hiện lỗi trong các hệ thống tự động sản xuất, viễn thám… Nhiều giải thuật xử lý ảnh mức thấp chẳng hạn như khử nhiễu dùng các bộ lọc không gian tuyến tính và phi tuyến, tách biên, nâng cao độ tương phản và làm sắc nét ảnh, thường được cài đặt bằng phần mềm Tuy nhiên, khi kích thước ảnh và độ sâu màu càng lớn thì phần mềm càng trở nên ít hữu dụng, nhất là trong lĩnh vực xử lý video thời gian thực
Với sự cải tiến trong công nghệ VLSI (Very Large Scale Integration), việc cài đặt phần cứng đã trở thành một chọn lựa đáng quan tâm cho quá trình xử lý ảnh cấp thấp Các thiết
bị khả tái cấu hình dạng FPGA được đưa ra như một phương thức cài đặt để đạt được hiệu suất cao cho các ứng dụng DSP đòi hỏi độ tính toán rất lớn chẳng hạn như xử lý ảnh số, ngay cả với các yêu cầu thời gian thực Việc cài đặt các tác vụ tính toán phức tạp lên phần cứng và tận dụng cơ chế song song (parallelism) trong giải thuật cùng với kỹ thuật đường ống (pipelining) làm tăng tốc đáng kể thời gian thực thi Trong luận văn này, các giải thuật xử lý ảnh thông dụng như tích chập ảnh, bộ lọc median và các biến thể dựa trên nó sẽ được cài đặt như các core để có thể sử dụng lại trong các ứng dụng xử lý ảnh khác nhau Mô hình phần cứng được thực hiện dùng ngôn ngữ mô tả phần cứng VHDL và được mô phỏng bằng phần mềm ModelSim 5.6 SE Đồng thời các giải thuật cũng được cài đặt trên Spartan-
3 FPGA để kiểm tra
Luận văn được chia làm năm chương:
Chương 1: Giới thiệu
Chương này trình bày về lý do chọn đề tài, nội dung, phạm vi nghiên cứu và ý nghĩa của đề tài cũng như tình hình nghiên cứu liên quan đến đề tài
Chương 2: Core và các công cụ thiết kế core
Chương này cung cấp thông tin về các ngôn ngữ mô tả phần cứng HDLs, FPGAs, Spartan-3 FPGA, Spartan-3 Starter Kit, các khái niệm về thiết kế hệ thống dựa trên core và qui trình thiết kế core
Chương 3: Lý thuyết cơ sở
Chương này mô tả về ảnh số, các loại nhiễu trên ảnh số, các giải thuật xử lý ảnh như tích chập, bộ lọc median và các biến thể của nó, toán tử Laplacian, Prewitt, Sobel
Chương 4: Thực hiện
Chương này mô tả chi tiết về cách cài đặt các giải thuật xử lý ảnh cho ảnh xám 256x256
Chương 5: Kết luận và hướng mở rộng
Chương này đánh giá các kết quả đạt được và đề ra các hướng mở rộng của đề tài
Trang 5MỤC LỤC
Chương 1: GIỚI THIỆU 1
1.1 Đặt vấn đề 1
1.2 Tổng quan tình hình nghiên cứu 2
1.3 Nội dung và phạm vi nghiên cứu 3
1.4 Giải pháp thực hiện 3
1.5 Ý nghĩa của đề tài 4
Chương 2: CORE VÀ CÁC CÔNG CỤ THIẾT KẾ CORE 5
2.1 Các ngôn ngữ mô tả phần cứng 5
2.1.1 AHDL (Altera Hardware Description Language) 5
2.1.2 Verilog HDL (Verilog Hardware Description Language) 5
2.1.3 VHDL (Very high speed integrated circuit Hardware Description Language).5 2.2 Các công nghệ cài đặt hiện đại 5
2.2.1 ASIC (Application Specific Integrated Circuit) 6
2.2.2 DSP (Digital Signal Processor) 6
2.2.3 FPGA (Field-Programmable Gate Array) 7
2.3 Giới thiệu về họ Spartan-3 FPGA và Spartan-3 Starter Kit 9
2.3.1 Họ Spartan-3 FPGA 9
2.3.2 Spartan-3 Starter Kit 12
2.4 Thiết kế hệ thống dựa trên core (core-based system design) 14
2.5 Qui trình thiết kế core 16
2.5.1 Thiết kế core mức đỉnh (top-level) 16
2.5.2 Thiết kế các subcore 18
2.5.3 Tích hợp các subcore 18
Chương 3: LÝ THUYẾT CƠ SỞ 20
3.1 Ảnh số (digital image) 20
Trang 63.2 Các loại nhiễu 21
3.2.1 Nhiễu cộng 21
3.2.2 Nhiễu nhân 22
3.2.3 Nhiễu xung 23
3.3 Cơ bản về lọc không gian (spatial filtering) 23
3.4 Các bộ lọc nhẵn không gian (smoothing spatial filters) 25
3.4.1 Các bộ lọc nhẵn tuyến tính (smoothing linear filters) 25
3.4.2 Các bộ lọc thứ tự thống kê (order-statistics filters) 26
3.4.2.1 Bộ lọc median (Median Filter_MF) 26
3.4.2.2 Bộ lọc max và min 27
3.4.3 Các bộ lọc median cải tiến 28
3.4.3.1 Bộ lọc median có trọng số trung tâm 28
3.4.3.2 Bộ lọc ‘relaxed median’ 28
3.4.3.3 Bộ lọc median đa trạng thái 29
3.5 Các bộ lọc nét không gian (sharpening spatial filters) 31
3.5.1 Tăng cường ảnh dùng đạo hàm bậc 2 – Toán tử Laplacian 32
3.5.2 Tăng cường ảnh dùng đạo hàm bậc 1 – Toán tử Gradient 35
Chương 4: THỰC HIỆN 38
4.1 Bộ tạo cửa sổ 39
4.2 Khối xử lý các biên 44
4.3 Tích chập ảnh (image convolution) 51
4.4 Bộ lọc median 58
4.5 Bộ lọc median có trọng số trung tâm 67
4.6 Bộ lọc relaxed median 74
4.7 Bộ lọc median đa trạng thái 79
4.8 Các kết quả thử nghiệm với ảnh số 88
Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 98
Tài liệu tham khảo 99
Trang 7CÁC HÌNH VẼ
Hình 2.1 Kiến trúc tiêu biểu của một FPGA 7
Hình 2.2 Các nối kết khác nhau đối với các loại FPGA 8
Hình 2.3 Các chuyển mạch (switch) khả lập trình với các công nghệ khác nhau 9
Hình 2.4 Kiến trúc họ Spartan-3 FPGA 10
Hình 2.5 Tổ chức các slice trong CLB (họ Spartan-3 FPGA) 10
Hình 2.6 Các đường dẫn dữ liệu của RAM khối (họ Spartan-3 FPGA) 11
Hình 2.7 Hai dạng nguyên mẫu của các bộ nhân (họ Spartan-3 FPGA) 12
Hình 2.8 Spartan-3 Starter Kit 12
Hình 2.9 Sơ đồ khối board mạch Spartan-3 Starter Kit 13
Hình 2.10 Luồng thiết kế thông thường và luồng thiết kế SoC 14
Hình 2.11 Luồng thiết kế chip tiêu biểu 15
Hình 2.12 Qui trình thiết kế core 17
Hình 2.13 Thiết kế core mức đỉnh 18
Hình 2.14 Thiết kế subcore 19
Hình 3.1 Ảnh số với độ phân giải 8x8 20
Hình 3.2 Một ảnh xám 512 x 512 tiêu biểu 21
Hình 3.3 Các loại nhiễu thường gặp trên ảnh số 22
Hình 3.4 Cơ chế của lọc không gian 23
Hình 3.5 Toán tử cửa sổ (mặt nạ) 3x3 24
Hình 3.6 Vùng lân cận 3x3 khi pixel đang xử lý nằm ở đường biên của ảnh 24
Hình 3.7 Các pixel bị mất được thay thế bởi giá trị của lân cận gần nhất của chúng 25
Hình 3.8 Hai cửa sổ lọc nhẵn tuyến tính 3x3 26
Hình 3.9 Bộ lọc median 27
Hình 3.10 Kết quả giảm nhiễu bằng bộ lọc trung bình và bộ lọc median 3x3 27
Hình 3.11 Hoạt động của bộ lọc RMF 29
Hình 3.12 Sơ đồ nguyên lý của bộ lọc MSMF 30
Hình 3.13 Mặt nạ lọc dùng để cài đặt toán tử Laplacian số 33
Hình 3.14 Mặt nạ tổng hợp và kết quả lọc 34
Hình 3.15 Các mặt nạ tăng cường (high-boost mask) (A ≥ 1) 34
Trang 8Hình 3.16 Lọc Laplacian tăng cường 35
Hình 3.17 Vùng 3x3 của ảnh và các mặt nạ được dùng để tính gradient tại điểm z5 36
Hình 3.18 Tăng cường ảnh dùng gradient 37
Hình 4.1 Luồng thiết kế 38
Hình 4.2 Kiến trúc tổng quát của các bộ lọc không gian 39
Hình 4.3 Giao diện của bộ tạo cửa sổ 40
Hình 4.4 Kiến trúc tổng quát của bộ tạo cửa sổ 41
Hình 4.5 Kiến trúc của một FIFO tiêu biểu 42
Hình 4.6 Kết quả mô phỏng của khối tạo cửa sổ 43
Hình 4.7 Sơ đồ nguyên lý RTL của bộ tạo cửa sổ 44
Hình 4.8 Giao diện của khối xử lý các biên 45
Hình 4.9 Kiến trúc tổng quát của khối xử lý các biên 47
Hình 4.10 Giản đồ trạng thái của khối xử lý các biên 48
Hình 4.11 Kết quả mô phỏng của khối xử lý các biên 49
Hình 4.12 Sơ đồ nguyên lý RTL của khối xử lý các biên 50
Hình 4.13 Tích chập ảnh 51
Hình 4.14 Giao diện của khối tích chập ảnh (2-D) 51
Hình 4.15 Kiến trúc tổng quát của khối tích chập ảnh 53
Hình 4.16 Giao diện của bộ đếm hàng-cột 54
Hình 4.17 Kết quả mô phỏng của bộ đếm hàng-cột 55
Hình 4.18 Sơ đồ nguyên lý RTL của bộ đếm hàng-cột 56
Hình 4.19 Kết quả mô phỏng của bộ tích chập ảnh 2-D 56
Hình 4.20 Sơ đồ nguyên lý RTL của bộ tích chập 58
Hình 4.21 Nguyên lý làm việc của bộ lọc median 59
Hình 4.22 Giao diện của bộ lọc median 59
Hình 4.23 Sơ đồ khối của bộ lọc thứ tự thống kê 61
Hình 4.24 Giao diện của bộ sắp xếp 61
Hình 4.25 Cấu trúc tổng quát của mạng sắp xếp Batcher 63
Hình 4.26 Mạng sắp xếp Batcher với 4 phần tử (hình a) và 8 phần tử (hình b) 63
Hình 4.27 So sánh và sắp xếp cho pixel thứ 9 (P9) 64
Hình 4.28 Kết quả mô phỏng của bộ sắp xếp 65
Trang 9Hình 4.29 Kết quả mô phỏng của bộ lọc median 66
Hình 4.30 Sơ đồ nguyên lý RTL của bộ lọc thứ tự thống ke 67
Hình 4.31 Sơ đồ khối bộ lọc CWMF 68
Hình 4.32 Giao diện của khối chèn pixel trung tâm và chọn giá trị median 68
Hình 4.33 Giải thuật tìm giá trị median của bộ lọc CWMF 70
Hình 4.34 Kết quả mô phỏng của khối chèn pixel trung tâm và chọn giá trị median 71
Hình 4.35 Kết quả mô phỏng của bộ lọc CWMF 71
Hình 4.36 Sơ đồ nguyên lý RTL của khối chèn pixel trung tâm và chọn giá trị median (trọng số trung tâm w = 3) 72
Hình 4.37 Sơ đồ nguyên lý RTL của bộ lọc CWMF (với trọng số trung tâm w = 3) 73
Hình 4.38 Sơ đồ khối của bộ lọc RMF 74
Hình 4.39 Giao diện của khối so sánh và chọn giá trị 75
Hình 4.40 Kết quả mô phỏng của khối so sánh và chọn giá trị 76
Hình 4.41 Sơ đồ nguyên lý RTL của khối so sánh và chọn giá trị (l = 4, u = 6) 77
Hình 4.42 Kết quả mô phỏng của bộ lọc RMF 77
Hình 4.43 Sơ đồ nguyên lý RTL của bộ lọc RMF (với l = 4, u = 6) 78
Hình 4.44 Sơ đồ khối của bộ lọc MSMF 79
Hình 4.45 Sơ đồ nguyên lý của khối MSM 80
Hình 4.46 Kết quả mô phỏng của khối lọc MSM với wmax = 5, T = 10 81
Hình 4.47 Sơ đồ nguyên lý của khối lọc MSM 83
Hình 4.48 Kết quả mô phỏng của bộ lọc MSMF 83
Hình 4.49 Sơ đồ nguyên lý RTL của bộ lọc MSMF (với kmax = 5, T = 40) 84
Hình 4.50 Sơ đồ khối bộ lọc ACWVMF 85
Hình 4.51 Kết quả mô phỏng của ACWVMF (với wmin = 1, wmax = 5, T = 30) 86
Hình 4.52 Sơ đồ nguyên lý RTL của khối lọc ACWVM (với wmin = 1, wmax = 5, T = 30) 87
Hình 4.53 Kết quả mô phỏng của bộ lọc ACWVMF với wmin = 1, wmax = 5, T = 30 88
Hình 4.54 Sơ đồ nguyên lý RTL của bộ lọc ACWVMF (với wmin=1, wmax=5, T=30) 88
Hình 4.55 Mô hình thử nghiệm với ảnh số 88
Hình 4.56 Các kết quả sử dụng core tích chập với các mặt nạ khác nhau 94
Hình 4.57 Các ảnh kết quả của bộ lọc median và các bộ lọc cải tiến dựa trên median 96
Hình 4.58 Đồ thị so sánh PSNR của các bộ lọc với các tỉ số nhiễu khác nhau 97
Trang 10CÁC TỪ VIẾT TẮT
ACWVMF Adaptive Center-Weighted Vector Median Filter
AHDL Altera Hardware Description Language
ASIC Application Specific Integrated Circuit
CLB Configurable Logic Block
CPU Central Procesing Unit
CWMF Center-Weighted Median Filter
DIP Digital Image Processing
DSP Digital Signal Processor
EPROM Erasable Programmable Read-Only Memory
EEPROM Electrically Erasable Programmable Read-Only Memory
FPGA Field-Programmable Gate Array
IEEE Institute of Electrical and Electronic Engineers
IP Intellectual Property
HDL Hardware Description Language
MSMF Multi-State Median Filter
RTL Register Transfer Level
VHDL Very high speed integrated circuit Hardware Description Language
VLSI Very Large Scale Integration
viii KS Nguyễn Quang Minh
Trang 11CHƯƠNG 1 GIỚI THIỆU
1.1 ĐẶT VẤN ĐỀ
Ngày nay, xử lý ảnh số đang phát triển không ngừng và được ứng dụng trong hầu hết các lĩnh vực, chẳng hạn như truyền hình, nhận dạng mục tiêu, chữ viết, vân tay, ảnh y học, viễn thám, giám sát quá trình tự động trong công nghiệp … Mục tiêu chủ yếu của xử lý ảnh là trích thông tin hữu ích từ các ảnh Các quá trình xử lý ảnh thường được chia thành 3 mức: thấp, trung và cao [1, 2] Các quá trình mức thấp bao gồm các hoạt động trên từng pixel hay vùng lân cận (neighborhood) của pixel, chẳng hạn như quá trình tiền xử lý ảnh để giảm nhiễu, nâng cao độ tương phản, làm sắc nét ảnh Đặc trưng của quá trình này là ngõ vào và ngõ ra đều là các ảnh Quá trình xử lý mức trung trên các ảnh bao gồm các thao tác như phân đoạn (phân một ảnh thành các vùng hay các đối tượng), mô tả các đối tượng này để đơn giản chúng thành dạng thức phù hợp với xử lý máy tính và phân loại hay nhận dạng các đối tượng riêng lẻ Quá trình mức trung được đặc trưng với ngõ vào tổng quát là các ảnh nhưng ngõ ra là các đặc tính trích từ các ảnh đó, chẳng hạn như các biên (edge), các đường viền (contour) của ảnh và hình dạng của các đối tượng riêng lẻ Quá trình xử lý mức cao sẽ trích ra thông tin cần thiết từ ảnh được cung cấp ở các mức xử lý thấp hơn
Các quá trình xử lý ảnh trước đây hầu như chỉ được thực hiện bằng phần mềm trên các máy tính với các bộ xử lý đa dụng (general-purpose processor) Điều này dẫn đến sự giới hạn về tốc độ do cơ chế xử lý tuần tự của các bộ xử lý này nhất là đối với quá trình xử lý ảnh mức thấp khi lượng dữ liệu cũng như số phép tính cần thực hiện ở bước này là rất lớn Đặc biệt khi kích thước ảnh và độ sâu màu (colour depth) càng lớn thì việc xử lý bằng phần mềm càng ít hữu dụng, nhất là trong các hệ thống xử lý video thời gian thực, cần tối thiểu 25 frame ảnh mỗi giây Do đó trong nhiều hệ thống xử lý ảnh, vấn đề cài đặt phần cứng đã được đặt ra nhằm làm tăng tốc độ xử lý cho các quá trình mức thấp, sau đó đưa dữ liệu đã được xử lý đến các vi xử lý để thực hiện các hoạt động mức cao hơn
Sự ra đời của các thiết bị khả tái cấu hình (reconfigurable devices) mà tiêu biểu là các FPGA (Field-Programmable Gate Array) cùng với sự phát triển không ngừng về dung lượng và tính năng của chúng đã làm cho vấn đề cài đặt phần cứng cho các quá trình xử lý ảnh mức thấp càng được quan tâm hơn Với tính linh động và hiệu quả, các FPGA đã trở thành một lựa chọn cho việc cài đặt phần cứng không những trong các hệ thống xử lý ảnh mà còn trong nhiều ứng dụng khác, chẳng hạn như xử lý âm thanh hay thông tin
di động Việc cài các tác vụ tính toán phức tạp lên phần cứng có thể tận dụng cơ chế song song (parallelism) trong giải thuật và kỹ thuật đường ống (pipelining) để làm giảm đáng kể thời gian thực thi Cơ chế song song trong các giải thuật xử lý ảnh có thể tồn tại
ở hai dạng: song song về mặt không gian và thời gian Các cài đặt FPGA có thể là song song với sự hòa trộn của hai dạng này Chẳng hạn, để tận dụng cả hai dạng song song
Trang 12này, FPGA có thể được định cấu hình để phân chia ảnh thành nhiều phần và phân bố các phần ảnh này đến các đường ống khác nhau để xử lý đồng thời
Trong những năm gần đây, sự phát triển của công nghệ bán dẫn đã cho ra đời các chip có mật độ lên đến hàng chục triệu transistor Điều này đòi hỏi các nhà thiết kế phần cứng cần có một phương pháp luận thiết kế mới để tận dụng hiệu quả một lượng lớn các cổng có sẵn này cũng như rút ngắn thời gian thiết kế để dễ dàng thích ứng với các thay đổi của công nghệ Trên cơ sở đó, một kỹ thuật thiết kế mới đã ra đời, đó là phương
pháp luận thiết kế hệ thống trên một chip SoC (System-on-a-Chip) Phương pháp này
đặt ra vấn đề là thiết kế các khối mạch mà có thể sử dụng lại trong các thiết kế khác nhằm rút ngắn thời gian thiết kế hệ thống mới Các khối mạch đã được thiết kế và kiểm
nghiệm trước bằng các ngôn ngữ mô tả phần cứng, còn gọi là các core hay Intellectual
Property (IP) core, có thể được kết hợp lại để xây dựng một ứng dụng lớn hơn hay phức
tạp hơn trên một chip bán dẫn đơn, gọi là hệ thống trên một chip SoC
1.2 TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU
1.2.1 Tình hình nghiên cứu trên thế giới
Trên thế giới, với sự cập nhật về công nghệ, nhiều tác giả đã nghiên cứu và đưa ra các cấu trúc phần cứng để thực thi các giải thuật xử lý ảnh khác nhau trên DSP, ASIC và FPGA Sau đây là một số đề tài tiêu biểu:
Tác giả Nitin Srivastava, Department of Electrical and Computer Engineering, Agricultural and Mechanical College, Louisiana State University, với đề tài thạc sĩ
“Adaptive image filtering using run-time reconfiguration,” tháng 5/2003 [3] Trong đề tài này tác giả đã cài đặt giải thuật lọc ảnh tuyến tính thích nghi trên Virtex-E FPGA, với các hệ số của cửa sổ lọc thay đổi theo bản chất từng vùng trên ảnh Cấu trúc phần cứng đưa ra tận dụng khả năng tái cấu hình động RTR (Run-Time Reconfigurable) của các chip Virtex-E FPGA để tăng tốc độ xử lý
Nhóm tác giả Gerasimos Louverdis et al., Department of Electrical & Computer Engineering, Democritus University of Thrace, Greece, với đề tài “A new content based median filter,” 2004 [4] Đề tài này đưa ra cấu trúc bộ lọc median thích nghi bằng cách tính tổng các độ lớn sai biệt giữa pixel trung tâm của cửa sổ lọc với các pixel lân cận và so sánh với một giá trị ngưỡng T để xác định pixel trung tâm có thể là nhiễu hay không, nếu là nhiễu (tổng sai biệt > T) thì ngõ ra được thay thế với giá trị median, ngược lại thì giữ nguyên giá trị
Nhóm tác giả Bruce Draper et al., Department of Computer Science, Colorado State University, USA, với đề tài “Compiling and optimizing image processing algorithms for FPGA’s,” 2002 [5] Đề tài thực hiện các giải thuật xử lý ảnh trên FPGA dùng ngôn ngữ SA-C, một dạng biến thể của ngôn ngữ lập trình C hỗ trợ các ứng dụng xử lý ảnh và cho phép biên dịch hiệu quả sang FPGA
Nhóm tác giả Marcos R Boschetti et al., Informatics and Applied Mathematics Department, Federal University of Rio Grande do Norte, Natal, Brazil, với đề tài “A run-time reconfigurable datapath architecture for image processing applications,”
2003 [6] Đề tài đã đưa ra một cấu trúc đường dẫn dữ liệu (datapath) tổng quát khả
Trang 13tái cấu hình động RTR (Run-Time Reconfigurable) cho các giải thuật xử lý ảnh dựa trên cửa sổ với kích thước 3x3
1.2.2 Tình hình nghiên cứu trong nước
Ở nước ta, việc thiết kế các core như là các linh kiện ảo để sử dụng cho việc thiết
kế các hệ thống trên một chip (System-on-a-Chip _ SoC) chỉ mới ở mức sơ khởi, chủ
yếu thông qua các hội nghị, hội thảo Đến nay vẫn chưa có đơn vị nào mạnh dạn tiếp cận cũng như lên kế hoạch nghiên cứu, triển khai ứng dụng công nghệ trên một cách chính qui, toàn diện
Về lĩnh vực xử lý ảnh, cho đến nay các đề tài nghiên cứu chủ yếu được thực hiện là mô phỏng trên phần mềm, hầu như rất ít đề tài thực hiện cài đặt trên phần cứng
1.3 NỘI DUNG VÀ PHẠM VI NGHIÊN CỨU
Đề tài sẽ tìm hiểu về công nghệ SoC cũng như khái niệm và phương pháp thiết kế các core, phần tử không thể thiếu trong các thiết kế hệ thống SoC Từ đó ứng dụng vào để thiết kế các core xử lý ảnh trong các hệ thống multimedia
Các giải thuật xử lý ảnh được thực hiện trong đề tài là:
+ Tích chập ảnh 2-D (2-D image convolution): đây là một giải thuật rất thông dụng trong xử lý ảnh Trên cơ sở xây dựng một core tổng quát để thực hiện phép tích chập ảnh với một mặt nạ (mask) hay còn gọi là cửa sổ (window) hay lõi (kernel), từ đó có thể dùng cho nhiều ứng dụng khác nhau (lọc ảnh tuyến tính, tăng cường ảnh, tách biên ảnh …) bằng cách đơn giản là thay đổi các hệ số của mặt nạ lọc Kích thước mặt nạ được chọn trong đề tài là 3x3 Đây là kích thước thường được dùng trong xử lý ảnh, nó đủ lớn để cho các kết quả phù hợp cũng như đủ nhỏ để có thể cài đặt lên phần cứng một cách hiệu quả
+ Bộ lọc median và các bộ lọc cải tiến dựa trên nó Bộ lọc median cũng là một giải thuật thông dụng khác trong xử lý ảnh, là đại diện tiêu biểu cho nhóm các bộ lọc phi tuyến Nó đặc biệt hữu ích trong việc loại các nhiễu xung Tuy nhiên, bộ lọc median lại có khuynh hướng làm nhòe ảnh nên nhiều tác giả đã nghiên cứu và đưa
ra các dạng cải tiến khác dựa trên bộ lọc median nhằm tăng khả năng loại nhiễu cũng như duy trì chi tiết và độ nét của ảnh Trên cơ sở xây dựng một core tổng quát cho bộ lọc median, từ đó có thể sử dụng lại để tạo nên các bộ lọc cải tiến dựa trên median
Ảnh được chọn để xử lý trong đề tài là ảnh xám với kích thước 256x256 Tuy nhiên thông số này được thiết kế để cho phép thay đổi dễ dàng nhằm thích ứng với các kích thước ảnh khác nhau trong các ứng dụng khác nhau
1.4 GIẢI PHÁP THỰC HIỆN
Ngôn ngữ VHDL được chọn dùng để thiết kế core vì nó hỗ trợ mô tả phân cấp phần cứng từ mức hệ thống xuống tận mức cổng hay mức chuyển mạch cũng như được hỗ trợ rộng rãi bởi các công cụ phát triển của nhiều nhà cung cấp khác nhau Các mô hình phần cứng sẽ được mô phỏng bằng chương trình ModelSim 5.6 SE của hãng Model
Trang 14Technology và tổng hợp bằng chương trình Xilinx ISE 7.1i của hãng Xilinx Các thiết
kế được thử nghiệm thực tế trên Spartan-3 Starter Kit của hãng Xilinx
Phương pháp luận thiết kế được dùng là sự kết hợp giữa phương pháp top-down và bottom-up Theo đó thiết kế sẽ kết hợp giữa việc xây dựng các khối mức thấp trong khi lựa chọn các đặc tả, phân hoạch core và hướng đến việc dùng lại các thư viện core đã được thiết kế và kiểm tra sẵn trước Việc sử dụng lại các core có sẵn sẽ giúp rút ngắn được thời gian và chi phí cho các thiết kế hệ thống mới
Ngoài ra, song song với thiết kế trên phần cứng, các giải thuật cũng sẽ được cài đặt và kiểm tra dùng chương trình Matlab Sau đó, các kết quả từ thiết kế phần cứng sẽ được
so sánh với các kết quả từ chương trình Matlab và dựa vào đó có thể thiết kế lại phần cứng để đạt được kết quả tốt hơn
1.5 Ý NGHĨA CỦA ĐỀ TÀI
1.5.1 Ý nghĩa khoa học
Trong các hệ thống multimedia, yêu cầu về xử lý ảnh thời gian thực là rất lớn Tuy nhiên, vấn đề xử lý thời gian thực lại khó có thể đạt được trên các bộ xử lý tuần tự của các máy tính thông thường Giải pháp có thể sử dụng để khắc phục điều này là dùng các máy tính đa xử lý (multiprocessor) cho phép xử lý song song Trở ngại chính ở đây chính là vần đề giá thành của toàn hệ thống Sự ra đời và phát triển nhanh chóng của các FPGA đã đem đến một giải pháp rất khả thi cho các hệ thống này, cả về hiệu năng xử lý cũng như giá thành hệ thống
Với đề tài nghiên cứu và cài đặt các core xử lý ảnh trên phần cứng FPGA, tác giả sẽ xây dựng một cấu trúc phần cứng có thể đáp ứng các yêu cầu của các hệ thống xử lý ảnh thời gian thực Đồng thời, qua đề tài này tác giả cũng mong muốn góp một phần nhỏ thúc đẩy việc nghiên cứu và ứng dụng các công nghệ cài đặt hiện đại vào việc thiết kế phần cứng nhằm hiện thực hóa những vấn đề lý thuyết
1.5.2 Ý nghĩa xã hội
Hiện nay, Việt Nam chúng ta đang trong giai đoạn công nghiệp hóa, hiện đại hóa đất nước, ngành công nghiệp được chú trọng phát triển, trong đó thiết kế chip là một trong những lĩnh vực được quan tâm hàng đầu Việc nghiên cứu đề tài này với nỗ lực nhằm nắm bắt các công nghệ hiện đại của thế giới cũng như các hoạt động nghiên cứu khoa học đang diễn ra thế giới, góp phần đưa hoạt động nghiên cứu khoa học và công nghệ của Việt Nam tiến đến gần hơn với thế giới
Tình hình nghiên cứu khoa học trong các trường đại học ở Việt Nam hiện nay thường thiên về mô phỏng phần mềm, một số kết quả nghiên cứu thường chỉ mang
ý nghĩa học thuật Với việc cài đặt các giải thuật xử lý ảnh lên phần cứng, tác giả mong muốn góp một phần nhỏ thúc đẩy việc đưa các nghiên cứu khoa học đến gần thực tế hơn, nhanh chóng được kiểm tra và ứng dụng vào thực tiễn
Trang 15CHƯƠNG 2 CORE VÀ CÁC CÔNG CỤ THIẾT KẾ CORE
2.1 CÁC NGÔN NGỮ MÔ TẢ PHẦN CỨNG
Có nhiều ngôn ngữ mô tả phần cứng HDL (Hardware Description Language) được phát triển cho mục đích mô phỏng, tạo mẫu, kiểm tra, thiết kế và lập tài liệu cho các hệ thống số như: ngôn ngữ mô tả hành vi, ngôn ngữ mô tả đường dẫn dữ liệu, ngôn ngữ mô tả danh sách liên kết dây (netlist) Tuy nhiên rất nhiều ngôn ngữ không thể sử dụng như là các công cụ chuẩn cho việc thiết kế, chế tạo và lập tài liệu các mạch số trải rộng từ
vi mạch số tới các mạch chức năng chuyên biệt Phần dưới đây sẽ giới thiệu tóm tắt về
ba loại HDL tiêu biểu: AHDL (Altera Hardware Description Language), Verilog HDL (Verilog Hardware Description Language) và VHDL (Very high speed integrated circuit Hardware Description Language)
2.1.1 AHDL (Altera Hardware Description Language)
Ngôn ngữ AHDL là một ngôn ngữ chuyên biệt, chỉ được hỗ trợ trong các công cụ phát triển dùng cho các thiết bị của hãng Altera Đây có thể coi là một nhược điểm của ngôn ngữ này, tuy nhiên do nó là chuyên biệt nên việc sử dụng nó có thể làm cho thiết kế phần cứng hiệu quả hơn
2.1.2 Verilog HDL (Verilog Hardware Description Language)
Ban đầu, Verilog là một ngôn ngữ dùng để mô phỏng Tuy nhiên, hiện nay Verilog có thể dùng để tổng hợp các thiết kế phần cứng và được hỗ trợ trong nhiều công cụ phần mềm Verilog là một ngôn ngữ hỗ trợ phân cấp thiết kế Nó xuất hiện sau ngôn ngữ VHDL và có đặc điểm rất dễ sử dụng Cùng với VHDL, ngôn ngữ Verilog được chuẩn hóa và sử dụng rộng rãi ở các nước
2.1.3 VHDL (Very high speed integrated circuit Hardware Description Language)
Trong những năm gần đây, ngôn ngữ VHDL trở thành một loại chuẩn công nghiệp cho các thiết kế phần cứng cấp cao Vì là một chuẩn mở của IEEE nên nó được một lượng lớn các công cụ thiết kế hỗ trợ và dễ hoán chuyển giữa các công cụ của các nhà cung cấp khác nhau
Phiên bản đầu tiên của VHDL xuất hiện năm1987 và sau đó được cập nhật vào năm
1993 Nó là ngôn ngữ có đầy đủ sức mạnh cho việc thiết kế và mô tả các hệ thống số ngày nay Ngôn ngữ này hỗ trợ phân cấp phần cứng từ mức hệ thống xuống tận mức cổng hay mức chuyển mạch VHDL hỗ trợ mạnh tất cả các cấp về đặc điểm định thời và phát hiện vi phạm VHDL cũng cung cấp các cấu trúc và cấu hình hết sức tổng quát
2.2 CÁC CÔNG NGHỆ CÀI ĐẶT HIỆN ĐẠI
Hiện nay, có ba công nghệ cài đặt phần cứng phổ biến có thể lựa chọn cho việc cài đặt
các giải thuật, đó là các mạch tích hợp chuyên dụng ASIC (Application Specific Chương 2: Core & các công cụ thiết kế core 5 KS Nguyễn Quang Minh
Trang 16Integrated Circuit), các bộ xử lý số tín hiệu DSP (Digital Signal Processor) và
Field-Programmable Gate Array (FPGA)
2.2.1 ASIC (Application Specific Integrated Circuit)
ASIC là một trong những phương pháp thông dụng nhất hiện nay cho việc cài đặt các giải thuật Phương pháp này có hiệu suất cao nhất và tiêu tốn công suất ở mức thấp nhất Mỗi ASIC được thiết kế dành riêng cho một mục đích hay chức năng cụ thể nào đó Một khi thiết kế đã được cài đặt lên một ASIC, nó không thể thay đổi được nữa Hơn nữa, do mỗi ASIC được thiết kế cho mỗi chức năng riêng nên các hệ thống sử dụng nó thường có giá thành cao Vì vậy, ASIC thích hợp nhất cho các ứng dụng được sản xuất với số lượng nhiều, nhằm giảm giá thành hệ thống
Một trở ngại chính liên quan đến việc sử dụng ASIC trong một hệ thống, đặc biệt là trong các thiết bị di động, là khả năng mở rộng hay nâng cấp các chức năng Mỗi chức năng trong hệ thống đều cần một chip ASIC, dù nó có được yêu cầu hay sử dụng tại thời điểm đó hay không Việc cài đặt một hệ thống với các ASIC như vậy làm cho giá thành sản phẩm trở nên đắt hơn
Một nhược điểm khác của công nghệ cài đặt ASIC liên quan đến thời gian đưa sản phẩm ra thị trường (time-to-market) Thường phải mất khoảng ba tháng hay hơn nữa để thiết kế, kiểm tra và chế tạo một chip ASIC trước khi tung ra thị trường Với các hệ thống động, như hệ thống di động không dây, các chuẩn được phát triển và cải tiến liên tục, các giải thuật cho các dịch vụ cũng được cập nhật và phát triển liên tục nên các chip ASIC sẽ nhanh chóng bị lỗi thời, thậm chí ngay cả khi nó đang trong giai đoạn thiết kế
2.2.2 DSP (Digital Signal Processor)
Ngược với việc cài đặt bằng ASIC, cài đặt bằng DSP có tính linh động hơn Nó cho phép người thiết kế có thể thay đổi và hiệu chỉnh một đoạn mã một cách nhanh chóng và có thể thích ứng với bất kỳ thay đổi nào có thể xảy ra trong giải thuật Điều này cho thấy phương pháp cài đặt bằng DSP cần thời gian đưa sản phẩm ra thị trường là ngắn hơn Tốc độ điều chỉnh mã của DSP lý giải tại sao nó được sử dụng rộng rãi trong nhiều hệ thống có sự thay đổi rất nhanh, chẳng hạn như các hệ thống
di động
DSP là một lớp thiết bị phần cứng có thể coi như nằm giữa ASIC và máy tính cá nhân PC về mặt hiệu năng và tính phức tạp thiết kế Nó có thể được lập trình bằng hợp ngữ hay ngôn ngữ C, đây chính là một trong những ưu điểm rõ rệt của loại này Một lĩnh vực mà DSP đặc biệt hữu ích là thiết kế các hệ thống dấu chấm động (floating point) Các thao tác dấu chấm động khó cài đặt trên các ASIC hay FPGA Tuy nhiên, các giải thuật được thiết kế cho DSP khó có tính song song cao nếu không dùng nhiều DSP Mặt khác, tốc độ xử lý của DSP không đủ đáp ứng các yêu cầu của các ứng dụng cần tốc độ xử lý cao vì nó phải mất nhiều thời gian và tài nguyên cho việc tìm và đợi lệnh Mặc dù vậy, DSP vẫn là một phương pháp xử lý dữ liệu thời gian thực rất thông dụng và hiệu quả
Chương 2: Core & các công cụ thiết kế core 6 KS Nguyễn Quang Minh
Trang 172.2.3 FPGA (Field-Programmable Gate Array)
FPGA đại diện cho công nghệ tính toán khả tái cấu hình (reconfigurable computing
technology) Các máy tính khả tái cấu hình là các bộ xử lý có thể được lập trình với một thiết kế, sau đó có thể được lập trình lại (cấu hình lại) với nhiều thiết kế khác khi các yêu cầu thiết kế thay đổi
Một FPGA thường được xây dựng từ ba thành phần cơ bản: các khối logic khả cấu
hình CLBs (Configurable Logic Blocks), các khối nhập/xuất IOBs (Input/Output Blocks) và các nối kết (interconnection) [7, 8] Một khối CLB có thể được lập trình
để thực hiện các chức năng logic tổ hợp và tuần tự khác nhau Các nối kết bao gồm các đường dây có độ dài khác nhau có thể nối với nhau bằng các chuyển mạch lập trình được Chúng giữ vai trò nối kết các CLB với nhau để cài đặt một thiết kế Khả năng có thể lập trình lại các CLB nhiều lần cũng như tính linh động của các nối kết giữa các CLB làm cho FPGA trở thành một thiết bị lý tưởng cho việc cài đặt các thiết kế
Các đường
dây nối kết
Các khối logic khả cấu hình Các khối
nhập/xuất
(Nguồn: [8])
Hình 2.1 Kiến trúc tiêu biểu của một FPGA
Về mặt lý thuyết, một FPGA có thể chứa các CLB phức tạp như một vi xử lý hay cũng có thể đơn giản như một transistor, tuy vậy các FPGA thương mại tiêu biểu có các CLB dựa trên các cặp transistor, các cổng NAND 2 ngõ vào, các bộ dồn kênh (Multiplexer) hay các bảng tra LUTs (Look-Up Tables)
Dựa vào các nối kết và cách lập trình, FPGA được chia làm bốn lớp chính Các nối
kết có thể là mảng đối xứng (symmetrical array), cấu trúc theo hàng (row-based),
PLD phân ca áp (hierarchical PLD) và đa cổng (sea-of-gates) [7]
Chương 2: Core & các công cụ thiết kế core 7 KS Nguyễn Quang Minh
Trang 18Khối PLD Khối logic
(kết nối phủ lên khối logic)
Hình 2.2 Các nối kết khác nhau đối với các loại FPGA
Các FPGA thương mại có thể dùng bốn công nghệ lập trình khác nhau, đó là: RAM
tĩnh (SRAM – Static RAM), cầu chì nghịch (antifuse), EPROM và EEPROM [7] Các
công nghệ này đều có những ưu và nhược điểm riêng của chúng, việc chọn lựa FPGA loại nào tùy thuộc vào loại thiết kế được cài đặt Chẳng hạn như, công nghệ SRAM có thể lập trình lại các kết nối nhưng cần không gian lớn hơn Công nghệ cầu chì nghịch thì giá rẻ nhưng chỉ có thể lập trình một lần Công nghệ EPROM/EPPROM cho phép lập trình lại FPGA, nhưng các FPGA dùng EPROM không thể lập trình lại trên mạch (in-circuit) Mặc dù các công nghệ lập trình này khác nhau, tất cả các phần tử lập trình đều có chung tính chất là có thể cấu hình được ở một trong hai trạng thái: ON hoặc OFF
a) EPROM
Chương 2: Core & các công cụ thiết kế core 8 KS Nguyễn Quang Minh
Trang 192.3.1 Họ Spartan-3 FPGA
Spartan-3 là một họ FPGA của hãng Xilinx được thiết kế đặc biệt nhằm thỏa mãn các yêu cầu của các ứng dụng điện tử dân dụng Họ này hiện có 8 loại với các mật độ trong khoảng từ 50000 đến 5 triệu cổng hệ thống
Kiến trúc họ Spartan-3 bao gồm năm thành phần chức năng cơ bản: các khối logic
khả cấu hình CLB (Configurable Logic Block), các khối nhập/xuất IOB (Input/Output Block), RAM khối (Block RAM), các bộ nhân (dedicated multiplier) và khối quản lý
xung clock DCM (Digital Clock Manager) [9] Các thành phần này được tổ chức như trên hình 2.4
Họ Spartan-3 có một mạng với nhiều dây nối và chuyển mạch để nối kết, truyền tín hiệu giữa năm thành phần chức năng trên Mỗi thành phần chức năng có một ma
trận chuyển mạch cho phép thực hiện nhiều kết nối đến tuyến dây (routing)
Chương 2: Core & các công cụ thiết kế core 9 KS Nguyễn Quang Minh
Trang 20(Nguồn: [9] )
Hình 2.4 Kiến trúc họ Spartan-3 FPGA
2.3.1.1 Các khối logic khả cấu hình CLB (Configurable Logic Block)
Các CLB chứa các bảng tra dùng RAM (RAM-based Look-Up Table (LUT)) để cài đặt các thành phần logic và lưu trữ mà có thể dùng như các flip-flop hay các bộ chốt (latch) Các CLB có thể được lập trình để thực hiện nhiều chức năng logic cũng như lưu trữ dữ liệu
(Nguồn: [9])
Hình 2.5 Tổ chức các slice trong CLB (họ Spartan-3 FPGA)
Mỗi CLB gồm bốn slice nối với nhau như trên hình 2.5 Các slice được nhóm theo từng cặp Mỗi cặp được tổ chức như một cột với một chuỗi số nhớ (carry) độc lập Cả bốn slice đều có các thành phần sau giống nhau: hai bộ tạo hàm
Chương 2: Core & các công cụ thiết kế core 10 KS Nguyễn Quang Minh
Trang 21logic (dùng LUT), hai thành phần lưu trữ (storage element), các bộ dồn kênh đa chức năng (wide-function multiplexer), mạch logic số nhớ (carry logic) và các cổng số học (arithmetic gate) Cả hai cặp slice trái và phải đều dùng các thành phần này để thực hiện các chức năng logic, số học và bộ nhớ ROM Bên cạnh đó, cặp slice bên trái còn hỗ trợ thêm hai chức năng: lưu trữ dữ liệu dùng RAM phân bố (Distributed RAM) và các thanh ghi dịch dữ liệu 16-bit
2.3.1.2 Các khối nhập/xuất IOB (Input/Output Block)
Các IOB điều khiển luồng dữ liệu giữa các chân I/O và các mạch logic bên trong của FPGA Mỗi IOB hỗ trợ luồng dữ liệu hai chiều và các hoạt động ba trạng thái (3-state)
2.3.1.3 RAM khối (Block RAM)
Được tổ chức như các khối đồng bộ, khả cấu hình 18-Kbit Block RAM lưu trữ một lượng lớn dữ liệu tương đối hiệu quả hơn đặc tính RAM phân bố Block RAM có cấu trúc port kép (dual port) Hai port dữ liệu đồng nhất A và B cho phép truy xuất độc lập đến khối RAM chung có dung lượng tối đa là 18432 bit hay 16384 bit nếu không dùng các đường parity Mỗi port có một tập các đường dữ liệu, điều khiển và xung clock riêng cho các hoạt động đọc và ghi đồng bộ
Có bốn đường dẫn dữ liệu (data path) cơ bản như mô tả trên hình 2.6: (1) ghi và đọc từ port A, (2) ghi và đọc từ port B, (3) dữ liệu truyền từ port A đến port B, (4)
dữ liệu truyền từ port B đến port A
(Nguồn: [9])
Hình 2.6 Các đường dẫn dữ liệu của RAM khối (họ Spartan-3 FPGA)
2.3.1.4 Các bộ nhân (Multiplier)
Tất cả các linh kiện Spartan-3 đều cung cấp các bộ nhân với hai ngõ vào 18-bit và tạo ra tích số 36-bit Mỗi bus ngõ vào bộ nhân chấp nhận dữ liệu ở dạng bù 2 (18-bit có dấu hay 17-bit không dấu) Mỗi bộ nhân tương xứng với một khối block RAM Hai khối này được đặt gần nhau nhằm đảm bảo hiệu quả của việc xử lý dữ liệu Có thể nối chuỗi các bộ nhân để cho phép các ngõ vào rộng hơn 18-bit Bộ nhân được đặt trong một thiết kế dùng một trong hai dạng nguyên mẫu (primitive): phiên bản bất đồng bộ được gọi là MULT18X18 và phiên bản đồng bộ với thanh ghi ở ngõ ra được gọi là MULT18X18S như trên hình 2.7
Chương 2: Core & các công cụ thiết kế core 11 KS Nguyễn Quang Minh
Trang 22a) Bộ nhân bất đồng bộ 18-bit b) Bộ nhân 18-bit với thanh ghi ở ngõ ra
(Nguồn: [9])
Hình 2.7 Hai dạng nguyên mẫu của các bộ nhân (họ Spartan-3 FPGA)
2.3.1.5 Khối quản lý xung clock DCM (Digital Clock Manager)
Khối này hỗ trợ ba chức năng chính:
− Loại bỏ clock-skew (hiện tượng lệch xung clock): dùng kỹ thuật hồi tiếp để loại bỏ hiện tượng clock-skew do việc phân bố xung clock tạo ra một chênh lệch nhỏ trong trì hoãn đường truyền làm cho tín hiệu clock đến các điểm khác nhau
ở các thời điểm khác nhau
− Tổng hợp tần số: với một tín hiệu ngõ vào, DCM có thể tạo ra một khoảng rộng các tần số clock ngõ ra khác nhau Điều này được thực hiện bằng cách nhân và/hoặc chia tần số của tín hiệu clock vào bởi một số hệ số khác nhau
− Dịch pha: DCM cung cấp khả năng dịch pha của tất cả tín hiệu clock ngõ ra theo tín hiệu clock ngõ vào của nó
2.3.2 Spartan-3 Starter Kit
(Nguồn: [10])
Hình 2.8 Spartan-3 Starter Kit
Chương 2: Core & các công cụ thiết kế core 12 KS Nguyễn Quang Minh
Trang 23(Nguồn: [20])
Hình 2.9 Sơ đồ khối board mạch Spartan-3 Starter Kit
Hình 2.9 cho thấy sơ đồ khối của Spartan-3 Starter Kit bao gồm các thành phần và
đặc tính chính như sau:
− Spartan-3 FPGA XC3S200 của hãng Xilinx (XC3S200FT256) (1)
− Flash PROM cấu hình 2Mbit XCF02S, cho phép thiết kế ở dạng non-volatile
(2) XC3S200 FPGA chỉ cần khoảng ít hơn 1Mbit cho dữ liệu cấu hình Phần
dung lượng còn lại có thể dùng lưu trữ các dữ liệu non-volatile khác như các hệ số, mã lệnh của bộ xử lý nhúng (embedded processor) trong FPGA (ví dụ
PicoBlaze, MicoBlaze) … Jumper (3) cho phép ứng dụng FPGA đọc dữ liệu
PROM hay cấu hình FPGA từ các nguồn khác
Chương 2: Core & các công cụ thiết kế core 13 KS Nguyễn Quang Minh
Trang 24− 1Mbyte SRAM bất đồng bộ nhanh (Fast Asynchronous SRAM) gồm 2 chip SRAM 256Kx16 ISSI IS61LV25616AL-10T 10ns có thể định cấu hình là một
mảng 256Kx32 SRAM đơn hay hai mảng 256Kx16 SRAM độc lập (4)
− Port hiển thị VGA 3-bit, 8 màu (5)
− Port nối tiếp RS-232 9 chân (6)
− Cổng chuột/bàn phím loại PS/2 (9)
− 4 LED hiển thị 7 đoạn (10)
− 8 công tắc dạng trượt (11)
− 8 LED hiển thị đơn (12)
− 4 nút nhấn (13)
− Nguồn xung clock dao động thạch anh 50 MHz (14)
− Khe cắm cho nguồn xung clock dao động thạch anh phụ (15)
− Các jumper cho phép thiết lập chế độ cấu hình FPGA (16)
− 3 port kết nối mở rộng 40 chân A1, A2, B1 (21, 20, 19)
− Port JTAG để lập trình FPGA (22)
2.4 THIẾT KẾ HỆ THỐNG DỰA TRÊN CORE (CORE-BASED SYSTEM DESIGN)
Trong những năm gần đây, sự phát triển không ngừng của công nghệ bán dẫn đã cho ra đời các chip có mật độ lên đến hàng chục triệu transistor Điều này mở ra khả năng có thể tích hợp một hệ thống trên một chip bán dẫn đơn, nhưng đồng thời cũng đòi hỏi các nhà thiết kế chip phải đưa ra một phương pháp luận thiết kế mới để tận dụng hiệu quả một lượng lớn các cổng có sẵn này cũng như rút ngắn thời gian thiết kế để dễ dàng thích ứng với các thay đổi của công nghệ [11] Trên cơ sở đó, một kỹ thuật thiết kế mới
đã ra đời, đó là phương pháp luận thiết kế hệ thống trên một chip SoC
(System-on-a-Chip)
Hình 2.10 Luồng thiết kế thông thường và luồng thiết kế SoC
Luồng thiết kế SoC Luồng thiết kế thông thường
Core (khối IP) Các linh kiện ảo Tích hợp hệ thống
trên chip (SoC)
Tích hợp hệ thống trên board ASIC/CPU Các linh kiện thực
Chương 2: Core & các công cụ thiết kế core 14 KS Nguyễn Quang Minh
Trang 25Khác với luồng thiết kế thông thường dùng các thiết kế ASIC kết hợp lại để xây dựng một ứng dụng trên một hay vài board mạch, trong phương pháp luận thiết kế SoC, các khối mạch đã được thiết kế và kiểm nghiệm trước bằng các ngôn ngữ mô tả phần cứng,
còn gọi là các core hay Intellectual Property (IP) core, được kết hợp lại để xây dựng
một ứng dụng lớn hơn hay phức tạp hơn trên một chip bán dẫn đơn [11, 12, 13] Hình 2.10 minh họa sự khác nhau giữa hai luồng thiết kế này [14] Giống như các IC trên các board mạch, các core có thể thực hiện nhiều chức năng khác nhau, chẳng hạn như các bộ xử lý số tín hiệu DSP, các CPU, các khối bộ nhớ… Các core sau khi được thiết kế sẽ được đưa vào thư viện như các linh kiện ảo và có thể được sử dụng lại trong nhiều thiết kế khác Việc sử dụng lại các core có sẵn sẽ giúp rút ngắn được thời gian và chi phí cho các thiết kế hệ thống mới [12]
Tổng hợp hành vi (Behavioral synthesis)
Tổng hợp logic (Logic synthesis)
Tổng hợp vật lý (Physical synthesis)
Mức trừu tượng
(Level of abstraction)
Firm core
Hard core
Hình 2.11 Luồng thiết kế chip tiêu biểu
ột mô tả HDL khả tổng hợp (synthesizable) có thể được định ơ
cấp ở các mức mô tả phần cứng khác nh
hay hard core [12, 15]:
• Soft core: chứa m
hư ùng lại cho các công nghệ và các ràng buộc hệ thống (system contraints) khác nhau Nó có tính linh động và không phụ thuộc qui trình (process-independent) Các
soft core thường được mô tả ở mức thanh ghi RTL (Register-Transfer Level)
Chương 2: Core & các công cụ thiết kế core 15 KS Nguyễn Quang Minh
Trang 26• Firm core: thường bao gồm một mô tả HDL và một danh sách liên kết dây mức cổng (gate-level netlist) có thể sẵn sàng cho việc sắp đặt và nối dây (placement and routing)
• Hard core : chứa sơ đồ bố trí (layout) và thông tin định thời (timing information)
phụ thuộc công nghệ, nghĩa là mô tả mức vật lý của core
Hầu hết các core cho FPGA được cung cấp dưới dạng các soft core Điều này cho phép
người sử dụng có khả năng hiệu chỉnh các thông số để phù hợp với ứng dụng của mình
Các soft core cũng có thể được cung cấp dưới dạng được mật mã để người sử dụng
không thấy được mã RTL thực nhưng vẫn đảm bảo việc sắp đặt và nối dây là linh động Trong các trường hợp này, nếu core được thông số hóa (parameterized), một tập tin tiêu đề (header file) hay giao diện đồ họa GUI (Graphics User Interface) cũng được cung cấp kèm theo để người sử dụng có thể truy xuất đến các thông số
2.5 QUI TRÌNH THIẾT KẾ CORE
Qui trình thiết kế core được cho trên sơ đồ hình 2.12 [11] Sơ đồ này cho thấy qui trình thiết kế có thể chia làm 3 giai đoạn:
− Thiết kế core mức đỉnh (top-level)
− Thiết kế các subcore
− Tích hợp các subcore
Việc phân qui trình thiết kế thành các giai đoạn khác nhau không hàm ý một phương pháp thiết kế top-down thuần túy Phương pháp top-down giả sử là tất cả các khối ở mức thấp nhất phải có thể thiết kế được Như vậy, nếu một khối nào đó là không khả thi thì toàn bộ quá trình đặc tả thiết kế phải lặp lại Vì lý do đó mà trong thực tế các nhà thiết kế thường kết hợp phương pháp top-down và phương pháp bottom-up, xây dựng các khối mức thấp trong khi lựa chọn các đặc tả core và hệ thống Các thư viện core có thể dùng lại (reusable) làm cho quá trình này dễ dàng hơn bằng cách cung cấp các khối đã được thiết kế và kiểm tra sẵn trước [11]
2.5.1 Thiết kế core mức đỉnh (top-level)
Giai đoạn đầu tiên của quá trình thiết kế core là lựa chọn đặc tả chức năng cho đến
lúc thiết kế có thể được phân thành các subcore đủ nhỏ sao cho mỗi subcore có thể được thiết kế, mã hoá và kiểm tra dễ dàng Yếu tố chính để thành công trong giai đoạn này là phải có một đặc tả rõ ràng, đầy đủ cho core và các subcore của nó Đặc biệt, giao tiếp giữa các subcore phải được định nghĩa rõ ràng để quá trình tích hợp subcore có thể được thực hiện một cách dễ dàng Giai đoạn này được xem là kết thúc khi tạo ra các thành phần thiết kế mức đỉnh sau:
− Đặc tả phần cứng core được cập nhật đầy đủ
− Mô hình hành vi khả thi
− Testbench mức cao để kiểm tra tính đúng đắn của thiết kế
− Đặc tả ban đầu cho các subcore
Chương 2: Core & các công cụ thiết kế core 16 KS Nguyễn Quang Minh
Trang 27Thỏa mãn yêu cầu độ phủ
Thỏa mãn các yêu cầu về định thời, công suất và diện tích
Tạo mô hình hành vi
Đặc tả core
Phát triển đặc tả chức năng chi tiết
Phát triển mô hình hành vi Phát triển testbench
Kiểm tra mô hình hành vi
Phân hoạch thành các subcore
Viết đặc tả chức năng
Viết đặc tả kỹ thuật
Phát triển các ràng buộc về định thời Viết mã RTL Phát triển testbench
Tổng hợp
Phân tích công suất
Mô phỏng
Đo độ phủ
Tích hợp các subcore
Hình 2.12 Qui trình thiết kế core
Chương 2: Core & các công cụ thiết kế core 17 KS Nguyễn Quang Minh
Trang 28Tạo mô hình hành vi
Đặc tả core
Phát triển đặc tảchức năng chi tiết
Phát triển mô hình
hành vi Phát triển testbench
Kiểm tra mô hìnhhành vi
Phân hoạch thành các subcore
Hoàn tất môhình hành vicho đồng môphỏng phầncứng/ phầnmềm và pháttriển các phépkiểm tra
Hình 2.13 Thiết kế core mức đỉnh 2.5.2 Thiết kế các subcore
Giai đoạn thứ hai trong qui trình thiết kế core là thiết kế, mã hóa RTL và kiểm tra các subcore trong core (hình 2.14) Yếu tố chính để thành công trong giai đoạn này là phải có một đặc tả hoàn chỉnh và rõ ràng cho mỗi subcore trước khi bắt đầu mã hóa RTL và phải nắm rõ những chuyển giao cần thiết ở cuối của bước thiết kế này Quá trình thiết kế subcore bắt đầu khi có đặc tả phần cứng cơ bản cho subcore và một tập các định hướng thiết kế Giai đoạn này được xem là kết thúc khi tạo ra các thành phần thiết kế sau:
− Đặc tả phần cứng cho subcore được cập nhật đầy đủ
− Kịch bản tổng hợp (synthesis script) subcore
− Testbench cho subcore và một bộ các phép kiểm tra mà đạt được độ phủ 100%
− Mã RTL khả tổng hợp Mã này phải tổng hợp dựa trên một thư viện đích và thỏa mãn các ràng buộc về định thời
2.5.3 Tích hợp các subcore
Giai đoạn thứ ba trong quá trình thiết kế core là tích hợp các subcore vào core mức đỉnh và thực hiện các phép kiểm tra sau cùng Yếu tố chính để thành công trong giai đoạn này là phải có các subcore đã được thiết kế theo đúng định hướng phác thảo
Chương 2: Core & các công cụ thiết kế core 18 KS Nguyễn Quang Minh
Trang 29trong tài liệu ban đầu Đặc biệt là các yếu tố định thời và hành vi chức năng của các giao tiếp giữa các subcore phải được xác định đầy đủ trước khi thiết kế subcore và phải được kiểm nghiệm lại sau khi quá trình thiết kế subcore hoàn tất Hầu hết tất cả các lỗi thường xảy ra ở phần giao tiếp giữa các subcore và dẫn đến những hiểu nhầm khi thiết kế
Quá trình tích hợp được xem là hoàn tất khi:
− Hoàn tất việc phát triển mã RTL mức đỉnh, các kịch bản tổng hợp và các testbench
− Mã RTL của core thỏa mãn tất cả các phép kiểm tra
− Core tổng hợp với một thư viện tham chiếu và thỏa mãn tất cả các yêu cầu định thời, diện tích và công suất
Thỏa mãnyêu cầuđộ phủ
Thỏa mãn các
yêu cầu về định
thời, công suất và
diện tích
Viết đặc tả chức năng
Viết đặc tả kỹ thuật
Phát triển các ràng
buộc về định thời Viết mã RTL Phát triển testbench
Tổng hợp
Phân tích công suất
Mô phỏng
Đo độ phủ
Tích hợp các subcore
Hình 2.14 Thiết kế subcore
Chương 2: Core & các công cụ thiết kế core 19 KS Nguyễn Quang Minh
Trang 30CHƯƠNG 3 LÝ THUYẾT CƠ SỞ
3.1 ẢNH SỐ (DIGITAL IMAGE)
Một ảnh có thể được định nghĩa như là một hàm hai chiều f(x,y), trong đó x và y là các
tọa độ không gian và độ lớn của f tại tọa độ (x,y) bất kì được gọi là cường độ (intensity)
hay mức xám (gray level) tại điểm đó Khi x, y và các giá trị độ lớn của f là các đại
lượng rời rạc, hữu hạn thì ảnh được gọi là ảnh số [1] Một cách tổng quát, một ảnh số
được xem như là một ma trận gồm X hàng và Y cột Độ phân giải của ảnh đó được ký
hiệu là X x Y Theo quy ước, f(0,0) nằm ở góc trái trên của ảnh và f(X-1,Y-1) nằm ở góc
phải dưới của ảnh Mỗi tọa độ khác nhau trong một ảnh số được gọi là một điểm ảnh
hay phần tử ảnh (picture element, image element, pixel, pel) [1] Trong luận văn này,
tác giả dùng thuật ngữ pixel để chỉ các tọa độ này
y O
x
f(0,0)
f(7,7)
Hình 3.1 Ảnh số với độ phân giải 8x8
Như vậy, một ảnh số X x Y có thể được biểu diễn ở dạng ma trận:
1,1X()0,1X(
)1Y,1()
1,1()
0,1(
)1Y,0()
1,0()
0,0(y
,xf
L
MM
M
LL
Một pixel p tại tọa độ (x,y) có 4 lận cận theo chiều dọc và ngang ở các tọa độ: (x – 1,
y), (x + 1, y) và (x, y – 1), (x, y + 1) Tập hợp các pixel này được gọi là lân cận 4
(4-neighbors) của p, ký hiệu N 4 (p) [1] Mỗi pixel này có khoảng cách đơn vị đối với tọa độ
(x,y) và một số lân cận của p nằm ngoài ảnh số nếu (x,y) nằm trên đường biên của ảnh
Bốn lân cận chéo của p có tọa độ (x – 1, y – 1), (x – 1, y + 1), (x + 1, y – 1), (x + 1, y +
1) và được ký hiệu là N D (p) Các điểm này cùng với lân cận 4 ở trên được gọi là lân cận
Trang 318 (8-neighbors) của p, ký hiệu N 8 (p) Giống như trên, một số điểm trong N D (p) và N 8 (p)
nằm ngoài ảnh nếu (x,y) nằm trên đường biên của ảnh [1]
Bản chất ngõ ra f(x,y) của mỗi pixel phụ thuộc vào loại ảnh Hầu hết các ảnh là kết quả
đo của một hiện tượng vật lý cụ thể chẳng hạn như ánh sáng, nhiệt, khoảng cách hay năng lượng Mỗi số đo sẽ có một dạng số nhất định [16]
Ảnh xám (grayscale image) chỉ đo cường độ sáng Giá trị mỗi pixel tỉ lệ với độ sáng của nó Độ sáng nhỏ nhất được gọi là đen (black) và độ sáng lớn nhất được gọi là trắng (white) Ảnh màu đo cường độ và độ chói của ánh sáng Mỗi pixel màu là một vector các thành phần màu Các không gian màu thông dụng là RGB (Red, Green, Blue), HSV (Hue, Saturation, Value) và CMYK (Cyan, Magenta, Yellow, Black) [1, 16]
Hình 3.2 Một ảnh xám 512 x 512 tiêu biểu
Để lưu trữ, các giá trị pixel cần được lượng tử hóa Độ sáng trong các ảnh xám thường
được lượng tử hóa Z mức, vì thế f(x,y) thuộc tập {0, 1, , Z – 1} Nếu Z có dạng 2 L,
ảnh được gọi là có L bit mỗi pixel Các ảnh xám thường dùng 8 bit cho mỗi pixel, tương
đương với có 256 mức xám khác nhau Đây là giới hạn gần đúng đối với số cường độ sáng khác nhau mà hệ thống mắt người có thể phân biệt Cũng vì lý do tương tự mà mỗi thành phần trong một pixel màu thường dùng 8 bit để lưu trữ [16]
3.2 CÁC LOẠI NHIỄU
Một ảnh có thể bị ảnh hưởng bởi nhiễu trong quá trình thu thập và truyền ảnh Hiệu năng của các cảm biến ảnh bị ảnh hưởng bởi nhiều yếu tố, chẳng hạn như điều kiện môi trường trong quá trình thu thập ảnh và chất lượng của chính các phần tử đang cảm biến Các ảnh bị lỗi trong khi truyền chủ yếu do nhiễu giao thoa trong kênh truyền [1] Có ba mô hình nhiễu chuẩn thường gặp trong hầu hết các ảnh là: nhiễu cộng (additive noise), nhiễu nhân (multiplicative noise) và nhiễu xung (impulse noise)
3.2.1 Nhiễu cộng
Giả sử g(x,y) là hàm của ảnh bị nhiễu, f(x,y) là hàm của ảnh ban đầu và n(x,y) là
hàm nhiễu mà trả về các giá trị ngẫu nhiên từ một phân bố bất kỳ Nhiễu cộng được mô tả bởi phương trình (3.2):
Trang 32g(x,y) = f(x,y) + n(x,y) (3.2) Nhiễu cộng là nhiễu độc lập với các giá trị pixel trong ảnh ban đầu Nhiễu cộng là một mô hình khá tốt cho trường hợp nhiễu nhiệt trong các cảm biến quang-điện tử (photo-electronic sensors) [16]
3.2.2 Nhiễu nhân
Nhiễu nhân, hay nhiễu lốm đốm (speckle noise), là một dạng nhiễu phụ thuộc tín hiệu, biên độ của nó liên quan đến giá trị của pixel gốc Phương trình (3.3) mô tả một dạng nhiễu đơn giản Nhiễu nhân là một xấp xỉ cho nhiễu gặp trong các ảnh
được thu trên các film slide [16]
g(x,y) = f(x,y) + n(x,y) f(x,y) = f(x,y)[1 + n(x,y)] (3.3)
c) Ảnh bị nhiễu nhân d) Ảnh bị nhiễu xung
Hình 3.3 Các loại nhiễu thường gặp trên ảnh số
Trang 333.2.3 Nhiễu xung
Nhiễu xung có đặc tính là giữ nguyên giá trị một pixel với xác suất là (1 – p) hay
thay thế nó với xác suất là p Pixel bị lỗi có thể được thay thế với giá trị cố định là 0 hay Z–1, được gọi là nhiễu muối tiêu (salt-pepper noise), hay tổng quát hơn là một
giá trị ngẫu nhiên trong khoảng động [0, Z–1] Nguồn nhiễu xung thường là hậu quả của lỗi trong đường truyền hay cảm biến không tốt [16]
suất pxácvới)y,x(
)y,x(n)y,x(g
3.3 CƠ BẢN VỀ LỌC KHÔNG GIAN (SPATIAL FILTERING)
Trong luận văn này, tác giả sẽ cài đặt các giải thuật xử lý ảnh thông dụng được dùng trong miền không gian (spatial domain), đó là các bộ lọc không gian tuyến tính (bộ lọc trung bình, toán tử Laplacian, toán tử Sobel …) và phi tuyến (bộ lọc median và một số dạng cải tiến của nó)
Thuật ngữ miền không gian liên quan đến tập hợp các pixel tạo nên ảnh Các phương pháp miền không gian thao tác trực tiếp trên các pixel Các quá trình trong miền không gian có thể được biểu thị bằng biểu thức:
x
Toán tử cửa sổ
Cửa sổ
ngõ vào
Hình 3.4 Cơ chế của lọc không gian
Trang 34Phương pháp chủ yếu để xác định một vùng lân cận quanh điểm (x,y) là dùng một ảnh
con (subimage) hình vuông hay hình chữ nhật, hay còn gọi là cửa sổ (window), mặt nạ
(mask) hay lõi (kernel), có tâm tại (x,y) Cơ chế của lọc không gian được minh họa trên
hình 3.4 Quá trình xử lý đơn giản là dịch chuyển (hay “trượt”) cửa sổ qua từng điểm
trong ảnh, bắt đầu từ góc trái trên đi từ trái sang phải và từ trên xuống dưới Toán tử T
được áp dụng tại mỗi vị trí (x,y) để tạo ngõ ra g tại vị trí tương ứng
Đối với lọc không gian tuyến tính, đáp ứng ngõ ra được cho bởi tổng các tích của các hệ
số lọc trong cửa sổ với các giá trị pixel tương ứng trong vùng được phủ bởi cửa sổ Tổng
quát, lọc tuyến tính của một ảnh f kích thước X x Y với cửa sổ lọc kích thước m x n được
cho bởi biểu thức:
(3.6)
∑ ∑
++
= aa s b
b t
t)ys,t)f(xw(s,y)
g(x,
trong đó a = (m –1)/2 và b = (n –1)/2 Để tạo ảnh được lọc hoàn toàn, phương trình này
được áp dụng cho x = 0, 1, 2, …, X –1 và y = 0, 1, 2, …, Y – 1 Như vậy, quá trình lọc
tuyến tính như trên tương tự như khái niệm tích chập (convolution) Do đó lọc không
gian tuyến tính còn được gọi là “tích chập một mặt nạ với một ảnh” [1]
w(-1,-1) w(-1,0) w(-1,1)
w(0,-1) w(0,0) w(0,1)
w(1,-1) w(1,0) w(1,1)
Hình 3.5 Toán tử cửa sổ (mặt nạ) 3x3
Một điều quan trọng cần quan tâm trong khi cài đặt các bộ lọc không gian là khi tâm
cửa sổ tiến gần đến đường biên của ảnh Xét một cửa sổ vuông kích thước m x m Có ít
nhất một đường biên của cửa sổ sẽ trùng với biên của ảnh khi tâm cửa sổ cách đường
biên ảnh (m –1)/2 pixel Nếu tâm cửa sổ tiến gần hơn đến đường biên của ảnh thì một
hay vài hàng hay cột của cửa sổ sẽ nằm ngoài mặt phẳng ảnh
Hình 3.6 Vùng lân cận 3x3 khi pixel đang xử lý nằm ở đường biên của ảnh
Trang 35Có một vài cách để xử lý các trường hợp này Cách đơn giản nhất là giới hạn tâm của
cửa sổ ở khoảng cách không nhỏ hơn (m –1)/2 pixel so với biên ảnh Điều này dẫn tới
ảnh kết quả sẽ nhỏ hơn ảnh ban đầu nhưng tất cả pixel trong ảnh đã lọc được xử lý với
cửa sổ đầy đủ Các phương pháp khác là ‘đệm’ ảnh bằng cách gán cho các pixel bị mất
một giá trị hằng số (có thể là 0 hay một giá trị mức xám khác) hay giá trị trung bình của
các pixel đang có hay giá trị của lân cận gần nhất [1, 2, 16]
Hình 3.7 Các pixel bị mất được thay thế bởi giá trị của lân cận gần nhất của chúng
3.4 CÁC BỘ LỌC NHẴN KHÔNG GIAN (SMOOTHING SPATIAL FILTERS)
Các bộ lọc nhẵn thường được dùng để làm nhòe (blurring) và giảm nhiễu (noise
reduction) Làm nhòe thường được dùng trong các bước tiền xử lý (preprocessing),
chẳng hạn như loại bỏ một số chi tiết nhỏ trước khi trích đối tượng (chi tiết lớn) và nối
các khoảng trống nhỏ trong các đường thẳng hay đường cong Giảm nhiễu có thể được
thực hiện bằng bộ lọc tuyến tính hay cũng có thể bằng bộ lọc phi tuyến [1]
3.4.1 Các bộ lọc nhẵn tuyến tính (smoothing linear filter)
Ngõ ra của các bộ lọc nhẵn tuyến tính không gian đơn giản là trị trung bình của các
pixel trong một lân cận của cửa sổ lọc Các bộ lọc này còn được gọi là các bộ lọc
trung bình (averaging filter) hay bộ lọc thông thấp (lowpass filter) [1] Giả sử ảnh
ban đầu là f(x,y), ảnh sau khi bị nhiễu là g(x,y), cửa sổ lọc m x n là w(s,t) với
btb
;as
− , trong đó a = (m –1)/2 và b = (n –1)/2 Biểu thức ngõ ra sau
khi lọc dạng tổng quát:
a s
b b t
a a s
b b t
)t,s(w
)ty,sx(g)t,s(w)
y,x(
ˆ
(3.7)
Mẫu số trong phương trình (3.7) đơn giản là tổng của các hệ số cửa sổ và là hằng số
nên chỉ cần tính một lần Một cách tiêu biểu, hệ số tỉ lệ này được áp dụng cho tất cả
các pixel của ảnh ngõ ra sau khi quá trình lọc kết thúc Hình 3.8 là hai ví dụ của cửa
sổ lọc nhẵn 3x3 Cửa sổ hình 3.8a có các hệ số bằng nhau còn được gọi là bộ lọc
hộp (box filter) [1, 16] Pixel ngõ ra đơn giản là trung bình các giá trị mức xám trong
vùng lân cận của pixel đang xét được định nghĩa bởi cửa sổ Mặt nạ thứ hai được gọi
Trang 36là trung bình có trọng số (weighted average), thuật ngữ dùng để chỉ các pixel được
nhân với các hệ số khác nhau, đặt trọng số cao hơn cho một số pixel để chúng có
ảnh hưởng hơn trong giá trị trung bình
1 2 1 a) Cửa sổ lọc trung bình 3x3 b) Cửa sổ lọc trung bình có trọng số 3x3
Hình 3.8 Hai cửa sổ lọc nhẵn tuyến tính 3x3 3.4.2 Các bộ lọc thứ tự thống kê (Order-Statistics Filters)
Các kỹ thuật lọc tuyến tính được dùng trong nhiều ứng dụng xử lý ảnh và sự phổ
biến của chúng chủ yếu là do tính đơn giản về mặt toán cũng như tính hiệu quả đối
với loại nhiễu cộng Gaussian Bộ lọc trung bình là bộ lọc tối ưu cho nhiễu Gaussian
theo sai số trung bình bình phương [17] Tuy nhiên, các bộ lọc tuyến tính có khuynh
hướng làm nhòe các biên (edge), làm mất các đường (line) và các chi tiết tinh (fine
detail) khác của ảnh [17, 18] cũng như không hiệu quả trong việc loại nhiễu xung
[18, 19], có thể gây ra do cảm biến (sensor) không tốt hay các lỗi trên kênh truyền
Điều này đã thúc đẩy sự phát triển của các bộ lọc phi tuyến và một trong những
dạng phổ biến của loại này là các bộ lọc thứ tự thống kê Các bộ lọc thứ tự thống kê
là các bộ lọc không gian phi tuyến mà có đáp ứng dựa trên thứ tự các giá trị pixel
chứa trong vùng ảnh được bao bởi cửa sổ lọc
3.4.2.1 Bộ lọc median (Median Filter _ MF)
Một loại bộ lọc thứ tự thống kê được dùng rộng rãi trong các ứng dụng xử lý ảnh
là bộ lọc median (median filter), mà như tên của nó đã ngầm định, thay thế giá
trị của pixel trung tâm bởi giá trị giữa của dãy pixel đã sắp xếp trong vùng ảnh
được bao bởi cửa sổ lọc Bộ lọc median rất hữu ích trong việc loại nhiễu xung, ít
gây nhòe hơn các bộ lọc tuyến tính [1, 18, 19] Biểu thức ngõ ra được cho bởi:
{g(x s,y t (s t) W}
median)
y,x(
trong đó W là tập hợp các tọa độ trong cửa sổ ảnh con có tâm (0,0) tại tọa độ
(x,y) đang xét Giả sử cửa sổ lọc là hình vuông, kích thước (2M+1)x(2M+1) thì
{(s,t) M s M; M t M
W= − ≤ ≤ − ≤ ≤ } Với trường hợp cửa sổ có kích thước 3x3 thì
{(s,t) 1 s 1; 1 t 1}
Bộ lọc này hoạt động bằng cách phân tích một vùng lân cận của một pixel gốc
và thực hiện đối với tất cả các pixel hợp lệ trong một ảnh Với mỗi pixel cụ thể
trong ảnh, có thể tìm thấy một cửa sổ các pixel lân cận, sau đó các giá trị của
pixel được xếp theo thứ tự tăng dần Kế tiếp, pixel trong ảnh ngõ ra tương ứng
với pixel gốc trong ảnh ngõ vào được thay thế với giá trị giữa trong dãy pixel đã
Trang 37sắp xếp Hình 3.9 là một ví dụ đơn giản minh họa cách lấy giá trị median với cửa
sổ 3x3
giá trị median
Hình 3.9 Bộ lọc median
a) Ảnh ban đầu (bị nhiễu
muối tiêu) b) Giảm nhiễu bằng bộ lọc trung bình 3x3 c) Giảm nhiễu bằng bộ lọc median 3x3
(Nguồn: [1])
Hình 3.10 Kết quả giảm nhiễu bằng bộ lọc trung bình và bộ lọc median 3x3
3.4.2.2 Bộ lọc max và min
Trường hợp pixel trong ảnh ngõ ra được thay thế với giá trị nhỏ nhất hay lớn
nhất thì tương ứng sẽ có bộ lọc min hay max Bộ lọc max hữu ích cho việc tìm
các điểm sáng nhất trong một ảnh, ngược lại bộ lọc min hữu ích cho việc tìm các
điểm tối nhất trong ảnh [1]
Bộ lọc max: fˆ(x,y)=max{g(x+s,y+t (s t)∈W} (3.9) Bộ lọc min: fˆ(x,y)=min{g(x+s,y+t (s t)∈W} (3.10)
Trang 383.4.3 Các bộ lọc median cải tiến
Mặc dù bộ lọc median hữu ích cho việc loại nhiễu xung, tuy nhiên trong nhiều
trường hợp nó loại bỏ các chi tiết mong muốn trong ảnh, chẳng hạn như các góc
(corner) và các đường mảnh (thin line) [17] Do đó nhiều tác giả đã nghiên cứu và
đưa ra các bộ lọc cải tiến dựa trên bộ lọc median nhằm đạt được kết quả tốt hơn
trong việc loại nhiễu xung và duy trì chi tiết trong ảnh Phần dưới đây sẽ trình bày
tóm tắt về một số bộ lọc tiêu biểu đã được công bố trên các tạp chí khoa học
3.4.3.1 Bộ lọc median có trọng số trung tâm (Center Weighted Median
Filter_CWMF) [19]
Đây là một trường hợp đặc biệt của bộ lọc median có trọng số (Weighted
Median Filter_WMF), một dạng mở rộng của bộ lọc median, cho trọng số nhiều
hơn với một số vị trí pixel trong cửa sổ Bộ lọc median có trọng số trung tâm cho
trọng số của pixel trung tâm lớn hơn các pixel còn lại trong cửa sổ Biểu thức
ngõ ra của bộ lọc CWMF được cho bởi:
{g(x s,y t), k g(x,y (s t) W}
median)
y,x(
với 2k là trọng số cho pixel trung tâm g(x,y), ◊là thao tác lặp lại Như vậy, có
tổng cộng (2k+1) giá trị của pixel trung tâm g(x,y) trong dãy trên Giả sử cửa sổ
lọc là hình vuông (2M+1)x(2M+1) Khi k = 0, bộ lọc CWMF trở thành bộ lọc
median thông thường và khi (2k+1) ≥ (2M+1)(2M+1) (kích thước cửa sổ hay số
pixel trong cửa sổ), nó trở thành bộ lọc đồng nhất (identity filter) nghĩa là không
có lọc Rõ ràng là khi trọng số trung tâm càng lớn thì việc duy trì các chi tiết
càng tốt hơn, nhưng khả năng triệt nhiễu lại kém hơn so với các trường hợp có
trọng số trung tâm nhỏ hơn
3.4.3.2 Bộ lọc relaxed median (Relaxed Median Filter _ RMF) [17, 20]
Ý tưởng cơ bản đưa ra ở bộ lọc này là trước khi lọc phải nhận dạng xem pixel có
thể bị nhiễu hay không, nếu đúng thì thay thế pixel với giá trị median, ngược lại
thì giữ nguyên giá trị của pixel
Giả sử cửa sổ lọc là hình vuông (2M+1)x(2M+1); [W](r) , r = 1, 2, …, 2L+1, là
pixel thứ r trong dãy pixel đã sắp thứ tự tương ứng với cửa sổ lọc:
Với hai biên l và u, tương ứng biên trên và biên dưới, xác định một khoảng con
trong dãy [W](.) ở trên, ngõ ra của bộ lọc RMF được cho bởi:
[W]
y)g(x,
) (
) (]
W[
]W[,)
y,x(g)y,x(fˆ
m
u
trong đó 1 ≤ l ≤ L+1 = m ≤ u ≤ 2L+1, [W] (m) là giá trị median của dãy pixel Với l
= 1 và u = 2L+1, RMF trở thành bộ lọc đồng nhất (không lọc) và khi l = u = L+1,
ngõ ra của RMF đơn giản là giá trị median Hình 3.11 minh họa hoạt động của
bộ lọc RMF
Trang 39Hình 3.11 Hoạt động của bộ lọc RMF
3.4.3.3 Bộ lọc median đa trạng thái (Multi-State Median Filter_MSMF)[18]
Đây là một cấu trúc tổng quát, mở rộng từ bộ lọc CWMF ở trên Bằng cách dùng
một ngưỡng (threshold) logic đơn giản, ngõ ra của bộ lọc MSMF được chuyển
một cách thích nghi giữa một nhóm các bộ lọc CWMF có các trọng số trung tâm
khác nhau
Biểu thức ngõ ra của bộ lọc CWM ở trên có thể được viết lại:
(3.14) )
G(median
Fˆxyw = wxytrong đó: Fˆxyw =fˆ(x,y)với trọng số của pixel trung tâm là w = 2k + 1,
Gwxy ={Gx+s,y+t,w◊Gxy (s,t)∈W,(s,t)≠(0,0)},
với Gxy = g(x,y) là pixel hiện hành
Đối với mỗi pixel hiện hành, trước tiên xác định các sai biệt:
xy w xy
(3.15) với w = 1, 3, …, N – 2 (N = 2L + 1 : kích thước cửa sổ)
Dễ dàng nhận thấy: dw ≤dw−2,vớiw≥3[18]
Các sai biệt này cung cấp thông tin về khả năng có thể bị lỗi của pixel hiện hành
Gxy Chẳng hạn, xét sai biệt dN – 2 Nếu giá trị này là lớn thì pixel hiện hành
không chỉ là lớn nhất hay nhỏ nhất trong số các pixel đang xét mà còn rất có thể
bị lỗi do nhiễu xung Mặt khác, nếu d1 là nhỏ thì pixel hiện hành có thể được
xem như không bị nhiễu và sẽ được giữ không đổi khi lọc
Ở bước kế tiếp, bộ phân loại (classifier) dựa trên các sai biệt dw để ước lượng
khả năng pixel hiện hành có thể bị lỗi không như hình 3.12, trong đó CWMw kí
hiệu cho bộ lọc CWMF với trọng số trung tâm w và đường thẳng tương đương
với bộ lọc đồng nhất Ngõ ra của bộ lọc MSMF có thể được mô tả như sau:
Trang 40Fˆ
2Nw3,dTd
Fˆ
TdG
Fˆ
2 N 1
xy
2 w w
w 1 N xy
1 xy
MSM xy
trong đó là một ngưỡng xác định trước được dùng cho hoạt động chuyển mạch ở trên, là ngõ ra của bộ lọc median chuẩn Lưu ý các điều kiện
]255,0(
T∈
1 xy
Fˆ2
w
d < ≤ − với 3≤w ≤N−2 là loại trừ lẫn nhau và do đó đảm bảo một sự chọn lựa duy nhất từ tất cả các ngõ ra có thể của các bộ lọc CWMF trong sơ đồ chuyển mạch hình 3.12 Khi T = 0, bộ lọc MSMF trở thành bộ lọc median chuẩn
vì ngõ ra luôn luôn bằng Mặt khác, nếu T > 255, bộ lọc MSMF trở thành bộ lọc đồng nhất
1 xy
Hình 3.12 Sơ đồ nguyên lý của bộ lọc MSMF
Như đã đề cập ở trên, các bộ lọc CWMF với trọng số trung tâm lớn sẽ cho hiệu năng triệt nhiễu kém Vì thế, việc dùng các bộ lọc CWMF có các trọng số trung tâm lớn sẽ làm giảm hiệu năng của bộ lọc MSMF khi tỉ số nhiễu tăng Có thể làm giảm bớt ảnh hưởng này bằng cách hiệu chỉnh số bộ lọc CWMF được dùng trong sơ đồ lọc trên
Gọi wmax , wmax = 1, 3, …, N – 2, là kí hiệu cho trọng số trung tâm lớn nhất được dùng trong cấu trúc bộ lọc MSMF trên Nói cách khác, các bộ lọc CWMF với trọng số trung tâm lớn hơn wmax không được dùng trong sơ đồ trên Ở đây bộ lọc đồng nhất được xem như không thuộc các bộ lọc CWMF và luôn được kích hoạt Có thể viết lại phương trình (3.16) như sau: