Nhằm thiết kế các ứng dụng đạt hiệu quả cao thì vấn đề xử lý nhằm đáp ứng về tốc độ, thời gian thực là những yêu cầu rất quan trọng trong hầu hết các ứng dụng. Để đáp ứng được các yêu cầu này thì ta phải xử lý một cách tốt nhất từng giai đoạn trong quá trình xử lý ảnh. Một trong những giai đoạn quan trọng này là tách biên của một bức ảnh. Do đó chúng tôi đã chọn đề tài “Thực thi và đánh giá thuật toán tách biên ảnh trên FPGA”. Đề tài này được thực hiện trên cả phần cứng sử dụng KIT FPGA Virtex5XUP LX110T và phần mềm sử dụng Matlab Simulink trên nền Xilinx System Generator. Nội dung đồ án này được chia làm 4 chương:2. Chương 1: Tổng quan về xử lý ảnh số và bài toán tách biên.Xử lý ảnh số đóng vai trò rất quan trọng trong đời sống hiện nay, do đó để hiểu rõ hơn về xử lý ảnh trong chương này sẽ trình bày một cách tổng quan về xử lý ảnh số và bài toán tách biên bao gồm:•Một số khái niệm cơ bản trong xử lý ảnh như điểm ảnh, độ phân giải ảnh, mức xám của ảnh, các loại ảnh.•Các phép xử lý ảnh số thông dụng như phép nhân chập, lọc trung bình, lọc thông thấp, thông cao.• Bài toán tách biên được sử dụng là tách biên theo phương pháp Gradient với hai bộ lọc là Sobel và Prewitt.3.Chương 2: Giới thiệu về KIT FPGA Virtex5, phần mềm Matlab Simulink và Xilinx System Generator.Việc thực thi thiết kế trên cả phần cứng sử dụng FPGA Virtex5 và phần mềm sử dụng Matlab Simulink trên nền Xilinx System Generator đòi hỏi ta phải có sự hiểu biết nhất định về những công cụ mà ta sử dụng. Vì vậy trong chương này sẽ đi giới thiệu tổng quan về những công cụ sử dụng trong thiết kế trên phần cứng và phần mềm.•FPGA: Tìm hiểu tổng quan về FPGA, cấu trúc của và ứng dụng•Matlab Simulink: Giới thiệu về Matlab và vai trò của Simulink trong việc xây dựng các thuật toán DSP.•Xilinx System Generator4.Chương 3: Xây dựng hệ thống tách biên ảnh trên FPGA.Trong chương này ta sẽ tiến hành xây dựng hệ thống xử lý ảnh tách biên trên XSG thông qua việc mô tả hệ thống nhằm hiểu chức năng của hệ thống, sau đó tiến hành thiết kế hệ thống theo quy trình thiết kế số.4.1. Mô tả hệ thống: •Tìm hiểu hệ thốngNhiệm vụ: “Thực thi và đánh giá thuật toán tách biên ảnh trên FPGA”. Thực hiện trên cả phần mềm Matlab Simulink và phần cứng FPGAVirtex5.Phương pháp xây dựng: áp dụng bài toán tách biên sử dụng bộ lọc Sobel và Prewitt trong môi trường Simulink, XSG.•Sơ đồ tổng quát hệ thống Image source: ngõ vào bức ảnh bất kì có thể là ảnh màu hay ảnh gray.Image preprocessing unit: khối tiền xử lý ảnh, được thực hiện trên Matlab.Edge detection module: khối IP core của thiết kế, thực hiện trên XSG.Image postprocessing unit: khối hậu xử lý ảnh, thực hiện trên Matlab.Image viewer: xem kết quả thiết kế.4.2. Thiết kế hệ thống•Thiết kế HighLevel: Sơ đồ mạch cho từng moduleImage preprocessing unit Image postprocessing unit module edge detection •Thiết kế LowLevel: sơ đồ mạch hoàn chỉnh thiết kế 5.Chương 4: Kết quả thực thi và đánh giáTrong chương này ta dựa vào sơ đồ mạch hoàn chỉnh trong thiết kế ở chương 3 để tiến hành mô phỏng, đánh giá kết quả đạt được trên phần mềm và phần cứng sau đó nhận xét về hệ thống.
Trang 1LỜI CAM ĐOAN
Cộng hòa xã hội chủ nghĩa Việt Nam Độc lập - Tự do - Hạnh phúc
LỜI CAM ĐOAN
Kính gửi : Hội đồng bảo vệ đồ án tốt nghiệp khoa Điện tử - Viễn thông
Trường Đại học Bách Khoa - Đại học Đà NẵngNhóm chúng tôi gồm có 2 thành viên:
Trần Nhật Tin, Lớp 09DT1- Khoa Điện tử -Viễn Thông, Trường đại họcBách Khoa - Đại học Đà Nẵng
Lê Thanh Lâm, Lớp 09DT1- Khoa Điện tử -Viễn Thông, Trường đại họcBách Khoa - Đại học Đà Nẵng
Chúng tôi xin cam đoan nội dung trong đồ án này là do chúng tôi thựchiện dưới sự hướng dẫn trực tiếp của thầy Huỳnh Việt Thắng, không phải là bảnsao chép của bất cứ đồ án hoặc công trình đã có từ trước
Trang 2MỤC LỤC
CHƯƠNG 1: TỔNG QUAN XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN 1
1.1 Giới thiệu chương 1
1.2 Một số khái niệm cơ bản trong xử lý ảnh 1
1.2.1 Điểm ảnh 1
1.2.2 Độ phân giải ảnh 2
1.2.3 Mức xám của bức ảnh 2
1.2.4 Các loại ảnh 3
1.3 Các phép xử lý ảnh số 3
1.3.1 Phép nhân chập 3
1.3.2 Lọc trung bình 4
1.3.3 Lọc thông thấp 5
1.3.4 Lọc thông cao 5
1.4 Bài toán tách biên ảnh 6
1.4.1 Một số khái niệm 6
1.4.2 Phương pháp Gradient tách biên ảnh 7
1.4.2.1 Bộ lọc Sobel 8
1.4.2.2 Bộ lọc Prewitt 8
1.5 Kết luận chương 9
CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB SIMULINK VÀ XILINX SYSTEM GENERATOR 10
2.1 Giới thiệu chương 10
2.2 Tổng quan về FPGA 10
2.2.1 Lịch sử ra đời của FPGA 10
2.2.2 Khái niệm cơ bản và cấu trúc FPGA 11
2.2.3 Các ứng dụng của FPGA 12
2.3 Giới thiệu KIT FPGA Virtex-5 12
Trang 3MỤC LỤC
2.4 Giới thiệu phần mềm Matlab Simulink 14
2.4.1 Giới thiệu Matlab 14
2.4.2 Simulink 14
2.5 Giới thiệu công cụ Xlinx System Generator 15
2.5.1 Giới thiệu hãng Xilinx 15
2.5.2 Xilinx System Generator 15
2.6 Kết luận chương 18
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG TÁCH BIÊN ẢNH TRÊN FPGA 19
3.1 Giới thiệu chương 19
3.2 Mô tả hệ thống 19
3.2.1 Tìm hiểu tổng quan hệ thống 19
3.2.2 Sơ đồ tổng quát hệ thống 19
3.2.3 Phân tích hệ thống 20
3.3 Thiết kế hệ thống 20
3.3.1 Quy trình thiết kế 20
3.3.2 Nội dung thiết kế 21
3.3.2.1 Request 21
3.3.2.2 Research 22
3.3.2.3 Thiết kế High-Level 23
3.3.2.4 Thiết kế Low-Level 31
3.4 Kết luận chương 32
CHƯƠNG 4: KẾT QUẢ THỰC THI VÀ ĐÁNH GIÁ 33
4.1 Giới thiệu chương 33
4.2 Kết quả mô phỏng 33
4.2.1 Mục tiêu mô phỏng 33
4.2.2 Thiết lập mô phỏng 33
4.2.3 Quy trình mô phỏng 34
4.2.4 Kết quả đạt được 37
4.2.4.1 Ảnh gốc ngõ vào 37
Trang 44.2.4.2 Kết quả thực hiện bằng bộ lọc Sobel 39
4.2.4.3 Kết quả thực hiện bằng bộ lọc Prewitt 42
4.2.4.4 Nhận xét kết quả 45
4.3 Đánh giá kết quả 46
4.3.1 Tiêu chí đánh giá 46
4.3.2 Kết quả đánh giá 46
4.3.2.1 Đánh giá tài nguyên 46
4.3.2.2 Đánh giá công suất 48
4.3.2.3 Đánh giá chất lượng ảnh ngõ ra 50
4.4 Đánh giá đề tài 51
4.4.1 Ưu điểm 51
4.4.2 Nhược điểm và hạn chế 52
4.5 Kết luận chương 52
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 53
TÀI LIỆU THAM KHẢO 55
PHỤ LỤC 56
Trang 5MỤC LỤC
DANH MỤC HÌNH VẼ
Hình 1.1: Ma trận pixel của bức ảnh Lena 256*256
Hình 1.2: Ảnh có độ phân giải khác nhau
Hình 1.3: Các loại ảnh khác nhau
Hình 1.4: Phép nhân chập tìm giá trị pixel trung tâm
Hình 1.5: Ảnh trước và sau khi lọc trung bình
Hình 1.6: Các loại đường biên
Hình 1.7: Ảnh trước và sau khi tách biên dùng bộ lọc SobelHình 1.8: Ảnh trước và sau khi tách biên dùng bộ lọc PrewittHình 2.1: Kiến trúc tổng quan FPGA
Hình 2.2: KIT FPGA Virtex-5 LX110T
Hình 2.3: Sơ đồ mô hình sử dụng Matlab Simulink
Hình 2.4: Quy trình thiết kế của XSG
Hình 2.5: Sơ đồ mô hình sử dụng Xilinx System GeneratorHình 3.1: Sơ đồ tổng quát hệ thống
Hình 3.2: Quy trình thiết kế
Hình 3.3: Sơ đồ module tiền xử lý ảnh
Hình 3.4: Block Image From File
Hình 3.5: Block Color Space Convertion
Hình 3.6: Block Frame Convertion
Hình 3.7: Block Unbuffer
Hình 3.8: Sơ đồ khối hậu xử lý ảnh
Hình 3.9: Khối buffer
Hình 3.10: Khối Convert 1-D to 2-D
Hình 3.11: Khối Data Type Coversion
Hình 3.12: Sơ đồ quy trình thiết kế edge detection dùng XSGHình 3.13: Sơ đồ chi tiết khối edge detection
Hình 3.14: Mặc nạ theo phương ngang
Hình 3.15: Mặc nạ theo phương dọc
Trang 6Hình 3.16: Sơ đồ mạch khối lấy ngưỡng
Hình 3.17: Sơ đồ mạch khối lấy trị tuyệt đối
Hình 3.18: Sơ đồ mạch hoàn chỉnh thiết kế
Hình 4.1: Kết nối Board FPGA Virtex5 với máy tính thông qua JTAG.Hình 4.2: Nạp bức ảnh vào Matlab
Hình 4.3: Thiết lập mới KIT chưa có trong XSG
Hình 4.4: Cấu hình thông số cho Virtex5 xc5vlx110t-1ff1136
Hình 4.24: Khởi động công cụ XPower Analyzer
Hình 4.25: Công suất tiêu thụ khi dùng bộ lọc Sobel
Hình 4.26: Công suất tiêu thụ khi dùng bộ lọc Prewitt
Trang 7MỤC LỤC
Trang 8DANH MỤC BẢNG
Bảng 4.1: Uớc lượng tài nguyên Prewitt edge detectionBảng 4.2: Uớc lượng tài nguyên Sobel edge detectionBảng 4.3: Người tham gia đánh giá chất lượng tách biên
Trang 9DANH MỤC CÁC TỪ VIẾT TẮT
DANH MỤC CÁC TỪ VIẾT TẮT
AASIC Application Specific Intergrated
Circuit
Vi mạch tích hợp thực hiện chứcnăng chuyên dụng
CCPLD Complex Programable Logic Devices Vi mạch phức tạp lập trình được
DDSP
DIMM
Digital Signal Processing
Dual In-line Memory Module
Xử lý tín hiệu sốRam sử dụng module bộ nhớkênh đôi
EEDK Embedded Development Kit Là công cụ để xây dựng hệ
thống có các vi xử lý nhúngtrong FPGA
FFPGA Field Programable Gate Array Mảng cổng logic lập trình được
I
IP Intellectual Property Là một sản phẩm trong thiết kế
vi mạch bao gồm Soft IP vàHard IP
JJTAG Join Test Action Group Công cụ truyền nhận dữ liệu,
debug và test hệ thốngL
LUT Look Up Table Là khối logic có thể thực hiện
bất kì hàm logic nào từ 4 đầuvào
MMII Media Independent Interface Một chuẩn giao diện dùng để kết
nối Fast EthernetP
PAL Programable Array Logic Mảng logic lập trình được
RRAM Random Acess Memory Bộ nhớ truy cập ngẫu nhiên
S
Trang 10SRAM Stactic Random Access Memory Bộ nhớ tĩnh truy cập ngẫu nhiên
UUSB Universal Serial Bus Bus truyền nhận nối tiếp
XXSG Xinix System Generator Công cụ thiết kế phần cứng của
Xilinx
Trang 11Nhằm thiết kế các ứng dụng đạt hiệu quả cao thì vấn đề xử lý nhằm đáp ứng
về tốc độ, thời gian thực là những yêu cầu rất quan trọng trong hầu hết các ứngdụng Để đáp ứng được các yêu cầu này thì ta phải xử lý một cách tốt nhất từng giaiđoạn trong quá trình xử lý ảnh Một trong những giai đoạn quan trọng này là tách
biên của một bức ảnh Do đó chúng tôi đã chọn đề tài “Thực thi và đánh giá thuật toán tách biên ảnh trên FPGA” Đề tài này được thực hiện trên cả phần cứng sử
dụng KIT FPGA Virtex-5XUP LX110T và phần mềm sử dụng Matlab Simulinktrên nền Xilinx System Generator Nội dung đồ án này được chia làm 4 chương:
Chương 1: Tổng quan về xử lý ảnh số và bài toán tách biên
Chương 2: Giới thiệu về KIT FPGA Virtex-5, phần mềm MatlabSimulink và Xilinx System Generator
Chương 3: Xây dựng hệ thống tách biên ảnh trên FPGA
Chương 4: Kết quả thực thi và đánh giá
Trang 12Bảng phân công nhiệm vụ:
TRẦN NHẬT TIN
- Tìm hiểu lý thuyết về Matlab Simulink và Xilinx SystemGenerator (XSG)
- Tìm hiểu quy trình thiết kế trên XSG
- Xây dựng module Image pre-processing
- Xây dựng IP core Sobel edge detection
- Test module Image pre-processing và IP core Sobel edgedetection
- Mô phỏng trên phần cứng và phần mềm hệ thống táchbiên sử dụng bộ lọc Sobel
- Thực hiện đánh giá tài nguyên và chất lượng ảnh ngõ ra
LÊ THANH LÂM
- Tìm hiểu lý thuyết tổng quan về xử lý ảnh, FPGA
- Tìm hiểu quy trình thiết kế trên Matlab Simulink
- Xây dựng module Image post-processing
- Xây dựng IP core Prewitt edge detection
- Test module Image post-processing và IP core Prewittedge detection
- Mô phỏng trên phần cứng và phần mềm hệ thống táchbiên sử dụng bộ lọc Prewitt
- Thực hiện đánh giá công suất tiêu thụ
Trong quá trình tìm hiểu được sự chỉ bảo và giúp đỡ nhiệt tình của thầyHuỳnh Việt Thắng nên chúng tôi đã hoàn thành được đồ án này trong khoảng thờigian quy định, song là một sinh viên đang ngồi trên ghế nhà trường kiến thức cònhạn chế nên không thể trách khỏi sự thiếu sót, rất mong được sự chỉ bảo và giúp đỡcủa các thầy cô để có thể nâng cao sự hiểu biết và hoàn thiện bản thân, cũng như cónhững nhận xét về nội dung đồ án này để đề tài được hoàn thiện hơn
Qua đây chúng tôi xin chân thành cảm ơn các thầy cô giáo trong khoa Điện
Trang 13LỜI MỞ ĐẦU
và giúp đỡ trong khoảng thời gian học tại trường Chúng tôi cũng xin gửi đến thầy
Huỳnh Việt Thắng lời biết ơn sâu sắc nhất để đáp lại sự chỉ dạy và giúp đỡ tận tình
chúng tôi trong khoảng thời gian làm đồ án tốt nghiệp
Chúng tôi xin chân thành cảm ơn!
Trang 14CHƯƠNG 1: TỔNG QUAN XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN 1.1 Giới thiệu chương
Xử lý ảnh số đóng vai trò rất quan trọng trong đời sống hiện nay, ta có thểgặp rất nhiều ứng dụng liên quan như trong giao thông, bảo mật, do đó để hiểu rõhơn về xử lý ảnh trong chương này sẽ trình bày một cách tổng quan về lý thuyết xử
lý ảnh bao gồm: một số khái niệm cơ bản trong xử lý ảnh, các phép xử lý ảnh số
1.2 Một số khái niệm cơ bản trong xử lý ảnh
1.2.1 Điểm ảnh
Ảnh tự nhiên là ảnh liên tục về không gian và độ sáng Để xử lý bằng máytính, ảnh cần phải được số hoá Số hoá ảnh là sự biến đổi gần đúng một ảnh liên tụcthành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và độ sáng (mứcxám) Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người khôngphân biệt được ranh giới giữa chúng Mỗi một điểm như vậy gọi là điểm ảnh (PEL:Picture Element) hay gọi tắt là Pixel Trong khuôn khổ ảnh hai chiều, mỗi pixel ứngvới cặp tọa độ (x, y) Hình 1.1 mô tả các pixel của một bức ảnh
PIXEL
Hình 1.1: Ma trận pixel của bức ảnh Lena 256*256
Trang 15CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN
1.2.2 Độ phân giải ảnh
Định nghĩa: Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấnđịnh trên một ảnh số được hiển thị Khoảng cách giữa các điểm ảnh phải được chọnsao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảng cáchthích hợp tạo nên một mật độ phân bổ, đó chính là độ phân giải và được phân bốtheo trục x và y trong không gian hai chiều
Độ phân giải của ảnh được biểu diễn làm hai loại:
Độ phân dải màu: sự thay đổi màu nhỏ nhất có thể thay đổi được vàcho ta biết số màu tối đa của ảnh
Độ phân dải không gian: chi tiết nhỏ nhất có thể thay đổi được
Với những bức ảnh có độ phân giải khác nhau được mô tả như hình 1.2 thì chấtlượng ảnh ngõ ra có sự khác nhau Những ảnh có độ phân giải cao thì bức ảnh rõràng và nét hơn
Hình 1.2: Ảnh có độ phân giải khác nhau
1.2.3 Mức xám của bức ảnh
Mỗi pixel ngoài vị trí tọa độ của nó trong ảnh thì nó còn có giá trị mức xám.Mức xám của ảnh biểu thị cường độ sáng của nó tại mỗi giá trị pixel Số mức xámcủa ảnh phụ thuộc vào không gian màu của ảnh đó Ví dụ một ảnh 8 bit thì có 256mức xám từ 0-255
Trang 161.2.4 Các loại ảnh
Có các loại ảnh như sau:
Ảnh màu: được tổng hợp từ 3 màu cơ bản R, G, B trong không gian màuRGB Để tạo nên thế giới màu, người ta thường dùng 3 byte để mô tả mứcmàu, khi đó các giá trị màu khoảng 16,7 triệu
Ảnh mức xám: là ảnh chỉ có hai màu đen trắng có giá trị mức xám của cácđiểm ảnh có thể khác nhau
Ảnh nhị phân: là ảnh đen trắng có không gian màu là 1 bit Với bit 0 màuđen, bit 1 màu trắng
Các loại ảnh được mô tả như hình 1.3 bao gồm: ảnh màu, ảnh mức xám và ảnh nhịphân
Trang 17CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN
Nhân chập [14] không phải là một thuật toán xử lý ảnh, mà là phép toánthông dụng trong các thuật toán xử lý ảnh sử dụng toán tử cửa sổ Nhân chập được
sử dụng trong các bài toán tách biên (edge detection) và lọc tuyến tính (linear filter)
Nhân chập tính toán ra giá trị mới của pixel trung tâm của toán tử cửa sổ,bằng cách thực hiện phép tính với các pixel lân cận và chính pixel trung tâm Việcthực thi phép nhân chập như sau: cho một cửa sổ với pixel trung tâm chạy trên toàn
bộ frame ảnh, với mỗi cửa sổ 3x3 thu được, ta thực hiện phép toán:
1 1 1
I (i, j) (n, m).I(n, m) (1.1)
j i
Lọc trung bình thường được sử dụng đối với ảnh có nhiễu phân bố đều, ngẫunhiên độc lập với mỗi pixel, ta có thể mặt nạ sau sẽ làm giảm ảnh hưởng của nhiễuđối với pixel trung tâm bằng cách lấy trung bình cộng các pixel lân cận trong cửa sổ
Trang 181 1 11
Kết quả thực hiện bộ lọc trung bình được mô tả như hình 1.5
Hình 1.5: Ảnh trước và sau khi lọc trung bình
Trang 19CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN
1.4 Bài toán tách biên ảnh
Hình 1.6: Các loại đường biên
Đường biên lý tưởng được định nghĩa là sự thay đổi giá trị cấp xámtại một vị trí xác định Nếu sự thay sự thay đổi cấp xám giữa các vùngtrong ảnh càng lớn thì đường biên càng dễ nhận ra Trong trường hợpnày sự thay đổi lại diễn ra tại một điểm nên đường biên có độ rộng làmột điểm ảnh và vị trí của đường biên chính là vị trí thay đổi cấp xám
Đường biên bậc thang: là đường biên xuất hiện khi có sự thay đổi cấpxám trải rộng qua nhiều điểm ảnh Vị trí của đường biên được xemnhư vị trí chính giữa của đường nối giữa cấp xám thấp và cấp xámcao Tuy nhiên đây chỉ là đường thẳng trong toán học, từ khi ảnh được
Trang 20kỹ thuật số hoá thì đường đó không còn là đường thẳng mà thànhnhững đường không trơn.
Đường biên thực: là đường biên xuất hiện khi có sự thay đổi cấp xámtại nhiều điểm ảnh nhưng không trơn
1.4.2 Phương pháp Gradient tách biên ảnh
Tương tự như các phép toán làm trơn ảnh, khả năng lấy đạo hàm theo tọa độcác điểm ảnh là hết sức quan trọng Bài toán cơ bản ở đây là nếu ta dùng định nghĩatoán học về đạo hàm thì chúng ta không thể lấy đạo hàm các điểm ảnh, do một ảnh
số hóa không phải là một hàm liên tục a[x, y] theo các biến tọa độ mà chỉ là mộthàm rời rạc I [m, n] với các biến tọa độ nguyên Do đó những thuật toán mà chúng
ta trình bày ở đây chỉ có thể được xem là các xấp xỉ cho đạo hàm thật sự theo tọa độcủa ảnh liên tục ban đầu bằng cách dùng phương pháp tích chập
Phương pháp Gradient [17] là phương pháp dò biên cục bộ (phương pháp tìmbiên trực tiếp) dựa theo đạo hàm cực đại bậc nhất Gradient là một vectơ có cácthành phần biểu thì tốc độ thay đổi giá trị của điểm ảnh theo hai hướng x và y
Trang 21CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN
Trang 22Bộ lọc Prewitt [12] cũng được ứng dụng nhiều trong tách biên của bức ảnh, cũnggiống như bộ lọc Sobel bộ lọc Prewitt cũng sử dụng 2 mặt nạ để tách biên của bứcảnh theo phương ngang và phương dọc.
Qua chương này ta đã đi tìm hiểu tổng quan về lý thuyết xử lý ảnh số, điều
đó giúp ta có cái nhìn cơ bản về xử lý ảnh bao gồm những khái niệm, các phươngpháp xử lý ảnh khác nhau Tạo tiền đề cho việc xây dựng thuật toán tách biên sửdụng FPGA
Trang 23CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB SIMULINK VÀ XILINX SYSTEM GENERATOR
CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB SIMULINK VÀ XILINX SYSTEM GENERATOR
2.1 Giới thiệu chương
Trong chương này sẽ giới thiệu tổng quan về FPGA, cấu trúc KIT FPGAVirtex-5, phần mềm Simulink Matlab và công cụ Xilinx System Generator
2.2 Tổng quan về FPGA
2.2.1 Lịch sử ra đời của FPGA
FPGA [1] được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công tyXilinx vào năm 1984, kiến trúc mới của FPGA cho phép tích hợp số lượng tươngđối lớn các phần tử bán dẫn vào một vi mạch so với kiến trúc trước đó là CPLD.FPGA có khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLDchỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA còn thấphơn nữa chỉ đạt vài nghìn đến 10.000 cổng
CPLD được cấu trúc từ số lượng nhất định các khối SPLD (SimpleProgramable Logic Device) thuật ngữ chung chỉ PAL, PLA SPLD thường là mộtmảng logic AND/OR lập trình được có kích thước xác định và chứa một số lượnghạn chế các phần tử nhớ đồng bộ Cấu trúc này còn hạn chế về khả năng thực hiệnnhững hàm phức tạp và thông thường hiệu suất làm việc của vi mạch phụ thuộc vàocấu trúc cụ thể của vi mạch hơn là vào yếu tố bài toán
Kiến trúc của FPGA là kiến trúc mảng các khối cổng logic, mỗi khối này nhỏhơn nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thểchứa nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần
tử logic vào hệ thống mạch kết nối Để đạt được mục đích này thì kiến trúc FPGAphải phức tạp hơn nhiều so với CPLD
Một điểm khác biệt nữa với CPLD là trong những FPGA hiện đại được tíchhợp nhiều bộ logic số học đã được tối ưu hoá hỗ trợ RAM, ROM tốc độ cao hay các
bộ nhân, bộ cộng dùng cho những ứng dụng xử lý tín hiệu số Ngoài khả năng cấutrúc lại vi mạch ở mức toàn cục, một số FPGA hiện đại còn hỗ trợ cấu trúc lại ở
Trang 24mức cục bộ tức là khả năng cấu trúc lại một bộ phận riêng lẻ trong khi vẫn đảm báohoạt động bình thường cho các bộ phận khác.
2.2.2 Khái niệm cơ bản và cấu trúc FPGA
FPGA là vi mạch dùng cấu trúc mảng phần tử logic mà người dùng có thểlập trình đươc Kiến trúc tổng quan về FPGA được mô tả như hình 2.1
Hình 2.1: Kiến trúc tổng quan FPGA [16]
Vi mạch FPGA được cấu thành từ các bộ phận:
Các khối logic cơ bản lập trình được (Logic Block)
Logic Block là khối chính của FPGA, khối này được cấu thành từLUT (Look Up Table) và một phần nhớ đồng bộ flip-flop LUT là khối logic
có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, kết quả của hàm này tuỳthuộc vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần
tử nhớ filp-flop
Hệ thống mạng liên kết lập trình được
Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theohai phương ngang và đứng tuỳ từng loại FPGA mà các đường liên kết đượcchia thành các nhóm khác nhau
Trang 25CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB SIMULINK VÀ XILINX SYSTEM GENERATOR
Khối vào/ra nhiều hay ít là tuỳ thuộc vào từng loại FPGA Chúng cóthể được kết nối với các thiết bị bên ngoài như LED, USB, RS232, RAM,…tuỳ thuộc vào mục đích sử dụng
Các phần tử tích hợp sẵn
Ngoài các khối logic, tuỳ theo các loại FPGA khác nhau mà có cácphần tử tích hợp thêm khác nhau chẳng hạn như trong dòng Virtex-5 củaXilinx có chứa nhân xử lý PowerPC, DSP Slice
2.2.3 Các ứng dụng của FPGA
Ứng dụng của FPGA bao gồm: xử lý tín hiệu số, các hệ thống hàng không vũtrụ, quốc phòng, tiền thiết kế mẫu ASIC, các hệ thống điều khiển trực quan, phântích nhận dạng ảnh, nhận dạng tiếng nói, mô hình phần cứng, … Do tính linh độngcao trong quá trình thiết kế cho phép FPGA giải quyết được các bài toán phức tạp
mà trước kia chỉ thực hiện nhờ phần mềm máy tính Ngoài ra nhờ mật độ cổng logiclớn FPGA được ứng dụng cho những bài toán đòi hỏi khối lượng lớn tính toán vàdùng trong các hệ thống làm việc theo thời gian thực
2.3 Giới thiệu KIT FPGA Virtex-5
Hình 2.2 giới thiệu hình ảnh KIT Virtex5 XUP LX110T
Hình 2.2: KIT FPGA Virtex-5 LX110T
Trang 26Virtex-5 LX110T là board mạch phát triển nền tản với bộ nhớ on-board và giao tiếpkết nối tiêu chuẩn công nghiêp XUPV5-LX110T thích hợp cho việc giảng dạy vànghiên cứu về các lĩnh vực:
Cấu hình và ngoại vi của XUPV5-LX110T:
Xilinx Virtex-5 XC5VLX110T FPGA
2 Xilinx XCF32P Platform Flash PROMs (32 Mbytes) phục vụ lưu trữ cấuhình dung lượng lớn
Xilinx SystemACE Compact Flash configuration controller
64 bit wide 256 Mbytes DDR2 small outline DIMM module compatible withEDK supported IP and software drivers
On – board 32 bits ZBT đồng bộ SRAM và Intel P30 StrataFlash
10/100/1000 tri-speed Ethernet PHY hỗ trợ giao tiếp MII, GMII, RGMII, andSGMII
Điều khiển USB host và ngoại vi
Bộ phát xung clock hệ thống lập trình được
Stereo AC97 codec với line in, line out, headphone, microphone, và đầu cắm
âm thanh số SPDIF
Cổng RS232, 16*2 LCD
Các thiết bị I/O khác
Trang 27CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB SIMULINK VÀ XILINX SYSTEM GENERATOR
2.4.1 Giới thiệu Matlab
Matlab là từ viết tắt của Matrix Laboratory, nó là một ngôn ngữ lập trình cấpcao dạng thông dịch Nó là môi trường tính toán số được thiết kế bởi công tyMathWorks Matlab cho phép thực hiện các phép tính toán số, ma trận, vẽ đồ thịhàm số hay biểu diễn thông tin (dưới dạng 2D hay 3D), thực hiện các thuật toán vàgiao tiếp với các chương trình của các ngôn ngữ khác một cách dễ dàng
2.4.2 Simulink
Simulink [5] là một công cụ mô phỏng được tích hợp sẵn trong Matlab, nógiúp ta có thể dễ dàng xây dựng các thuật toán xử lý tín hiệu một các dễ dàng thôngqua các khối (block) chức năng được thiết kế sẵn Ngoài ra nó còn tạo môi trườngthuận lợi cho việc xử lý các bài toán DSP trên phần mềm, sau đó chuyển sang phầncứng với sự hỗ trợ bằng công cụ của Xilinx được tích hợp cùng
Hình 2.3 là một ví dụng về một thiết kế sử dụng Matlab Simulink
Design and Verification
Copyright 2005-2009 The MathWorks, Inc.
Sobel Edge Detection
Mean Difference
satellite.gif R Image From File
double
>= 419 Compare
To Constant
In1 In2Out1
Compare
|u|
|u|
2-D FIR Filter I
2-D FIR Filter I
Hình 2.3: Sơ đồ mô hình sử dụng Matlab Simulink
Các kiểu dữ liệu trong Simulink:
double: số thực với độ chính xác gấp đôi
single: số thực với độ chính xác đơn
int8: số nguyên có dấu 8 bit
uint8: số nguyên không dấu 8 bit
int16: số nguyên có dấu 16 bit
Trang 28 uint16: số nguyên không dấu 16 bit
int32: số nguyên có dấu 32‐bit
uint32: số nguyên không dấu 32‐bit
2.5 Giới thiệu công cụ Xlinx System Generator
2.5.1 Giới thiệu hãng Xilinx
Xilinx là nhà phát triển hàng đầu hiện nay trong lĩnh vực chip khả trình.Được thành lập bởi Ross Freeman, Bernie Vonderschmitt, và Jim Barnett, và có trụ
sở tại thung lũng Silicon Trụ sở chính hiện nay ở San Jose , California Là thànhviên của nhóm 100 công ty hàng đầu thế giới hiện nay do tạp chí Fortune bình chọn
Xilinx là nhà phát triển FPGA, CPLD được sử dụng rộng rãi trong những ứng dụng truyền thông, tự động hóa, mật mã và các lĩnh vực khác Các sản phẩmphần cứng của Xilin gồm có các dòng CPLD: CoolRunner, các họ FPGA nhưSpartans, Virtex
2.5.2 Xilinx System Generator
Xilinx System Generator (XSG) [1] [3] là công cụ phát triển hệ thống choFPGA, cho phép thiết kế hệ thống ở dạng các khối, và hỗ trợ mô phỏng, debug, tạocode để nạp vào FPGA hoặc kết hợp vào những ứng dụng lớn hơn
Hình 2.4 mô tả quy trình chung cho việc thiết kế trên XSG
Hình 2.4: Quy trình thiết kế của XSG [13]
Trang 29CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB SIMULINK VÀ XILINX SYSTEM GENERATOR
XSG [7] được xây dựng như một Blockset của Simulink trong Matlab Do
đó, XSG thừa hưởng tất cả các ưu điểm của Simulink trong việc xây dựng hệ thống
và mô phỏng XSG còn sử dụng thư viện của Logic Core để xây dựng các block củamình Trong thư viện của XSG có tất cả các khối thực hiện các chức năng từ cơ bảnnhư cộng, trừ, nhân, các khối logic, cho đến những thiết kế phức tạp hơn như cácDSP, bộ lọc số, nhân chập, UART , các bộ nhớ tích hợp: Single Port, DualPortRam, FIFOs, các thanh ghi
XSG còn cho phép người thiết kế tạo ra các khối để thực hiện những nhiệm
vụ riêng bằng khối Black Box, tại đây người thiết kế sẽ tạo ra các entity và cài mãcủa nó vào Black Box để tạo ra các thiết kế riêng của mình Những thiết kế củaXSG có thể được dịch ra nhiều kiểu dữ liệu, có thể thành file *.bit để nạp ngay vàophần cứng, hoặc thành các thiết kế để ghép vào một hệ thống lớn hơn Với việc kếthợp với Mathwork để xây dựng XSG, Xilinx đã làm cho việc thiết kế hệ thống trênnền FPGA của mình trở nên thuận tiện và đơn giản hơn rất nhiều đối với người làm
kỹ thuật Trong đồ án này, chúng tôi đã sử dụng XSG để xây dựng toàn bộ phầnthuật toán xử lý ảnh tách biên cho thiết kế của mình
XSG cung cấp 3 dạng dữ liệu số học được sử dụng nhiều nhất trong DSP: sốphẩy động, số phẩy tĩnh có dấu và không dấu
Thư viện Simulink của XSG chứa 2 thư viện: Xilinx Blocksets và XilinxReference Blocksets Trong đó thư viện “Xilinx Blocksets” chứa các khối chứcnăng đơn giản như: thanh ghi, bộ cộng, delay, các hàm toán học đơn giản, ROM,các bộ lọc FIR, bộ nhớ đệm FIFO, … Thư viện “Xilinx Reference Blocksets” chứacác khối chuẩn, các khối này tương đối phức tạp và có thể sử dụng với các mục đíchxác định khác nhau như: các bộ tính FFT, DFT, … các khối này đưa ra các sự trừutượng số học, logic, bộ nhớ và xử lý tín hiệu phù hợp cho thực hiện các hệ thốngDSP trong FPGA Bổ sung vào thư viện này XSG còn cung cấp sự thực hiện từnghàm và phần mềm tạo mã dịch các hệ thống con mà đã kết hợp các khối XSG vào
mô tả phần cứng của mô hình
Trang 30-13 Constant1
1 Constant
a
b a + b
z-1AddSub
Sy stem Generator
Hình 2.5: Sơ đồ mô hình sử dụng Xilinx System Generator
2.6 Kết luận chương
Qua chương này ta đã có cái nhìn một cách tổng quan về FPGA nói chung vàKIT FPGA Virtex-5 nói riêng, đồng thời biết được công dụng của Matlab cũng nhưXilinx System Generator Điều đó giúp ta có thể dễ dàng tìm hiểu, thực thi, và đánhgiá một hệ thống DSP trên cả phần cứng và phần mềm một cách dễ dàng
Trang 31CHƯƠNG 3: XÂY DỰNG HỆ THỐNG TÁCH BIÊN ẢNH TRÊN FPGA
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG TÁCH BIÊN ẢNH TRÊN FPGA 3.1 Giới thiệu chương
Trong chương này ta sẽ tiến hành xây dựng hệ thống xử lý ảnh tách biên trênXSG thông qua việc mô tả hệ thống nhằm hiểu chức năng của hệ thống, sau đó tiếnhành thiết kế hệ thống theo quy trình thiết kế số
3.2.2 Sơ đồ tổng quát hệ thống
Ta mô tả hệ thống xử lý ảnh tách biên theo sơ đồ tổng quát như hình 3.1
pre-proscessing unit
Edge detection module
Image processing unit
Trang 32 Image pre-processing unit: khối tiền xử lý ảnh, được thực hiện trên Matlab.
Edge detection module: khối IP core của thiết kế, thực hiện trên XSG
Image post-processing unit: khối hậu xử lý ảnh, thực hiện trên Matlab
Image viewer: xem kết quả thiết kế
3.3 Thiết kế hệ thống
3.3.1 Quy trình thiết kế
Hình 3.2: Quy trình thiết kế
Request: yêu cầu đặt ra ban đầu cho thiết kế mà ta cần phải giải quyết
Research: tìm hiểu tổng quan về thiết kế, nguyên lý hoạt động
High-level Design: sơ đồ khối tổng quát của tín hiệu, các ngõ vào ra của thiếtkế
Low-level Design: vẽ sơ đồ mạch chi tiết cho từng module
Coding: viết RTL code cho thiết kế
Các công cụ hỗ trợ cho việc thiết kế số:
Microsoft Word: specification description, user guide
Microsoft Visio: design structure
Microsoft Excel: memory and register map
Notepad++ or EmEditor: Coding
Trang 33CHƯƠNG 3: XÂY DỰNG HỆ THỐNG TÁCH BIÊN ẢNH TRÊN FPGA
XEmacs: Auto-connection
LEDA (Synopsys): RTL code checker
Quartus (Altera), ISE Design Suite (Xilinx), XSG (Xilinx): Checking,Compiling and Simulating on FPGA
3.3.2 Nội dung thiết kế
3.3.2.1 Request
Trong phần này sẽ đưa ra yêu cầu bài toán là “Thực thi và đánh giá thuật toán táchbiên ảnh trên FPGA” Do đó khi có yêu cầu này mình phải lên các phương án khácnhau để có thể xử lý được bài toán
Phương án 1: thực hiện bằng phần mềm ta có 2 cách
Cách 1: sử dụng Matlab để có thể giải quyết bài toán này, có thể lậptrình trong môi trường của Matlab hoặc có thể sử dụng các blocktrong Simulink
3.3.2.2 Research
Bài toán đặt ra là ta phải giải quyết vấn đề tách biên của bức ảnh Do đó ta phải đitìm hiểu nguyên lý hoạt động của hệ thống, cơ chế tách biên và cách thực hiện trênphần mềm và phần cứng
Nguyên lý hoạt động của hệ thống:
Trang 34 Đầu tiên ta đưa một bức ảnh cần xử lý vào khối Image source, bứcảnh này là bất kì có thể là ảnh màu hay ảnh gray với bất kì kích thướcnào Tuy nhiên nếu kích thước bức ảnh nhỏ hơn thì tốc đọ xử lý sẽnhanh hơn và ngược lại.
Tiếp theo bức ảnh ngõ vào sẽ được chuyển thành ảnh gray để xử lý
Sau khi được ảnh gray ta sẽ đưa ảnh này vào khối Image processing unit Bức ảnh sẽ được tiền xử lý dưới dạng các ma trậnkhác nhau
pre- Sau khi đã tiền xử lý ta tiếp tục đưa vào khối Edge detection modulekhối này bao gồm các mặt nạ được thiết kế bằng các khối block củaXSG làm nhiệm vụ nhân chập ma trận bức ảnh ngõ vào với ma trậnmặt nạ Sau đó lấy ngưỡng để tạo giá trị pixel là 0 hoặc 1 để tạo điểmbiên đồng thời giảm nhiễu
Sau khi các ma trận ảnh được xử lý xong trong khối Edge detectionmodule sẽ tiếp tục đưa qua khối Image post-processing unit để hậu xử
lý ma trận ảnh
Cuối cùng là xuất kết quả thông qua khối Image viewer
Cơ chế tách biên: theo như phần đề cập trong chương 1 ta đã biết để táchbiên của bức ảnh ta dùng phương pháp Gradient với 2 bộ lọc Sobel vàPrewitt theo phép nhân chập
Cách thực hiện trên phần mềm, phần cứng
Phần mềm: dùng các block trong Simulink đề xây dựng thuật toán
Phần cứng: dùng các blocksets trong XSG để xây dựng, và dùngFPGA Virtex-5 XUP LX110T để thực hiện
3.3.2.3 Thiết kế High-Level
High-level design: thiết kế mức cao trong phần này sẽ chia thiết kế thành nhữngmodule con sau đó sẽ xác định sơ đồ khối cho từng module
Image source: Là các bức ảnh ngõ vào bất kì
Image pre-processing unit
Trang 35CHƯƠNG 3: XÂY DỰNG HỆ THỐNG TÁCH BIÊN ẢNH TRÊN FPGA
Sơ đồ khối module Image pre-processing unit như hình 3.3
Hình 3.3: Sơ đồ module tiền xử lý ảnh
Phân tích các khối trong sơ đồ
Image From File: block trong Simulink dùng để nhập bức ảnh ngõ vào Ta có thể nhập bất kì bức ảnh nào, tuy nhiên để đảm bảo tốc
độ xử lý nên trong đề tài này ta chỉ dùng những bức ảnh có kích thước 512*512 trở xuống
Hình 3.4: Block Image From File
Trang 36 Color Space Convertion: chuyển một bức ảnh ngõ vào bất kì thànhảnh gray
Hình 3.5: Block Color Space Convertion
Transpose: dùng để chuyển vị ma trận ảnh ngõ vào, nghĩa làchuyển hàng thành cột và cột thành hàng
Convert 2D-to-1D: chuyển ma trận ảnh ngõ vào 2D thành 1D
Frame Conversion: thiết lập mode lấy mẫu của tín hiệu ngõ ra
Hình 3.6: Block Frame Convertion