MỤC LỤC THỰC THI VÀ ĐÁNH GIÁ THUẬT TOÁN TÁCH BIÊN ẢNH TRÊN FPGA
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 Sobel8
1.4.2.2. Bộ lọc Prewitt8
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
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. Request21
3.3.2.2. Research. 22
3.3.2.3. Thiết kế High-Level23
3.3.2.4. Thiết kế Low-Level31
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
4.2.4.2. Kết quả thực hiện bằng bộ lọc Sobel39
4.2.4.3. Kết quả thực hiện bằng bộ lọc Prewitt42
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ất48
4.3.2.3. Đánh giá chất lượng ảnh ngõ ra. 50
4.4. Đánh giá đề tài51
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ÀI53
TÀI LIỆU THAM KHẢO.. 55
PHỤ LỤC.. 56
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 Sobel
Hình 1.8: Ảnh trước và sau khi tách biên dùng bộ lọc Prewitt
Hì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 Generator
Hì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 XSG
Hì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
Hì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.5: Cách khởi động IMPACT
Hình 4.6: Chọn file cấu hình
Hình 4.7: Nạp file cấu hình
Hình 4.8: Ảnh vào mức 1
Hình 4.9: Ảnh vào mức 2
Hình 4.10: Ảnh vào mức 3
Hình 4.11: Kết quả tách biên ảnh mức 1 dùng Sobel trong phần mềm
Hình 4.12: Kết quả tách biên ảnh mức 2 dùng Sobel trong phần mềm
Hình 4.13: Kết quả tách biên ảnh mức 3 dùng Sobel trong phần mềm
Hình 4.14: Kết quả tách biên ảnh mức 1 dùng Sobel trên phần cứng
Hình 4.15: Kết quả tách biên ảnh mức 2 dùng Sobel trên phần cứng
Hình 4.16: Kết quả tách biên ảnh mức 3 dùng Sobel trên phần cứng
Hình 4.17: Kết quả tách biên ảnh mức 1 dùng Prewitt trong phần mềm
Hình 4.18: Kết quả tách biên ảnh mức 2 dùng Prewitt trong phần mềm
Hình 4.19: Kết quả tách biên ảnh mức 3 dùng Prewitt trong phần mềm
Hình 4.20: Kết quả tách biên ảnh mức 1 dùng Prewitt trên phần cứng
Hình 4.21: Kết quả tách biên ảnh mức 2 dùng Prewitt trên phần cứng
Hình 4.22: Kết quả tách biên ảnh mức 3 dùng Prewitt trên phần cứng
Hình 4.23: Thiết lập ước lượng tài nguyên
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
DANH MỤC BẢNG
&
Bảng 4.1: Uớc lượng tài nguyên Prewitt edge detection
Bảng 4.2: Uớc lượng tài nguyên Sobel edge detection
Bảng 4.3: Người tham gia đánh giá chất lượng tách biên
DANH MỤC CÁC TỪ VIẾT TẮT
A |
||
ASIC |
Application Specific Intergrated Circuit |
Vi mạch tích hợp thực hiện chức năng chuyên dụng |
C |
||
CPLD |
Complex Programable Logic Devices |
Vi mạch phức tạp lập trình được |
D |
||
DSP 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 |
E |
||
EDK |
Embedded Development Kit |
Là công cụ để xây dựng hệ thống có các vi xử lý nhúng trong FPGA |
F |
||
FPGA |
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 |
J |
||
JTAG |
Join Test Action Group |
Công cụ truyền nhận dữ liệu, debug và test hệ thống |
L |
||
LUT |
Look Up Table |
Là khối logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào. |
M |
||
MII |
Media Independent Interface |
Một chuẩn giao diện dùng để kết nối Fast Ethernet |
P |
||
PAL |
Programable Array Logic |
Mảng logic lập trình được |
R |
||
RAM |
Random Acess Memory |
Bộ nhớ truy cập ngẫu nhiên |
ROM |
Read Only Memory |
Bộ nhớ chỉ có thể đọc |
S |
||
SRAM |
Stactic Random Access Memory |
Bộ nhớ tĩnh truy cập ngẫu nhiên |
U |
||
USB |
Universal Serial Bus |
Bus truyền nhận nối tiếp |
X |
||
XSG |
Xinix System Generator |
Công cụ thiết kế phần cứng của Xilinx |
LỜI MỞ ĐẦU
Ngày nay xử lý ảnh ngày càng phổ biến và được phát triển mạnh với nhiều ứng dụng thực tế trong ngành y học, an ninh, giao thông, hệ thống bảo mật, tự động hóa … Các ứng dụng trong chẩn đoán y học dựa vào các thiết bị phần cứng đa dạng như máy chụp cắt lớp (CT - Computed Tomography), máy chụp cộng hưởng từ (MRI – Magnetic Resonance Imaging), máy siêu âm, máy điện tim, chụp X-Ray. Trong an ninh, xử lý ảnh giúp phát hiện chuyển động, giúp cảnh báo xâm phạm, phát hiện các tình huống bất thường dựa trên nhận dạng cử động của cơ thể người.
Trong giao thông giúp theo dõi lưu thông: cảnh báo sớm tình trạng ùn tắc, ghi nhận các trường hợp phóng nhanh lạng lách, vượt đèn đỏ, chụp và truy suất số xe vi phạm để xử lí. Trong dây truyền tự động hóa giúp đo lường và kiểm định chất lượng.
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 Virtex-5XUP 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:
vChương 1: Tổng quan về xử lý ảnh số và bài toán tách biên.
vChương 2: Giới thiệu về KIT FPGA Virtex-5, phần mềm Matlab Simulink và Xilinx System Generator.
vChương 3: Xây dựng hệ thống tách biên ảnh trên FPGA.
vChương 4: Kết quả thực thi và đánh giá
Bảng phân công nhiệm vụ:
THÀNH VIÊN |
NHIỆM VỤ |
TRẦN NHẬT TIN |
- Tìm hiểu lý thuyết về Matlab Simulink và Xilinx System Generator (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 edge detection. - Mô phỏng trên phần cứng và phần mềm hệ thống tách biê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 Prewitt edge detection. - Mô phỏng trên phần cứng và phần mềm hệ thống tách biê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ầy Huỳnh Việt Thắng nên chúng tôi đã hoàn thành được đồ án này trong khoảng thời gian quy định, song là một sinh viên đang ngồi trên ghế nhà trường kiến thức còn hạ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 tử - Viễn thông, đặc biệt là các thầy cô trong bộ môn Điện tử đã nhiệt tình giảng dạy 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 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áy tí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ục thà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ức xám). Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phâ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 ứng với cặp tọa độ (x, y). Hình 1.1 mô tả các pixel của một bức ảnh
Hình 1.1: Ma trận pixel của bức ảnh Lena 256*256
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ọn sao 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ách thí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ất lượ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ám của ảnh phụ thuộc vào không gian màu của ảnh đó. Ví dụ một ảnh 8 bit thì có 256 mức xám từ 0-255.
1.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àu RGB. Để tạo nên thế giới màu, người ta thường dùng 3 byte để mô tả mức mà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.
Hình 1.3: Các loại ảnh khác nhau
1.3. Các phép xử lý ảnh số
Các phép xử lý ảnh được sử dụng nhằm mục đích:
- Nâng cao chất lượng bức ảnh
- Nhận dạng ảnh
- Tách biên bức ảnh
- Loại bỏ nhiễu cho bức ảnh
1.3.1. Phép nhân chập
Nhân chập [14] không phải là một thuật toán xử lý ảnh, mà là phép toán thô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ệc thự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:
Hình 1.4 mô tả trực quan phương thức thực hiện nhân chập để tìm giá trị của pixel trung tâm.
Hình 1.4: Phép nhân chập tìm giá trị pixel trung tâm [15]
1.3.2. Lọc trung bình
Với lọc trung bình, mỗi điểm ảnh được thay thế bằng trung bình trọng số của các điểm lân cận. Trong lọc trung bình, thường người ta ưu tiên cho các hướng để bảo vệ biên của ảnh khỏi bị mờ khi làm trơn ảnh.
Lọc trung bình thường được sử dụng đối với ảnh có nhiễu phân bố đều, ngẫu nhiê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ổ
Nếu ảnh có nhiễu Gaussian, ta sử dụng mặt nạ
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
1.3.3. Lọc thông thấp
Lọc thông thấp thường dùng để làm trơn nhiễu, loại bỏ các thành phần tần số cao. Để lọc thông thấp ta người ta dùng mặt nạ chập
1.3.4. Lọc thông cao
Lọc thông cao làm tăng độ tương phản của ảnh. Để thực hiện bộ lọc thông cao ta dùng mặt nạ chập:
1.4. Bài toán tách biên ảnh
1.4.1. Một số khái niệm
- Điểm biên: Một điểm được coi là điểm biên nếu có sự thay đổi nhanh hoặc đột ngột về mức xám.
- Đường biên: Là tập hợp các điểm biên liên tiếp tạo thành đường biên hay đường bao.Ý nghĩa của đường biên trong xử lý:
+ Đường biên là một loại đặc trưng cục bộ tiêu biểu trong phân tích, nhận dạng ảnh.
+ Người ta sử dụng biên làm phân cách các vùng xám (màu) cách biệt. Ngược lại, người ta cũng sử dụng các vùng ảnh để tìm đường phân cách.
- Các loại đường biên: có 3 loại đường biên chính là đường biên lý tưởng, đường biên bậc thang và đường biên thực (tương ứng từ trái qua phải như hình vẽ )
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ám tại một vị trí xác định. Nếu sự thay sự thay đổi cấp xám giữa các vùng trong ảnh càng lớn thì đường biên càng dễ nhận ra. Trong trường hợp nà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ấp xám trải rộng qua nhiều điểm ảnh. Vị trí của đường biên được xem như vị trí chính giữa của đường nối giữa cấp xám thấp và cấp xám cao. Tuy nhiên đây chỉ là đường thẳng trong toán học, từ khi ảnh được kỹ thuật số hoá thì đường đó không còn là đường thẳng mà thành nhữ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ám tạ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ĩa toá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ột hà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ìm biê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ác thành phần biểu thì tốc độ thay đổi giá trị của điểm ảnh theo hai hướng x và y.
Trong đó dx, dy thể hiển khoảng cách giữa hai điểm ảnh (thường chọn dx = dy = 1).
Đạo hàm theo hai trục x (Ix) và y (Iy) ta có:
ð
ð
Với I (m, n) là giá trị ngõ vào, || là giá trị ngõ ra.
1.4.2.1. Bộ lọc Sobel
Bộ lọc Sobel [11] được sử dụng nhiều trong việc tách biên của một bức ảnh. Bộ lọc này sử dụng 2 mặt nạ theo phương ngang và dọc để tách biên của bức ảnh.
Kết quả thực hiện tách biên ảnh bộ lọc Sobel được mô tả như hình 1.7
Hình 1.7: Ảnh trước và sau khi tách biên dùng bộ lọc Sobel
1.4.2.2. Bộ lọc Prewitt
Bộ lọc Prewitt [12] cũng được ứng dụng nhiều trong tách biên của bức ảnh, cũng giố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.
Kết quả thực hiện tách biên ảnh bộ lọc Prewitt được mô tả như hình 1.8
Hình 1.8: Ảnh trước và sau khi tách biên dùng bộ lọc Prewitt
1.5. Kết luận chương
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ương phá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.
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 FPGA Virtex-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 ty Xilinx 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 CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA còn thấp hơ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 (Simple Programable Logic Device) thuật ngữ chung chỉ PAL, PLA. SPLD thường là một mảng logic AND/OR lập trình được có kích thước xác định và chứa một số lượng hạ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ện nhữ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ào cấ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 FPGA phả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ích hợ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ấu trú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 ở mứ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áo hoạ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 theo hai phương ngang và đứng tuỳ từng loại FPGA mà các đường liên kết được chia thành các nhóm khác nhau.
- Khối vào/ra (I/O Pad)
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ác phần tử tích hợp thêm khác nhau chẳng hạn như trong dòng Virtex-5 của Xilinx 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ân tí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 động cao 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 logic lớ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
Virtex-5 LX110T là board mạch phát triển nền tản với bộ nhớ on-board và giao tiếp kế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:
+ Thiết kế số
+ Hệ thống nhúng
+ Giao tiếp và xử lý tín hiệu số.
+ Cấu trúc máy tính
+ Hệ điều hành
+ Mạng
+ Xử lý ảnh, video
+ Truyền nhận nối tiếp tốc độ cao
+ Thiết kế vi mạch
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ấu hình dung lượng lớn.
+ Xilinx SystemACE Compact Flash configuration controller
+ 64 bit wide 256 Mbytes DDR2 small outline DIMM module compatible with EDK 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, and SGMII.
+ Đ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.
2.4. Giới thiệu phần mềm Matlab Simulink
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ấp cao 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 ty MathWorks. 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ông qua 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ường thuậ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ần cứ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
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
+ 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ành viê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ẩm phầ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 cho FPGA, cho phép thiết kế hệ thống ở dạng các khối, và hỗ trợ mô phỏng, debug, tạo code để 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]
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ủa mì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ản như 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ác DSP, bộ lọc số, nhân chập, UART..., các bộ nhớ tích hợp: Single Port, DualPort Ram, 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ủa XSG có thể được dịch ra nhiều kiểu dữ liệu, có thể thành file *.bit để nạp ngay vào phầ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ết hợp với Mathwork để xây dựng XSG, Xilinx đã làm cho việc thiết kế hệ thống trên nề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ần thuậ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à Xilinx Reference Blocksets. Trong đó thư viện “Xilinx Blocksets” chứa các khối chức nă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ứa cá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 đích xá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ừu tượ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ống DSP trong FPGA. Bổ sung vào thư viện này XSG còn cung cấp sự thực hiện từng hà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.
XSG có 2 loại khối:
+ Khối bit-accurate: tạo ra giá trị trong Simulink phù hợp với giá trị chúng tạo ra trong phần cứng.
+ Khối cycle-accurate: tạo ra giá trị trong Simulink tương ứng tại các thời điểm tương ứng.
Hình 2.5 là một ví dụ về việc xây dựng module thực hiện hàm trị tuyệt đối trong Xilinx System 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à đánh giá 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.
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ê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ố.
3.2. Mô tả hệ thống
3.2.1. Tìm hiểu tổng quan hệ thống
- Nhiệm vụ: thực thi và đánh giá thuật toán tách biên sử dụng Xilinx System Generator trên cả phần mềm Matlab và phần cứng FPGAVirtex-5.
- 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.
- Yêu cầu: hệ thống phải đảm bảo thực hiện đúng yêu cầu về kết quả đề ra là các biên của một bức ảnh ngõ vào bất kì (ảnh màu, ảnh gray) với bất kì kích thước nào điều được tách ra (ảnh ngõ ra là ảnh nhị phân với các biên được tách ra), đồng phải tối ưu về tài nguyên công suất.
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
Hình 3.1: Sơ đồ tổng quát hệ thống
3.2.3. Phân tích hệ thống
Dựa vào hình 3.1 thể hiện sơ đồ khối tổng quát của đề tài mà chúng tôi thực hiện gồm 5 khối chính sau:
- Image source: ngõ vào bức ảnh bất kì có thể là ảnh màu hay ảnh Gray.
- 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ết kế.
- 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
- 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ách biê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ác nhau để 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ập trình trong môi trường của Matlab hoặc có thể sử dụng các block trong Simulink.
+ Cách 2: dùng ngôn ngữ C/C++ để thực hiện.
- Phương án 2: dùng phần cứng ta cũng có 2 cách
+ Cách 1: sử dụng ngôn ngữ mô tả phần cứng Verilog/VHDL để mô tả bài toán, sử dụng các công cụ của Xilinx hoặc Altera để thực hiện
+ Cách 2: sử dụng Xilinx System Generator của Xilinx và Matlab Simulink để thực hiện.
Khi đưa ra các phương án khác nhau cho việc giải quyết bài toán trên, chúng tôi đã quyết định chọn thực hiện đề tài trên bằng cả phần mềm và phần cứng. Trong phần mềm chúng tôi thực hiện bằng Matlab Simulink, trên phần cứng dùng Xilinx System Generator. Việc thực hiện đồng thời cả phần cứng và phần mềm giúp ta có cái nhìn tổng quan hơn về đề tài, đồng thời thấy được sự khác nhau giữa chúng.
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 đi tì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ên phần mềm và phần cứng.
- Nguyên lý hoạt động của hệ thống:
+ Đầ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ước nà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 pre-processing unit. Bức ảnh sẽ được tiền xử lý dưới dạng các ma trận khác nhau.
+ Sau khi đã tiền xử lý ta tiếp tục đưa vào khối Edge detection module khối này bao gồm các mặt nạ được thiết kế bằng các khối block của XSG làm nhiệm vụ nhân chập ma trận bức ảnh ngõ vào với ma trận mặt nạ. Sau đó lấy ngưỡng để tạo giá trị pixel là 0 hoặc 1 để tạo điểm biên đồng thời giảm nhiễu.
+ Sau khi các ma trận ảnh được xử lý xong trong khối Edge detection module 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ách biê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ùng FPGA 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ững module 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ì
- ...............
..............
4.2.4.2. Kết quả thực hiện bằng bộ lọc Sobel
- Trong phần mềm
+ Ảnh mức 1
Hình 4.11: Kết quả tách biên ảnh mức 1 dùng Sobel trong phần mềm
+ Ảnh mức 2
Hình 4.12: Kết quả tách biên ảnh mức 2 dùng Sobel trong phần mềm
+ Ảnh mức 3
Hình 4.13: Kết quả tách biên ảnh mức 3 dùng Sobel trong phần mềm
- Trên phần cứng
+ Ảnh mức 1
Hình 4.14: Kết quả tách biên ảnh mức 1 dùng Sobel trên phần cứng
+ Ảnh mức 2
Hình 4.15: Kết quả tách biên ảnh mức 2 dùng Sobel trên phần cứng
+ Ảnh mức 3
Hình 4.16: Kết quả tách biên ảnh mức 3 dùng Sobel trên phần cứng
4.2.4.3. Kết quả thực hiện bằng bộ lọc Prewitt
- Trong phần mềm
+ Ảnh mức 1
Hình 4.17: Kết quả tách biên ảnh mức 1 dùng Prewitt trong phần mềm
+ Ảnh mức 2
Hình 4.18: Kết quả tách biên ảnh mức 2 dùng Prewitt trong phần mềm
+ Ảnh mức 3
Hình 4.19: Kết quả tách biên ảnh mức 3 dùng Prewitt trong phần mềm
- Trên phần cứng
+ Ảnh mức 1
Hình 4.20: Kết quả tách biên ảnh mức 1 dùng Prewitt trên phần cứng
+ Ảnh mức 2
Hình 4.21: Kết quả tách biên ảnh mức 2 dùng Prewitt trên phần cứng
+ Ảnh mức 3
Hình 4.22: Kết quả tách biên ảnh mức 3 dùng Prewitt trên phần cứng
4.2.4.4. Nhận xét kết quả
+ Phương pháp tách biên trực tiếp dựa vào sự biến thiên mức xám của bức ảnh theo hướng, được cụ thể qua việc sử dụng 2 bộ lọc Sobel và Prewitt cho kết quả khá tốt, ít chịu ảnh hưởng của nhiễu. Tuy nhiên ở một số chi tiết đặc biệt là ở các bức ảnh vào mức 3, sự tách biên là chưa rõ ràng. Điều này được giải thích là do sự hạn chế của phương pháp tách biên trực tiếp, nếu sự biến thiên độ sáng không đột ngột thì biên khó tách ra hoàn toàn được.
+ Đối với bộ lọc Sobel và Prewitt kết quả tách biên khi thực hiện trong phần mềm và trên phần cứng là giống nhau, điều này cho thấy thuật toán xây dựng được đảm tính đúng đắn đồng thời giải quyết được những khó khăn nhất định khi chuyển thiết kế xuống KIT FPGA.
+ Nhìn vào các kết quả của các bức ảnh với các mức khác nhau ta thấy:
- Đối với những bức ảnh đơn giản tức ảnh mức 1 kết quả khi thực hiện bằng bộ lọc Sobel và Prewitt đều cho kết quả tốt, các biên được tách ra dường như hoàn toàn. Đối với ảnh mức này ta chưa thể thấy được sự khác nhau với việc sử dụng 2 bộ lọc khác nhau.
- Đối với các bức ảnh mức 2 ta có thể thấy rõ ràng khi thực hiện tách biên bằng bộ lọc Sobel cho kết quả tốt hơn so với Prewitt.
- Với những bức ảnh phức tạp, có nhiều chi tiết và có độ thay đổi mức xám không rõ ràng tương ứng với các bức ảnh mức 3 thì cả bộ lọc Sobel và Prewitt đều cho kết quả chưa thực sự tốt. Tuy nhiên trong trường hợp này ta vẫn thấy bộ lọc Sobel tách biên tốt hơn so với Prewitt, điều này được thể hiện qua các biên của bức ảnh dùng bộ lọc Sobel được tách ra nhiều và rõ ràng hơn so với Prewitt.
4.3. Đánh giá kết quả
4.3.1. Tiêu chí đánh giá
Sau khi đã hoàn thành xong việc thiết kế hệ thống và mô phỏng ta tiến hành đánh giá việc thực thi đề tài qua 3 tiêu chí:
- Tài nguyên
- Công suất
- Chất lượng ảnh ngõ ra.
- Phương pháp làm đánh giá: dùng block Resource Estimate trong Xilinx blocksets để ước lượng tài nguyên sử dụng trong thiết kế như hình 4.23
4.3.2. Kết quả đánh giá
4.3.2.1. Đánh giá tài nguyên
Hình 4.23: Thiết lập ước lượng tài nguyên
- Nội dung đánh giá: tiến hành ước lượng tài nguyên phần cứng khi thực hiện bằng bộ lọc Sobel và Prewitt với các Board FPGA khác nhau của Xilinx: Spartan 3A-DSP, Virtex5, Virtex6 Lower Power.
- Kết quả ước lượng
Bảng 4.1: Ước lượng tài nguyên Prewitt edge detection
|
Prewitt |
||
Spartan 3A-DSP xc3sd3400a-4fg676 |
Virtex5 xc5vlx110t-1ff1136 |
Virtex6 Lower Power xc6vsx315tl-1lff1156 |
|
Slices |
494 |
301 |
208 |
FFs |
782 |
782 |
782 |
BRAMs |
0 |
0 |
0 |
LUTs |
656 |
658 |
662 |
IOBs |
16 |
16 |
16 |
DSP48s |
18 |
18 |
18 |
TBUFs |
0 |
0 |
0 |
Bảng 4.2: Ước lượng tài nguyên Sobel edge detection
|
Sobel |
||
Spartan 3A-DSP xc3sd3400a-4fg676 |
Virtex5 xc5vlx110t-1ff1136 |
Virtex6 Lower Power xc6vsx315tl-1lff1156 |
|
Slices |
486 |
252 |
206 |
FFs |
774 |
458 |
774 |
BRAMs |
0 |
0 |
0 |
LUTs |
648 |
496 |
669 |
IOBs |
16 |
16 |
16 |
DSP48s |
18 |
0 |
18 |
TBUFs |
0 |
0 |
0 |
- Nhận xét:
+ Dựa vào số liệu 2 bảng trên ta thấy Virtex6 Lower Power xc6vsx315tl-1lff1156 tốn ít tài nguyên nhất và Spartan 3A-DSP xc3sd3400a-4fg676 tốn nhiều tài nguyên nhất. Điều này cho thấy được cải thiện ngày càng lớn của Xilinx trong việc tối ưu hoá phần cứng sử dụng.
+ Với cùng các điều kiện về thiết kế (chỉ khác thông số cấu hình bộ lọc) và trên cùng một KIT ta thấy bộ lọc Sobel tiêu tốn it tài nguyên hơn so với Prewitt.
+ Việc chọn Virtex5 để thực thi phần cứng trong đề tài này phụ thuộc vào 2 yếu tố:
- Thứ nhất: KIT FPGA Virtex5 XUP LX110T mượn được ở khoa Điện tử - Viễn thông dưới sự cho phép của thầy Huỳnh Việt Thắng.
- Thứ hai: KIT FPGA Virtex5 XUP LX110T tối ưu phần cứng tốt hơn so với Spartan 3.
4.3.2.2. Đánh giá công suất
- Phương pháp làm đánh giá: Dùng công cụ Xilinx XPower Analyzer đánh giá công suất tiêu thụ trên phần cứng của từng bộ lọc là Sobel và Prewitt. Khởi động công cụ Xilinx XPower Analyzer như hình 4.24
Hình 4.24: Khởi động công cụ XPower Analyzer
- Nội dung đánh giá: dùng công cụ XPower Analyzer đánh giá công suất tiêu thụ của thiết kế với việc dùng 2 bộ lọc là Sobel và Prewitt.
- Kết quả đánh giá
+ Đối với bộ lọc Sobel
Hình 4.25: Công suất tiêu thụ khi dùng bộ lọc Sobel
+ Đối với bộ lọc Prewitt
Hình 4.26: Công suất tiêu thụ khi dùng bộ lọc Prewitt
- Nhận xét
Qua kết quả phân tích công suất ta thấy được những vấn đề sau:
+ Tổng công suất tiêu thụ của thiết kế lần lượt là 1.062W và 1.065W tương ứng khi sử dụng bộ lọc Sobel và Prewitt. Điều này nói lên được 2 bộ lọc tiêu thụ công suất xấp xỉ nhau.
+ Tương ứng với việc tiêu tốn công suất như trên thì đòi hỏi phải cung cấp cho thiết kế lượng công suất tối thiểu là bằng với tiêu thụ. Điều này được thể hiện rõ qua số liệu công suất cung cấp cho thiết kế với việc sử dụng bộ lọc Sobel là 1.062W còn Prewitt là 1.065W.
4.3.2.3. Đánh giá chất lượng ảnh ngõ ra
- Phương pháp thực hiện: ta tiến hành khảo sát kết quả thực hiện với việc xây dựng phiếu đánh giá, sau đó chọn một số người để đánh giá kết quả thực hiện thông qua cảm nhận chủ quan của từng người rồi tổng hợp lại.
- Nội dung phiếu đánh giá: sẽ đính kèm trong phần phụ lục
- Quá trình đánh giá
Bảng 4.3: Người tham gia đánh giá chất lượng tách biên
STT |
Họ và tên
|
Giới tính |
Năm sinh |
Nghề nghiệp |
Nơi làm việc |
1 |
Nguyễn Thị Hồng Sương |
Nữ |
1991 |
SV |
Khoa ĐT-VT, BKDN |
2 |
Lê Thị Lệ Thuỷ |
Nữ |
1991 |
SV |
Khoa HTP, BKDN |
3 |
Võ Thành Văn |
Nam |
1991 |
SV |
Khoa ĐT-VT, BKDN |
4 |
Lê Văn Nam |
Nam |
1991 |
SV |
Khoa ĐT- VT, BKDN |
5 |
Trần Thị Đoan Tâm |
Nữ |
1994 |
SV |
Khoa Hoá, CĐCN |
- Kết quả đánh giá chất lượng tách biên
Biểu đồ thể hiện việc đánh giá chất lượng bức ảnh ngõ ra của thiết kế dùng 2 bộ lọc là Sobel và Prewitt.
- Nhận xét
+ Theo cảm nhận chủ quan của người đánh giá ta thấy độ hài lòng về chất lượng tách biên của bộ lọc Sobel là tốt hơn so với bộ lọc Prewitt. Điều này phần nào phản ánh đúng với những kết quả thực thi ở trên.
4.4. Đánh giá đề tài
4.4.1.Ưu điểm
- Đã xây dựng thành công việc xử lý ảnh tách biên bằng cách kết hợp nhiều bộ lọc trong cùng một thiết kế nhưng vẫn đảm bảo tối ưu về tài nguyên.
- Đã giải quyết được các vấn đề trong nghiên cứu khi chuyển từ thiết kế trong phần mềm xuống phần cứng.
- Kết quả mô phỏng đúng theo yêu cầu thiết kế.
- Thuật toán trình bày chi tiết, dễ hiểu.
- Thuật toán trên chỉ mới áp dụng cho 2 bộ lọc là Sobel và Prewitt. Muốn dùng cho các bộ lọc khác ta phải xây dựng lại IP core edge detection.
- Cần cải thiện khối hậu xử lý để nâng cao chất lượng ảnh ngõ ra.
- Tín hiệu ngõ vào chỉ mới dừng lại ở dạng bức ảnh, chưa xử lý được ở dạng video.
4.4.2. Nhược điểm và hạn chế
4.5. Kết luận chương
Qua chương này ta đã kiểm chứng được kết quả thiết kế là đúng đắn thông qua việc mô phỏng và đánh giá, tuy nhiên vẫn còn một số hạn chế nhất định. Đây chính là cơ sơ để ta kế thừa và phát triển đề hoàn thiện hơn nữa đề tài.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
&
Sau một thời gian tìm hiểu, nghiên cứu chúng tôi đã thực hiện thành công đồ án “Thực thi và đánh giá thuật toán tách biên trên FPGA ”. Qua đó chúng tôi thấy được vai trò quan trọng của việc tách biên trong việc xử lý ảnh. Đồng thời học được nhiều kiến thức và kinh nghiệm trong việc xây dựng các thuật toán DSP trên phần cứng và phần mềm.
Kết thúc quá trình nghiên cứu đề tài chúng tôi có những nhận xét sau:
Việc thực thi thuật toán tách biên trong phần mềm và trên phần cứng là khác nhau. Nếu trong phần mềm ta có thể xây dựng và thực thi một cách nhanh chóng thì trong phần cứng ta phải giải quyết một số vấn đề phức tạp, đồng thời phải đảm bảo về tài nguyên, công suất.
Kết quả thực thi hệ thống với IP core là bộ lọc Sobel cho kết quả tốt hơn so với bộ lọc Prewitt về nhiều mặt như: công suất, tài nguyên, chất lượng ảnh ngõ ra.
Việc kết hợp vừa thực thi và đánh giá trong thiết kế cho chúng tôi có cái nhìn chi tiết hơn về đề tài, góp phần giúp khẳng định đề tài không những đúng đắn mà còn phải tối ưu.
Tuy nhiên đề tài vẫn còn một số hạn chế như chất lương ảnh chưa tốt lắm, công suất sử dụng còn nhiều, ngõ vào chưa được đa dạng.
Hướng phát triển đề tài:
- Phát triển đề tài có thể kết hợp xử lý kết hợp nhiều bộ lọc hơn nữa trong cùng một thiết kế.
- Tối ưu hoá thiết kế sử dụng ít tài nguyên hơn.
- Xử lý nhiều loại tín hiệu khác nhau như: bức ảnh, video, camera.
Đồ án này được hoàn thành trong thời gian hạn chế, để làm tiền đề cho sự phát triển và nghiên cứu sau này vì thế không thể trách khỏi những thiếu sót. Hi vọng trong thời gian tới với kinh nghiệm thực tiễn, chúng tôi sẽ hoàn thiện hơn đề tài của mình.
Một lần nữa chúng tôi xin chân thành cảm ơn thầy giáo Huỳnh Việt Thắng và các thầy cô giáo trong khoa đã hướng dẫn và có những ý kiến quý báu giúp chúng tôi hoàn thành đồ án này.
TÀI LIỆU THAM KHẢO
[1] Xilinx System Generator User’s Guide, downloadable from; http:// www. Xilinx.com.
[2] S. Gupta and S. G. Mazumdar, “Sobel edge detection algorithm,” vol. 2, no. 2, pp. 1578–1583, 2013.
[3] http://forums.xilinx.com
[4] R. Maini and J. S. Sohal, 2006. “Performance Evaluation of Prewitt Edge Detector for Noisy Images” Vol. 6, pp. 39, 42, GVIP Journal
[5] Simulink, http://www.mathworks.com/products/simulink/.
[6] Xilinx Inc., “System Generator for Digital Signal Processing
[7] C. S. Panda, “Filtering corrupted image and edge detection in restored grayscale image using derivative filters,”no.3, pp.105.
[8] “Modeling and Implementation of DSP FPGA Solutions", Robert D. Turney, Chris Dick1, David B.
[9] “Optimal Operators in Digital Image Processing” by Scharr, Hanno, PhD thesis, 2000.
[10] S. Panda, “Filtering corrupted image and edge detection in restored grayscale image using derivative filters,”no.3, pp.105.
[11] http://en.wikipedia.org/wiki/Sobel_operator
[12] http://en.wikipedia.org/wiki/ Prewitt_operator
[13]http://www.traquair.com/catalog/sysgen.html
[14] http://en.wikipedia.org/wiki/Convolution
[15] http://www.songho.ca/dsp/convolution/convolution.html
[16] http://www.vinhuni.edu.vn/Vinhuni/DisplayDV/63/7108/Display.htm
[17] http://en.wikipedia.org/wiki/Gradient
PHỤ LỤC
PHIẾU ĐÁNH GIÁ CHẤT LƯỢNG TÁCH BIÊN
vNội dung phiếu đánh giá
Họ tên người đánh giá: …………………………………… Giới tính: ……………...
Nghề nghiệp: …………………...... Nơi làm việc: …………….…………………….
- Giới thiệu
Nhằm kiểm tra kết quả “Thực thi và đánh giá thuật toán tách biên ảnh trên FPGA”.Phiếu đánh giá này sẽ mô tả quá trình đánh giá một cách chủ quan kết quả thực hiện được thông qua những bức ảnh ngõ ra.
Rất mong được sự đánh giá của Thầy cô, cùng các bạn để có cái nhìn đầy đủ hơn về đề tài, cũng như rút ra được nhiều điều bổ ích cho việc hoàn thiện đề tài.
- Nội dung phiếu đánh giá
2.1. Tiêu chí đánh giá
+ Mức độ tách biên: tiêu chí này được hiểu là số lượng các biên của các bức ảnh được tách ra (một phần, nhiều phần, hay toàn bộ biên của bức ảnh được tách ra, …).
+ Độ rõ của bức ảnh sau khi tách biên so với ảnh gốc ban đầu (có nghĩa là sau khi tách biên ảnh có bị nhoè, mờ so với ảnh gốc hay không).
2.2. Nội dung đánh giá
Thực hiện đánh giá kết quả thực hiện đề tài “Edge detection” bằng phần mềm và phần cứng thông qua 2 bộ lọc là Sobel và Prewitt.
+ Phần 1: Đánh giá với IP core là bộ lọc Sobel
+ Phần 2: Đánh giá với IP core là bộ lọc Prewitt
2.3. Cách làm đánh giá
Dựa vào 2 tiêu chí được nêu ra ở trên, Thầy cô và các bạn hãy dựa vào bức ảnh ngõ ra (được nêu ra ở dưới) để làm cơ sở đánh giá.
Cách làm đánh giá: