www.ngohaibac.net
1
ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA ĐIỆN – BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG
THIẾT KẾ HỆ THỐNG XỬ LÝ ẢNH SỐ TRÊN
N
ỀN FPGA
Nhóm sinh viên thực hiện:
Ngô Hải Bắc
Đỗ Trung Hiếu
Lớp Điều khiển tự động 1 – K48
Giáo viên hướng dẫn:
Ts. Lưu Hồng Việt
HÀ NỘI - 2008
www.ngohaibac.net
2
Lời cảm ơn
Trước hết, chúng em xin gửi lời cảm ơn sâu sắc đến thầy giáo TS. Lưu
Hồng Việt, người đã giúp đỡ rất nhiều về định hướng nghiên cứu, thiết bị thí
nghi
ệm phục vụ cho nghiên cứu.
Chúng em xin chân thành c
ảm ơn các thầy cô giáo đã giảng dạy chúng
em, đặc biệt là các thầy cô giáo trong Bộ môn Điều khiển tự động – Khoa
Điện, TS. Phạm Ngọc Nam – Phó Trưởng bộ môn Điện tử - Tin học – Khoa
Điện tử Viễn Thông – Trường Đại học Bách Khoa Hà Nội đã tạo điều kiện
giúp đỡ chúng em hoàn thành đồ án tốt nghiệp này.
Xin chân thành c
ảm ơn Dave Vanden Bout, kĩ sư của công ty XESS
Corporation đã trả lời tận tình những thắc mắc của chúng em về KIT XSA-
3S1000 và XST-3.0.
Mainboard, laptop ......................................................................................................................... 29
Phần 2 : Khái quát về FPGA và mạch phát triển XST 3S1000 của XESS...................................... 31
2.1. Giới thiệu chung về FPGA và ngôn ngữ VHDL .............................................................. 31
2.1.1. Khái niệm và ứng dụng FPGA .................................................................................... 31
2.1.2. Kiến trúc FPGA............................................................................................................... 32
2.1.2.1. Kiến trúc chung FPGA .......................................................................................... 32
Configurable Logic Blocks (CLBs)...................................................................................... 33
Configurable I/O Blocks ....................................................................................................... 34
Programmable Interconnect................................................................................................. 34
Mạch đồng hồ (Clock Circuitry )......................................................................................... 35
2.1.2.2. So sánh giữa cấu trúc nhỏ và cấu trúc lớn ......................................................... 36
2.1.2.3. So sánh giữa SDRAM Programming và Anti-fuse programming ................ 36
2.1.2.4. Cấu trúc FPGA của Spartan 3............................................................................... 37
2.1.3. Trình tự thiết kế một chip ............................................................................................ 38
www.ngohaibac.net
4
Ghi các đặc điểm kĩ thuật ..................................................................................................... 39
Chọn công nghệ...................................................................................................................... 40
Chọn một hướng tiếp cận thiết kế ...................................................................................... 40
Chọn công cụ tổng hợp ......................................................................................................... 40
Thiết kế chip ........................................................................................................................... 41
Mô phỏng – cái nhìn tổng quan về thiết kế ...................................................................... 41
Tổng hợp.................................................................................................................................. 41
Place and Route ...................................................................................................................... 41
Mô phỏng lại – tổng quan cuối cùng.................................................................................. 42
Kiểm tra.................................................................................................................................... 42
2.1.4. Ngôn ngữ mô tả phần cứng VHDL............................................................................. 42
Trình tự thiết kế một chíp dựa trên VHDL........................................................................... 43
2.2. Giới thiệu mạch phát triển XST 3S 1000 của hãng XESS................................................ 44
2.2.1. XSA-3S1000...................................................................................................................... 45
3.3. Thiết kế giao diện điều khiển hệ thống............................................................................. 76
Chức năng .................................................................................................................................... 77
3.4. Mô phỏng và kết quả............................................................................................................. 77
Phương án mô phỏng ..................................................................................................................... 77
Kết quả.............................................................................................................................................. 78
Kết luận .................................................................................................................................................... 79
Tài liệu tham khảo ................................................................................................................................. 82
www.ngohaibac.net
6
Danh mục các hình vẽ trong đồ án tốt nghiệp
Hình 1.1 Một tay máy thực hiện gắp đối tượng với sự trợ giúp của hệ thống thị giác
máy tính
Hình 1.2 Các bước cơ bản của xử lý ảnh số.
Hình 1.3 Những kiểu liên kết giữa các điểm ảnh.
Hình 1.4 Những kiểu đường liên kết giữa các điểm ảnh.
Hình 1.5 Kết quả của phép lọc Gaussian với cửa sổ 3x3.
Hình 1.6 Kết quả thuật toán dò biên.
Hình 1.7 Phân ngưỡng theo lược đồ xám.
Hình 1.8 Loại bỏ nhiễu và khôi phục đối tượng bằng quá trình làm mảnh-làm đầy.
Hình 1.9 Sơ đồ thuật toán gán nhãn đối tượng.
Hình 2.1 Kiến trúc chung của FPGA.
Hình 2.2 Một Logic Block điển hình.
Hình 2.3 Configurable Logic Blocks.
Hình 2.4 Programmable Interconnect.
Hình 2.5 Cấu trúc các thành phần của Spartan 3A.
Hình 2.6 Design Flow.
Hình 2.7 Qui trình thiết kế chip dựa trên VHDL.
Hình 2.8 KIT XSA-3S1000.
Hình 2.9 Sơ đồ cấu trúc của XSA-3S1000.
Hình 2.10 XST-3.0 Board.
www.ngohaibac.net
8
Mở đầu
Thị giác máy là một lĩnh vực đã và đang rất phát triển. Khái niệm thị giác
máy – Computer vision có liên quan t
ới nhiều ngành học và hướng nghiên
c
ứu khác nhau. Từ những năm 1970 khi mà năng lực tính toán của máy tính
ngày càng tr
ở nên mạnh mẽ hơn, các máy tính lúc này có thể xử lý được
nh
ững tập dữ liệu lớn như các hình ảnh, các đoạn phim thì khái niệm và kỹ
thuật về thị giác máy ngày càng được nhắc đến và nghiên cứu nhiều hơn cho
tới ngày nay.
Th
ị giác máy bao gồm lý thuyết và các kỹ thuật liên quan nhằm mục đích
tạo ra một hệ thống nhân tạo có thể tiếp nhận thông tin từ các hình ảnh thu
được hoặc các tập dữ liệu đa chiều.
Ngày nay,
ứng dụng của thị giác máy đã trở nên rất rộng lớn và đa dạng,
len l
ỏi vào mọi lĩnh vực từ quân sự, khoa học, vũ trụ, cho đến y học, sản xuất,
và t
ự động hóa tòa nhà.
M
ục đích của đồ án này là nghiên cứu các khái niệm cơ bản của Thị giác
máy tính và x
ử lý ảnh số. Đồng thời trên cơ sở đó, chúng em xây dựng một
h
ệ thống cảm biến thị giác trên nền phần cứng vi mạch khả trình FPGA. Cảm
Và cu
ối cùng, chúng em tổng kết những kết quả đạt được, những ưu
điểm, nhược điể
m của giải pháp, hiệu quả của giải pháp và những hướng
phát tri
ển.
www.ngohaibac.net
10
Phần 1 : Cơ sở lý thuyết xử lý ảnh số
1.1. Khái quát về hệ thống Thị giác máy tính và Cảm biến thị giác
Theo định nghĩa từ [1] : Hệ thống thị giác - bao gồm cả thị giác máy
(machine vision) và th
ị giác máy tính (computer vision)- là những hệ thống
ti
ếp nhận thông tin từ các cảm biến thị giác (vision sensor) với mục đích cho
phép máy móc đư
a ra những quyết định thông minh.
Th
ị giác máy tính là một ngành khoa học mới phát triển. Mặc dù đã có
nh
ững ứng dụng của xử lý ảnh số trong những thập niên đầu của thế kỉ XX
vào m
ột số lĩnh vực, nhưng phải đến những năm 1970, những nghiên cứu về
lĩnh vực này mới được bắt đầu khi máy tính đã có thể quản lý các quá trình
x
ử lý một lượng lớn dữ liệu như các ảnh số.
L
ĩnh vực nghiên cứu của thị giác máy rất rộng, và đặc điểm chung là các
bài toán v
ề thị giác máy tính đều không có một đề bài chung và cách giải duy
T
ương tác (đóng vai trò làm đầu vào cho thiết bị trong quá trình tương
tác gi
ữa người và máy).
Nh
ận dạng
Quân s
ự.
Trong l
ĩnh vực điều khiển tiến trình, thị giác máy tính đóng vai trò đặc
bi
ệt quan trọng như một cảm biến vị trí cho robot công nghiệp hoặc xe tự
hành.
Trong h
ệ thống máy CNC, hoặc các dây chuyền công nghệ, các cảm biến
th
ị giác thu thập dữ liệu ảnh về đối tượng công nghiệp, xử lý và tách đối
tượng ra khỏi ảnh. Sau khi tách đối tượng, hệ thống thị giác máy tính toán
các đặc trưng của đối tượng, như vị trí, hướng, để giúp cánh tay máy của
robot công nghi
ệp thao tác chính xác việc gắp hoặc gia công đối tượng.
V
ới những hệ thống thị giác được tích hợp các camera có độ phân giải lớn,
được lập trình chính xác, có thể điều khiển tay máy để thao tác với những vi
m
ạch nhỏ đòi hỏi độ chính xác gần như tuyệt đối.
www.ngohaibac.net
12
Hình 1.1: Một tay máy thực hiện gắp đối tượng với sự trợ giúp của hệ thống thị giác
máy tính
ử lý thống nhất những thông tin về quá trình và đối tượng công nghiệp.
Trong l
ĩnh vực tự động hóa tòa nhà, hệ thống thị giác máy cũng đóng một
vai trò ngày càng quan tr
ọng.
www.ngohaibac.net
13
Với sự phát triển của các thuật toán xử lý dữ liệu ảnh, ứng dụng các thành
t
ựu mới nhất của công nghệ xử lý và trí tuệ nhân tạo, các cảm biến thị giác
ngày nay có th
ẻ thực hiện những chức năng thông minh như đếm số người
trong phòng, nh
ận dạng đối tượng chuyển động, nhận dạng khuôn mặt, cảnh
báo s
ự kiện, nhận dạng vân tay....
Các hãng nh
ư ALTALS và SELTEC, đã cho ra đời những máy đếm số
ngườ
i, dựa trên chuỗi hình ảnh. Bằng cách quan sát sự di chuyển của dòng
người và số người , hệ thống thị giác máy sẽ tính toán tốc độ và mật độ dòng
người di chuyển. Bài toán này được ứng dụng nhiều trong những khu công
c
ộng như nhà ga, tàu điện ngầm để kiểm soát lưu lượng người ra vào nhằm
đưa ra những quyết định điều hành chính xác.[2]
H
ệ thống thị giác máy còn được ứng dụng rộng rãi trong việc nhận dạng,
chu
ẩn đoán y học, quân sự ( xác định vị trí đối phương) và vũ trụ...
Xu th
www.ngohaibac.net
14
Hệ thống xử lý ảnh số bao gồm một phạm vi rộng các kiến thức về phần
c
ứng, phần mềm và cơ sở lý thuyết.
Các bước cơ bản của xử lý ảnh số được mô tả trong sơ đồ dưới đây:
Xử lý và
nhận dạng
Biểu diễn
Tiền xử lý
Thu nhận
ảnh
Phân vùng,
phân ngưỡng
Cơ sở kiến thức
Hình 1.2 : Các bước cơ bản của xử lý ảnh số
Thu thập ảnh(image acquision) : Ảnh số được thu thập bằng một cảm
bi
ến ảnh có khả năng biến thông tin về cường độ sáng và mức xám của ảnh
th
ực thành tín hiệu điện áp dưới dạng analog. Tín hiệu này sau đó được số
hóa để
trở thành tín hiệu số.
Hi
ện nay có một số cảm biến ảnh thực hiện cả việc thu nhận tín hiệu về
cường độ
sáng của ảnh và số hóa tín hiệu. Trong trường hợp cảm biến không
có ch
ức năng số hóa thì cần phải có một bộ biến đổi ảnh tương tự thành ảnh
s
phân biệt, sẽ được phân tích để phục vụ những mục đích khác nhau như:
Xác định các đặc trưng h
ình học của đối tượng: dựa trên cơ sở đối tượng
đã được xác định và phân biệt, ta có thể thực hiện xác định các đặc trưng
hình học của mỗi đối tượng đấy, như : vị trí, kích thước, hướng, ... và số đối
tượng hay mật độ đối tượng trong ảnh. Đây là các đặc trưng được dùng
nhi
ều trong hệ thống thị giác máy (machine vision)
Nhận dạng : các đối tượng có thể là các vật thể có hình dạng nhất định,
ho
ặc các kí tự số, chữ cái, dấu vân tay...Ảnh sau khi được phân vùng có thể
đượ
c nhận dạng theo những phương pháp nhất định như phương pháp
neural, để
tìm ra mẫu hình dạng mà đối tượng đó thuộc về.
Để hướng dẫn hoạt động của từng module xử lý, cần có một hệ cơ sở kiến
th
ức để kiểm tra hoạt động và tương tác giữa các module. Hệ này có nhiệm
v
ụ kiểm soát hoạt động của từng module và sắp xếp trình tự hoạt động của
chúng trong t
ừng thời điểm, giải quyết bài toán xung đột.
www.ngohaibac.net
16
1.3. Các thành phần của hệ thống xử lý ảnh:
1.3.1. Thành phần thu thập ảnh, Camera và vấn đề định dạng ảnh.
Giới thiệu chung về camera : Trong hệ thống xử lý ảnh số, camera là một
thi
ết bị rất quan trọng có chức năng quan sát và thu nhận ảnh đầu vào của
h
(256x256 điểm ảnh) cho đến cao (640x480 ) hoặc cao hơn nữa là 1280x1024
điểm ảnh.
Trong đề tài này, chúng em sử dụng loại camera AVC 301D của hãng
AVTech, đây là một loại camera quan sát cho ảnh xám, sử dụng sensor có độ
phân giải tương đối lớn (510x482 điểm ảnh), cho ra tín hiệu ảnh dạng tương
tự và cần phải được số hóa trước khi đi vào quá trình xử lý. Tín hiệu ảnh
www.ngohaibac.net
17
tương tự được số hóa thành ảnh số bởi bộ video decoder TVP5150 theo chuẩn
ITU-R-BT 601.
M
ỗi frame ảnh thu về được biểu diễn dưới dạng I(x,y) trong đó x,y là tọa
độ của pixel trên frame và I là mức xám tương ứng của pixel đó.
Như vậ
y 1 frame ảnh thu được sẽ được biểu diễn dưới dạng một ma trận
2 chi
ều n x m với n là số pixel trên 1 hàng, m là số hàng trong 1 frame. Trong
đồ án này, ảnh thu được từ camera có kích thước 510x482, tuy nhiên sau quá
trình s
ố hóa theo chuẩn ITU 601 ta có ảnh số 8bit với kích thước chuẩn là
720x525.
1.3.2. Thành phần xử lý ảnh
1.3.2.1. Các khái niệm cơ bản của xử lý ảnh số
Pixel và các lân cận : Như đã biết, mỗi frame ảnh được mô tả dưới dạng
ma tr
ận 2 chiều, trong đó mỗi phần tử của ma trận tương ứng với mức xám
c
ủa 1 điểm ảnh (pixel). Mỗi điểm ảnh này có các lân cận xung quanh. Nếu
hi
ển thị mỗi pixel dưới dạng một ô vuông, mỗi điểm có chung biên với 4
liên k
ết 4 hoặc 8 với nhau
a) Liên kết 4 b) Liên kết 8
Hình 1.4 : Những kiểu đường liên kết giữa các điểm ảnh.
Có thể dễ dàng nhận thấy, nếu có một đường liên kết giữa 2 điểm
,
[ ]
a a
i j
,
,
[ ]
b b
i j
, và giữa 2 điểm
,
[ ]
a a
i j
,
,
[ ]
c c
i j
thì cũng sẽ có đường liên kết giữa 2
điểm
[ ]
b b
i j
Tuy nhiên thường dùng nhất là các toán tử có dạng hình vuông với các cạnh
là m
ột số lẻ, ví dụ :3x3, 5x5, 7x7...
Trong đồ án này, chúng em sử dụng thường xuyên toán tử cửa sổ có dạng
3x3, vì
đây là kích thước hợp lý để thực hiện hiệu quả tất cả các thuật toán xử
lý cơ bản và nâng cao, đồng thời lại dễ thực hiện và rút ngắn tối đa quá trình
x
ử lý. Nếu sử dụng cửa sổ 5x5 và 7x7, thời gian xử lý sẽ tăng lên rất nhiều.
Tăng độ tương phản : Ảnh sau khi thu được từ camera, có thể do sự
tương phả
n ảnh sáng kém, dẫn đến độ chói quá cao, khó phân biệt. Để cải
thi
ện ảnh, hỗ trợ các quá trình xử lý cao hơn, ta sử dụng các phương pháp
hiệu chỉnh: hiệu chỉnh min-max, hiệu chỉnh histogram, hiệu chỉnh Gamma, ...
Ở đây ta sử dụng phương pháp hiệu chỉnh min-max vì nó dãn đều mức
xám c
ủa ảnh trong dải cho phép (không ảnh hưởng đến mức xám chung).
Công th
ức để nâng cấp ảnh theo hiệu chỉnh min-max:
min
max min
.256
old
new
I I
I
I I
ằ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 :
1
1
1 1
( , ) ( , ). ( , )
j
i
n i m j
I i j c n m I n m
(1.1).
K
ết quả tính được cho ra giá trị mới của pixel trung tâm.
Trong (1.1), c(n,m) là các ph
ần tử của một ma trận gọi là mặt nạ (mask).
M
ỗi thuật toán xử lý khác nhau sử dụng một mặt nạ khác nhau để tính giá trị
của các điểm ảnh.
Lọc tuyến tính, dò biên: Đây là 2 thuật toán cơ sở sử dụng phép nhân
ch
ập.
Nếu ảnh có nhiễu Gaussian, ta sử dụng mặt nạ
www.ngohaibac.net
21
11 12 13
21 22 23
31 32 33
1 2 1
1
2 4 2
16
1 1 1
c c c
c c c c
c c c
a) Trước khi lọc b)Sau khi lọc
Hình 1.5 : Kết quả của phép lọc Gaussian với cửa sổ 3x3
Dò biên : Biên của một đối tượng được xác định ở nơi mức xám của các
pixel có s
ự thay đổi đột ngột. Có nhiều cách xác định biên, như dò biên theo
gradient, dò biên b
ằng cách lấy đạo hàm bậc 2 của mức xám theo tọa độ
pixel. Hầu hết các thuật toán dò biên sử dụng nhân chập, dù không phải là
t
31 32 33
0 1 0
1 4 1
0 1 0
c c c
c c c c
c c c
cho liên kết 4a) Ảnh gốc b) Kết quả dò biên
Hình 1.6 : Kết quả thuật toán dò biên
Phân ngưỡng, phân vùng và nhị phân hóa ảnh số: Ảnh sau quá trình tiền
x
ử lý, nâng cấp, để tới những quá trình xử lý cao hơn cần được nhị phân hóa,
phân vùng thành các đối tượng riêng biệt.
Tìm ngưỡng : đây là quá trình tìm ra ngưỡng của một ảnh để thực hiện
vi
ệc phân vùng. Ngưỡng đóng vai trò quyết định quá trình nhị phân hóa ảnh
s
ố có hiệu quả hay không. Nếu chọn ngưỡng không tốt, sẽ bỏ qua một số đối
tượng, hoặc cho đối tượng với kích thước, vị trí không đúng, hoặc tệ hơn là
làm các đối tượ
ng không phân biệt được với nhau.
,
- mức xám trung bình, giá trị ngưỡng và số gia hiệu chỉnh.
Tìm ng
ưỡng theo histogram: là phương pháp tìm ngưỡng dựa theo lược
đồ xám.
Hình 1.7 : Phân ngưỡng theo lược đồ xám
Ngưỡng tìm được theo công thức:
ng
I
=(
max1
I
+
max2
I
)/2. Trong đó
max1
I
và
max2
I
là 2 mức xám tương ứng cực đại trên histogram.
Phân vùng và nhị phân hóa ảnh số: sau khi tìm ngưỡng, ta có thể nhị
phân hóa ảnh số và tách các đối tượng. Trong ảnh xám ban đầu, ta coi đối
tượng là những vùng ảnh có mức xám thấp, nền là vùng ảnh có mức xám
cao. Ta có th
ể tách đối tượng ra bằng thuật toán phân ngưỡng:
www.ngohaibac.net
24
nh
ỏ, đồng thời làm nhỏ bớt đối tượng, tách các đối tượng gần nhau ra. Để
khôi phục đối tượng trở lại như cũ, ta dùng thuật toán làm đầy. Sau quá trình
này các nhi
ễu đã bị loại bỏ sẽ không xuất hiện trở lại. Có thể loại bỏ hẳn các
nhi
ễu tương đối lớn bằng cách thực hiện nhiều lần thuật toán làm mảnh và
làm đầy. Tuy nhiên sau đó hình dạng đối tượng không được khôi phục hoàn
toàn như trước.
www.ngohaibac.net
25
Hình 1.8 : Loại bỏ nhiễu và khôi phục đối tượng bằng quá trình làm mảnh-làm đầy.
Bài toán đánh nhãn đối tượng: với phương pháp xử lý đồng cấu ảnh nhị
phân, ta đ
ã được 1 ảnh nhị phân với các đối tượng được tách ra rõ rệt, và loại
b
ỏ được các nhiễu. Để thực hiện việc xác định các đặc trưng hình học của đối
tượng, phục vụ cho hệ thống định vị và nhận dạng, cần phải phân biệt các
đối tượng (các vùng ảnh đen) với nhau bằng cách gán cho chúng các nhãn
khác nhau.
Thu
ật toán gán nhãn đối tượng cũng sử dụng một cửa sổ 3x3 chạy khắp
frame. Pixel trung tâm s
ẽ được kiểm tra để gán nhãn, và các pixel lân cận
được dùng để xác định nhãn mới cho pixel trung tâm. Thuật toán thực hiện
như sau: