Tải bản đầy đủ (.docx) (59 trang)

Thực thi và đánh giá thuật toán tách biên ảnh trên FPGA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.79 MB, 59 trang )

LỜ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ẵng
Nhó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ọc
Bá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ọc
Bá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ực
hiệ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ản sao chép của bất cứ đồ án hoặc công trình đã có từ trước.
Đà Nẵng, ngày 19 tháng 5 năm 2014
Sinh viên
Trần Nhật Tin
Lê Thanh Lâm


MỤC LỤC

MỤC LỤC




DANH MỤC HÌNH VẼ

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


DANH MỤC HÌNH VẼ
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

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

DANH MỤC CÁC TỪ VIẾT TẮT
ASIC

A
Application Specific Intergrated Circuit

EDK

C
Complex Programable Logic Devices
D
Digital Signal Processing
Dual In-line Memory Module
E

Embedded Development Kit

FPGA

Field Programable Gate Array

CPLD
DSP
DIMM

Vi mạch tích hợp thực hiện chức năng
chuyên dụng
Vi mạch phức tạp lập trình được
Xử lý tín hiệu số
Ram sử dụng module bộ nhớ kênh đôi
Là công cụ để xây dựng hệ thống có
các vi xử lý nhúng trong FPGA

F
Mảng cổng logic lập trình được
I
IP

Intellectual Property

JTAG

Join Test Action Group

LUT


Look Up Table

Là một sản phẩm trong thiết kế vi
mạch bao gồm Soft IP và Hard IP
J
Công cụ truyền nhận dữ liệu, debug và
test hệ thống
L
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

PAL

Programable Array Logic

Một chuẩn giao diện dùng để kết nối
Fast Ethernet
P
Mảng logic lập trình được
R

RAM
ROM


Random Acess Memory
Read Only Memory

SRAM

Stactic Random Access Memory

Bộ nhớ truy cập ngẫu nhiên
Bộ nhớ chỉ có thể đọc
S
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


DANH MỤC CÁC TỪ VIẾT TẮT



LỜI MỞ ĐẦU

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:
 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 Matlab
Simulink 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á

Bảng phân công nhiệm vụ:
THÀNH VIÊN

TRẦN NHẬT TIN

NHIỆM VỤ
- 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ỜI MỞ ĐẦU

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 tôi xin chân thành cảm ơn!
Đà Nẵng, ngày 19 tháng 5 năm 2014
Sinh viên
Trần Nhật Tin
Lê Thanh Lâm


CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN

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.
Trang 10


CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN

• Độ 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.

Trang 11


CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊ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:

I (i, j) =

i +1

j +1

∑∑

c(n, m).I(n, m)

(1.1)

n = i m = j −1

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.

Trang 12



CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN

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ổ

1
1
H=
1
9

1

1
1
1

1
1

1



Nếu ảnh có nhiễu Gaussian, ta sử dụng mặt nạ

1 2 1 
1 
H=
2 4 2


16


1
1
1


Kết quả thực hiện bộ lọc trung bình được mô tả như hình 1.5

Trang 13


CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN

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

0
1 

H=
1
8 

0

1
2
1

0
1

0


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:

 0 −1 0 

H= 

1
5

1





0

1
0


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.

Trang 14


CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN

+ Đườ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.

∂f (x, y)
f (x + dx, y) − f (x, y)
= f x' ≈
∂x
dx


(1.2)

∂f (x, y)
f (x, y + dy) − f (x, y)
= f y' ≈
∂y
dy

(1.3)

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ó:

I x (m, n) = I (m +1, n) − I (m, n)

I y (m, n) = I (m, n +1) − I (m, n)

(1.4)



r
r
∇ I (m,n) = [ I (m+ 1,n) − I (m,n)] ix + [ I (m,n + 1) − I (m, n)] iy

(1.5)




| ∇ I (m,n) |= | I (m + 1,n) − I (m,n) | + | I (m,n + 1) − I (m,n) |

(1.6)

Với I (m, n) là giá trị ngõ vào, | ∇ I (m, n) | là giá trị ngõ ra.
Trang 15


CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN

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.

 − 1 0 + 1
 + 1 + 2 + 1
Gx =  − 2 0 + 2  ; G y =  0 0 0 
 − 1 0 + 1
 − 1 − 2 − 1
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.

 − 1 0 + 1
 + 1 + 1 + 1

Gx =  − 1 0 + 1 ; Gy =  0 0 0 
 − 1 0 + 1
 − 1 − 1 − 1
Kết quả thực hiện tách biên ảnh bộ lọc Prewitt được mô tả như hình 1.8

Trang 16


CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH SỐ VÀ BÀI TOÁN TÁCH BIÊN

Hình 1.8: Ảnh trước và sau khi tách biên dùng bộ lọc Prewitt
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.
1.5.

Trang 17


CHƯƠ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 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


Trang 18


CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB
SIMULINK VÀ XILINX SYSTEM GENERATOR

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
Trang 19


CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB
SIMULINK VÀ XILINX SYSTEM GENERATOR

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.
Trang 20


CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB
SIMULINK VÀ XILINX SYSTEM GENERATOR

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
Trang 21


CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB
SIMULINK VÀ XILINX SYSTEM GENERATOR

ứ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ự
Trang 22


CHƯƠNG 2: GIỚI THIỆU VỀ KIT FPGA VIRTEX-5, PHẦN MỀM MATLAB
SIMULINK VÀ XILINX SYSTEM GENERATOR

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.

Trang 23


CHƯƠ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ê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ế

Trang 24


CHƯƠNG 3: XÂY DỰNG HỆ THỐNG TÁCH BIÊN ẢNH TRÊN FPGA

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.
Trang 25


×