You are on page 1of 31

NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

MỤC LỤC
Lời nói đầu……………………………………………………………….……….…2
Phần một:LÝ THUYẾT XỬ LÝ ẢNH……………………………….……………..3
Chương 1:Giới thiệu hệ thống xử lý ảnh……………………………………………3
Chương 2:Thu nhận ảnh…………………………………………………………….4
Chương 3:Phân tích ảnh………………………………………..….……….…....….6
Chương 4:Nhận dạng ảnh ……………………………………………………...…..21
Phần hai:THỰC NGHIỆM…………………………………………………………24
Kết luận…………………………………………………………………………….30
Tài liệu tham khảo………………………………………………………………….30

1
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

LỜI MỞ ĐẦU
Trong mấy thập kỷ gần đây xử lý ảnh được nghiên cứu mạnh mẽ và có nhiều ứng dụng thực tế. Như
trong y học xử lý ảnh được dùng để phát hiện và nhận dạng khối u, cải thiện ảnh X quang, nhận dạng
đường biên mạch máu từ ảnh chụp bằng tia X. Trong truyền thông và trong nghiên cứu vũ trụ xử lý ảnh
được dùng để phân tích ảnh của những hành tinh , thiên hà thu được từ tàu vũ trụ hay kính thiên văn.
Đặc biệt trong Robot ngày nay không thể thiếu yếu tố xử lý ảnh , nhờ xử lý ảnh robot có thể phát hiện và
nhận dạng đối tượng ngoài môi trường . Từ đó giải quyết các bài toán tránh vật cản ,tìm đường, nhận
dạng đối tượng …
Quá trính xử lý ảnh được chia làm 3 bước chính sau đây: thu nhận ảnh , phân tích ảnh và quyết định.
Nội dung của đồ án :Nhận dạng các chữ số qua camera kết nối với máy tính. Có thể tóm tắt nội dung
đồ án qua lược đồ cơ bản sau đây:

Thu thập ảnh Ảnh đầu vào nguyên gốc Xử lý mức xám

Nhận dạng ký
Xử lý kết quả Trích lấy biên ảnh
tự

Giới hạn thiết kế đồ án :Do xử lý ảnh là một lĩnh vực mới và khó, không có nhiều tài liệu trong
nước tham khảo nên chúng em thiết kế đồ án này chỉ gồm 1 webcam kết nối máy tính thông qua toolbox
xử lý ảnh của Matlab để thực hiện.
Mục đích của đồ án:Tìm hiểu về quá trình xử lý ảnh từ quá trình thu thập ảnh , lọc nhiễu , phân đoạn
ảnh , tách biên , đến quá trình nhận dạng ảnh . Sản phẩm của đồ án trước hết được ứng dụng vào mục
đích nghiên cứu và giảng dạy tại trường , nếu được nghiên cứu và đi sâu có thể được ứng dụng vào thực
tế như hệ thống nhận dạng số chứng minh thư nhân dân , biển số xe …

2
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

PHẦN MỘT:LÝ THUYẾT XỬ LÝ ẢNH


CHƯƠNG MỘT:GIỚI THIỆU HỆ THỐNG XỬ LÝ ẢNH

Một hệ thống xử lý ảnh cơ bản bao gồm ba bước chính : thu thập ảnh , phân tích và xử lý ảnh , xử lý
kết quả , có thể tóm tắt bằng sơ đồ cơ bản sau :

Thiết bị thu nhận ảnh


Ảnh thu nhận được Số hóa
(camera , sensor )

Xử lý kết quả và Nhận Phân tích ảnh ( lọc nhiễu ,


đưa ra quyết định dạng phân đoạn ảnh , trích biên)

1.1 Thu nhận ảnh:


Việc thu nhận ảnh có thể thông qua camera . Camera có thể là loại tương tự hoặc là loại số . Nếu ảnh
thu được là loại tương tự thì nó phải được lấy mẫu và lượng tử hóa trước khi phân tích , xử lý .
1.2 Phân tích ảnh:
Ở giai đoạn này ảnh được xử lý qua nhiều công đoạn nhỏ như lọc nhiễu , cải thiện ảnh , khôi phục
ảnh để làm nổi một số đặc tính chính của ảnh hay làm cho ảnh gần với ảnh gốc , tiếp theo là phát hiện
các đặc tính biên cạnh góc ,phân vùng.
1.3 Nhận dạng ảnh:
Nhận dạng là quá trình xác định ảnh . Quá trình này thường được xác định bằng việc so sánh với
mẫu có từ trước . Theo lý thuyết về nhận dạng ảnh có hai loại nhân dạng sau:
-Nhận dạng theo tham số.
-Nhận dạng theo cấu trúc.
Một số đối tượng nhận dạng khá phổ biến hiện nay được áp dụng trong khoa học và công nghệ là :
nhận dạng ký tự , nhận dạng vân tay , nhận dạng văn bản , nhận dạng mặt người …

3
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

CHƯƠNG HAI: THU NHẬN ẢNH


2.1 Thiết bị thu nhận ảnh:
Chức năng của thiết bị này là số hóa một băng tần số cơ bản của tín hiệu của tín hiệu vào từ một
camera hay một đầu máy thu tín hiệu ảnh .
Ảnh thu được có thể là một ảnh đen trắng hoặc ảnh màu , ảnh thu được thường là loại tương tự cũng
có loại camera đã được số hóa là loại photodiot tạo cường độ sáng tại mỗi điểm ảnh.
Chất lượng ảnh thu được phụ thuộc vào chất lượng thiết bị thu và môi trường (ánh sáng ,phong
cảnh).
2.2 Hệ tọa độ màu:
Tổ chức quốc tế về chuẩn hóa CIE đưa ra một số các chuẩn để biểu diễn màu . Các hệ này có các
chuẩn riêng ở đây đề cập hệ tọa độ màu CIE-RGB ( hệ tọa độ dùng 3 màu cơ bản là red , green , blue )
mỗi pixel Px được viết:

 r e d
g r e e n
 
Px =

 b l u e
Người ta dùng hệ tọa độ 3 màu R-G-B (tương ứng với 3 trục tọa độ x,y,z) để biểu diễn màu như sau:

Blue(lơ)

(0,0,1) lơ (0,0,1) tím xanh

tím (1,0,1) (1,1,1) vàng đậm


(0,0,0) đen (0,1,0) lục Green (lục)

(1,0,0) đỏ (1,1,0) vàng

Red(đỏ)
Trong cách biểu diễn trên đỏ +lục + lơ =1 , công thức này gọi là công thức Maxell , trong hình vẽ
trên tam giác tạo bởi ba đường đứt đoạn là tam giác Maxell.
2.3 Lấy mẫu và lượng tử hóa:

4
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

2.3.1 Lấy mẫu:


Lấy mẫu là một quá trình trong đó ảnh được tạo nên bởi một vùng liên tục được chuyển thành các
giá trị rời rạc nguyên . Quá trình này gồm 2 bước là:
-Khoảng lấy mẫu.
-Cách thể hiện dạng lấy mẫu.
Khoảng lấy mẫu càng nhỏ thì ảnh thu được càng giống với ảnh nguyên gốc .
Dạng lấy mẫu là cách bài trí các điểm lấy mẫu trong không gian 2 chiều . Một số dạng lấy mẫu điểm
ảnh được cho là dạng tam giác , chữ nhật , lục giác.
2.3.2 Lượng tử hóa:
Lượng tử hóa là ánh xạ từ các số thực mô tả giá trị lấy mẫu thành dải các số thực , nói cách khác là
quá trình số hóa biên độ.
2.4 Biểu diễn ảnh:
Ảnh thường được biểu diễn bằng một số phương pháp sau đây:
- Biểu diễn mã loạt dài (Run length code) .
- Biểu diễn mã xích ( Chain code ).
- Biểu diễn mã tứ phân (Quad tree code ).
2.4.1 Biểu diễn mã loạt dài:
Thường dùng biểu diễn ảnh nhị phân , một vùng ảnh R có thể biểu diễn đơn giản nhờ một ma trận
nhị phân :
u(m,n) = 1 nếu (m,n) ∈ R
0 nếu khác

2.4.2 Biểu diễn mã xích:


Thường biểu diễn biên của ảnh . Thay vì lưu trữ toàn bộ người ta lưu trữ các dãy điểm ảnh A, B,
….M .
2.4.3 Biểu diễn mã tứ phân:
Theo phương pháp này một vùng ảnh coi như bao kín một hình chữ nhật . Vùng này được chia làm 4
vùng con nếu một vùng con này gồm toàn điểm đen (1) hoặc điểm trắng (0) thì không cần chia tiếp
ngược lại thì lại chia vùng đó ra làm 4 vùng nhỏ , cứ tiếp tục chia đến khi nào vùng đó đồng nhất chỉ
gồm điểm đen hoặc điểm trắng thì thôi . Quá trình đó tạo thành một cây chia theo 4 phần gọi là cây tứ
diện .

5
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

CHƯƠNG 3 : PHÂN TÍCH ẢNH

3.1 Khái niệm pixel và pixel lân cận :


Pixel là phần tử nhỏ nhất của ảnh cấu tạo nên ảnh . Mỗi pixel có tọa độ p(x,y) và có màu xác định.

P1(x-1,y-1) P2(x-1,y) P3(x-1,y+1)

P4(x,y-1) P(x,y) P5(x,y+1)

P6(x+1y-1) P7(x+1,y) P8(x+1,y+1)

Hình minh họa :Pixel P và các lân cận của P


Một pixel P(x,y) có 4 pixel lân cận theo chiều dọc và chiều ngang là P2(x-1,y) ; P4(x,y-1) ;
P5(x,y+1) ; P7(x+1,y); chúng ký hiệu là N4(p).
Ngoài 4 pixel này còn 4 pixel lân cận chéo góc là P1(x-1,y-1) ; P3(x-1,y+1) ; P6(x+1,y-1) ;
P8(x+1,y+1) ; chúng ký hiệu là ND(p)
Tập 8 pixel trên tạo thành lân cận của P(x,y) ký hiệu là N8(p).
3.2 Một số công cụ trợ giúp xử lý ảnh:
3.2.1 Tích chập:
Toán tử chập được định nghĩa như sau:
+ trường liên tục
∞ ∞

g(x,y) = h(x,y) ⊗ f(x,y) = ∫ ∫ h( x − x ' , y − y ' ) f ( x ' , y ' )dx ' dy '
−∞ −∞

+ trường rời rạc


∞ ∞

y(m,n) = h(m,n) ⊗ x(m,n) = ∑∑h(m − m' , n − n' ) x (m' , n' )


−∞ −∞

3.2.2 Kỹ thuật lọc số:

6
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

Chất lượng hình ảnh kém do nhiều nguyên nhân gây ra như do nhiễu điện tử của máy thu hoặc do
chất lượng bộ số hóa kém . Phần này tìm hiểu về các bộ lọc được dùng trong xử lý ảnh để khắc phục sự
nhiễu của ảnh thu được.
Có nhiều bộ lọc được thiết kế để xử lý ảnh nhiễu nhưng do giới hạn của đồ án môn học nên phần
này không được giới thiệu ở đây.
3.3 Các phép biến đổi ảnh:
- Sự biểu diễn toán học cho một ảnh thường là một hàm với hai biến không gian f(x,y) . Giá trị của
hàm tại một vị trí ( x,y ) đại diện cho cường độ của ảnh tại vị trí đó . Thuật ngữ biến đổi ( transform )
nhằm nói đến một sự biểu diễn toán học tương tự của ảnh .
3.3.1 Phép biến đổi Fourier ( phần này dịch từ matlab )
- Phép biến đổi Fourier là một biểu diễn của ảnh như là tổng của các hàm mũ phức của biên độ , tần
số và pha biến đổi . Biến đổi Fourier chiếm một vai trò quan trọng trong các ứng dụng xử lý ảnh bao
gồm : làm giàu ảnh ( hay cải thiện chất lượng ảnh – enhancement ) , phân tích , phục hồi và nén ảnh .
a - Định nghĩa phép biến đổi Fourier
- Nếu f(m,n) là một hàm với hai biến không gian độc lập m và n , thì biến đổi Fourier hai chiều của
hàm f(m,n ) được∞định∞ nghĩa bởi quan hệ :
F (ω1 , ω2 ) = ∑ ∑ f (m, n)e − jω1m e− jω2n
m =−∞ n =−∞
Biến ω1 và ω2 là các biến tần số . Hàm F (ω1 , ω2 ) được gọi là biểu diễn trong miền tần số của hàm
f(m,n) . Nó là một hàm phức tuần hoàn với chu kì 2π . Do tính tuần hoàn , nên ω1 và ω2 thường được
chọn trong khoảng - π đến π . Chú ý rằng F(0,0) là tổng của tất cả các giá trị của f(m,n) .Vì lý do này
F(0,0) thường được gọi là thành phần không đổi hoặc thành phần một chiều DC của biến đổi Fourier .
- Biến đổi Fourier ngược được cho bởi công thức :
π π
1
f ( m , n=) 2 ∫ ∫ ω 1 Fω2( jω 1 m, j 2 ωn
)e e1 2 dω ω
4π ω 1 = − π ω = − π
Nói chung , phương trình
2
này có nghĩa rằng f(m,n) có thể được đại diện như là tổng vô hạn của các
hàm mũ phức với các tần số khác nhau . Biên độ và pha của thành phần ở tần số (ω1 , ω2 ) được lưu trong
F (ω1 , ω2 )
Biểu diễn trực quan biến đổi Fourier
- Để minh hoạ , ta hãy xem hàm f(m,n) nhận giá trị
bằng 1 trong khoảng hình chữ nhật ( xem hình ) và bằng 0
tại mọi điểm khác . Để đơn giản sơ đồ f(m,n) được coi
như một hàm liên tục mặc dù m, n là các biến rời rạc.

7
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

- Hình biểu diễn sau đây biểu diễn biên độ của biến đổi Fourier | F (ω1 , ω2 ) | của hàm chữ nhật như
trên .

- Giá trị đỉnh ở tâm của đồ thị là F(0,0) , đó là tổng của tất cả các giá trị của hàm f(m,n) . Đồ thị cũng
chỉ ra rằng F (ω1 , ω2 ) có nhiều năng lượng hơn ở vùng tần số ngang so với tần số đứng . Điều này phản
ánh sự thực rằng các vùng giao ngang của hàm f(m,n) ( horizontal cross sections ) là các xung hẹp trong
khi các vùng giao đứng của hàm này là các xung rộng . Xung hẹp mang nhiều nội dung tần số hơn xung
hẹp .
Một cách khác để biểu diễn trực quan biến đổi Fourier là hiển thị hàm log | F (ω1 , ω2 ) | như một ảnh :

8
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

- Sử dụng hàm lôgarit giúp cho việc


nhận rõ đặc tính của biến đổi Fourier ở các
vùng mà giá trị F (ω1 , ω2 ) gần bằng 0 . Để minh hoạ , hãy xem biểu diễn trực quan các biến đổi Fourier
sau :

b- Biến đổi
Fourier
rời rạc
- Biến đổi
Fourier

9
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

trên máy tính là biến đổi Fourier rời rạc ( DFT ) . Có hai lý do chính để sử dụng loại biến đổi Fourier
này :
+ Hàm vào và ra của biến đổi Fourier là các hàm rời rạc , điều này thích hợp cho các thao tác biến
đổi trên máy tính .
+ Có một giải thuật nhanh cho việc tính toán DFT được gọi là biến đổi Fourier nhanh ( FFT )
- DFT thường được định nghĩa cho các hàm rời rạc f(m,n) khác 0 và m , n lần lượt nhận các giá trị
0 ≤ m ≤ M −1 , 0 ≤ n ≤ N −1

-
Matlab
sử dụng
các hàm fft
, fft2 và
fftn sử
dụng
thuật toán biến đổi Fourier nhanh cho việc tính toán DFT một chiều , hai chiều và N chiều tương ứng .
Các hàm ifft, ifft2 và ifftn tính toán DFT ngược .
Quan hệ với biến đổi Fourier
- Ta có quan hệ biểu diễn bằng công thức sau :

Ví dụ :
1. Tạo ma trận f tương tự như hàm f(m,n) chữ nhật đã xét trước đây . Hàm f(m,n) bằng 1 trong vùng
chữ nhật và bằng 0 trong vùng khác . Sử dụng một ảnh nhị phân để thay thế cho f(m,n)

10
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

f = zeros(30,30);
f(5:24,13:17) = 1;
imshow(f,'notruesize')

2. Tính toán và biểu diễn trực quan


biến đổi Fourier bởi những lệnh sau đây
:
F = fft2(f);
F2 = log(abs(F));
imshow(F2,[-1 5],'notruesize'); colormap(jet); colorbar

3 . Để thu được kết quả tốt hơn , ta sử


dụng các lệnh sau đây :
F = fft2(f,256,256);
imshow(log(abs(F)),[-1
5]); colormap(jet); colorbar

11
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

c- Các ứng dụng sử dụng phép biến đổi Fourier


Đáp ứng tần số của bộ lọc tuyến tính
- Biến đổi Fourier của đáp ứng xung của bộ lọc tuyến tính cho phép nhận được đáp ứng tần số của
bộ lọc . Hàm freqz2 tính toán và hiển thị đáp ứng tần số của một bộ lọc . Đáp ứng tần số của bộ lọc
Gauss chỉ ra rằng bộ lọc này là một bộ lọc thông thấp .
h = fspecial('gaussian');
freqz2(h)

12
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

Nhân chập nhanh


- Một tính chất quan trọng của biến đổi Fourier là nhân hai biến đổi Fourier tương ứng với nhân chập
(convolution ) của hai hàm kết hợp trong không gian . Tính chất này kết hợp với biến đổi Fourier nhanh
làm cơ sở cho giải thuật nhân chập nhanh .
Chú ý : FFT dựa trên phương pháp nhân chập thường được sử dụng với đầu vào lớn . Với các đầu
vào nhỏ , nhìn chung sử dụng hàm imfiler sẽ nhanh hơn .
- Để minh hoạ , ví dụ sau thực hiện nhân chập của A và B trong đó A là một ma trận MxN và B là
ma trận PxQ
1. Tạo ra hai ma trận
A = magic(3);
B = ones(3);
2. Thêm các giá trị 0 vào A và B để chúng có chiều ít nhất là (M+P-1)x(N+Q-1) ( chú ý rằng : hàm
fft2 sẽ nhanh hơn nếu các kích thước của A và B là luỹ thừa của 2 ) .Ví dụ sau chèn thêm các phần tử 0
để hai ma trận có kích thước 8x8
A(8,8)=0;
B(8,8)=0;
3. Tính biến đổi Fourier hai chiều của A và B sử dụng hàm fft2
4. Nhân hai biến đổi Fourier lại với nhau
5. Tính biến đổi Fourier ngược của kết quả trên bằng hàm ifft2
C = ifft2(fft2(A).*fft2(B));
6. Trích ra thành phần khác 0 của kết quả và loại bỏ phần ảo do sai số làm tròn
C = C(1:5,1:5);
C = real(C)

C=

8.0000 9.0000 15.0000 7.0000 6.0000


11.0000 17.0000 30.0000 19.0000 13.0000
15.0000 30.0000 45.0000 30.0000 15.0000
7.0000 21.0000 30.0000 23.0000 9.0000

13
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

4.0000 13.0000 15.0000 11.0000 2.000

Phát hiện chi tiết của ảnh


- Biến đổi Fourier có thể được sử dụng để thực thi tương quan – có liên hệ gần với nhân chập
( convolution ) . Tương quan có thể được sử dụng để phát hiện chi tiết trong một ảnh , trong trường hợp
này , tương quan thường được gọi là hợp mẫu ( template matching )
- Ví dụ sau minh hoạ việc sử dụng tương quan để phát hiện sự có mặt của kí tự “a” trong một ảnh có
chữ :
1. Đọc vào ảnh mẫu :
bw=imread(‘text.png’);
2. Tạo một mẫu ( template ) để làm hợp bằng cách trích kí tự “a” từ ảnh :
a=bw(32:45,88:98);
Ta có thể tạo ảnh mẫu bằng cách sử dụng phiên bản tương tác của hàm imcrop , sử dụng hàm pixval
để tính toạ độ của một chi tiết trong ảnh . Hình sau đây chỉ ra ảnh gốc và ảnh mẫu :

3. Tính toán tương quan của ảnh mẫu a với ảnh gốc bw bằng cách quay ảnh mẫu 180 độ và sau đó
dùng biến đổi Fourier nhanh trên cơ sở phép nhân chập như đã đề cập trước đây ( Nhân chập sẽ tương
đương với tương quan nếu ta quay nhân chập 180 độ ) . Để hợp với ảnh mẫu , dùng hàm fft2 và ifft2 .

C = real(ifft2(fft2(bw) .* fft2(rot90(a,2),256,256)));

14
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

Ảnh sau đây minh hoạ kết quả của tương quan . Đốm sáng trong ảnh tương ứng với sự xuất hiện của
kí tự :
figure, imshow(C,[]) % Scale image to appropriate display range.

4. Để quan sát vị trí của mẫu trong ảnh , tìm giá trị
pixel lớn nhất sau đó định nghĩa một giá trị ngưỡng nhỏ
hơn giá trị này . Vị trí của đỉnh được chỉ ra bằng một điểm trắng trong ảnh tương quan mẫu ( để xác định
chúng dễ hơn , ảnh ngưỡng đã được mở rộng kích thước điểm )
max(C(:))
ans =
68.0000
thresh = 60; % Use a threshold that's a little less than max.
figure, imshow(C > thresh)% Display showing pixels over threshold.

15
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

3.3.2 Biến đổi cô-sin rời rạc


- Biến đổi cô-sin rời rạc ( DCT ) biểu diễn một ảnh như là tổng của các hàm sin với biên độ và tần số
biến đổi . Hàm dct2 tính DCT hai chiều của một ảnh . DCT có tính chất mà với các ảnh điển hình , hầu
hết các thông tin có ý nghĩa về ảnh được tập trung vào các hệ số của DCT . Vì lý do này , DCT thường
được sử dụng trong các ứng dụng nén ảnh . Chẳng hạn ,DCT là trung tâm của giải thuật nén ảnh theo
chuẩn quốc tế thường được biết với tên JPEG ( tên này do nhóm phát triển đặt ra : Joint Photographic
Experts Group )
- DCT hai chiều của ma trận A có kích thước MxN được định nghĩa như sau :

- Các
giá trị
B pq được
gọi là hệ
số DCT
của A . DCT có thể biến đổi ngược được và biến đổi ngược của nó cho bởi công thức :

- Biểu
thức
DCT
ngược
có thể được xem xét khi coi rằng mọi ma trận A kích thước MxN như là tổng của MN hàm có dạng :

16
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

- Những hàm này đựơc gọi là những hàm cơ sở của DCT . Hệ số DCT B pq có thể được xem như
trọng số cho mỗi hàm cơ sở . Với các ma trận 8x8 , 64 hàm cơ sở được minh hoạ bởi ảnh sau :

Ma trận biến đổi DCT


- Toolbox xử lý ảnh sử dụng 2 cách để tính DCT . Cách thứ nhất là dùng hàm dct2 . Hàm dct2 sử
dụng giải thuật dựa trên FFT để tăng tốc tính toán với các ảnh có kích thước lớn . Cách thứ hai là sử
dụng ma trận biến đổi DCT . Ma trận này được trả về từ hàm dctmtx và được sử dụng hiệu quả hơn với
các ảnh có kích thước nhỏ như 8x8 , 16x16 . Ma trận biến đổi MxM – T được cho bởi :

17
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

Với ma trận A có kích thước MxM , T*A là một ma trận MxM mà các cột của nó là DCT một chiều
của các cột trong A . DCT hai chiều của A có thể thu được từ biểu thức : B=T*A*T’ . Do T là ma trận
trực giao nên ma trận nghịch đảo của nó cũng là ma trận chuyển vị nên DCT hai chiều của B là T’*B*T
DCT và nén ảnh
- Trong giải thuật nén ảnh JPEG , ảnh vào được chia làm các khối có kích thước 8x8 hoặc 16x16 và
DCT hai chiều được tính cho mỗi khối . Hệ số DCT sau đó được lượng tử hoá , mã hoá và truyền tải .
Bộ nhận JPEG ( hoặc chương đọc file JPEG ) sẽ giải mã hệ số đã được lượng tử của DCT , tính DCT
ngược cho mỗi khối và sau đó đặt các khối lại với nhau trong một ảnh duy nhất . Với các ảnh điển hình ,
nhiều hệ số DCT có giá trị gần 0 , những hệ số này có thể bị bỏ qua mà không ảnh hưởng nhiều đến chất
lượng của ảnh nén
- Ví dụ sau tính DCT hai chiều của các khối 8x8 trong một ảnh , bỏ qua ( đặt bằng 0 ) tất cả ngoại
trừ 10 trong số 64 hệ số DCT của mỗi khối và sau đó xây dựng lại ảnh bằng DCT hai chiều ngược của
mỗi khối . Phương pháp ma trận chuyển đổi DCT được sử dụng :
I = imread('cameraman.tif');
I = im2double(I);
T = dctmtx(8);
B = blkproc(I,[8 8],'P1*x*P2',T,T');
mask = [1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2 = blkproc(B,[8 8],'P1.*x',mask);
I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);
imshow(I), figure, imshow(I2)

18
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

- Mặc dù chất lượng của ảnh nén bị suy giảm , nó vẫn rõ nét thậm chí gần 85% hệ số DCT bị bỏ qua

3.4 Xử lý và nâng cao chất lượng ảnh:


Nâng cao chất lượng ảnh là một bước quan trọng , tạo tiền đề cho xử lý ảnh . Mục đích chính là
nhằm làm nổi bật một số đặc tính chính của ảnh như thay đổi độ tương phản , lọc nhiễu , nổi biên ,
khuyếch đại ảnh ,…Khôi phục ảnh là nhằm làm cho ảnh gần với ảnh gốc trước khi bị biến dạng do nhiều
nguyên nhân khác nhau.
3.4.1 Các kỹ thuật tăng cường ảnh:
Tăng cường ảnh là làm nổi bật các đặc trưng đã chọn , làm sao có thể phát hiện sớm hơn , bao gồm
các bước : điều khiển mức xám , dãn độ tương phản , giảm nhiễu , làm trơn ảnh , nổi biên ,…
3.4.1.1 Cải thiện ảnh dùng toán tử điểm:
-Tăng độ tương phản
-Tách nhiễu và phân ngưỡng
-Biến đổi âm bản
-Cắt theo mức
-Trích chọn bít
-Trừ ảnh
-Nén dải độ sáng
-Mô hình hóa và biến đổi lược đồ xám
3.4.1.2 Cải thiện ảnh dùng toán tử không gian:
-Làm trơn ảnh bằng lọc tuyến tính
-Làm trơn nhiễu bằng lọc phi tuyến
-Mặt nạ gờ sai phân và làm nhám
-Lọc thông thấp lọc thông cao và lọc dải thông
-Khuếch đại và nội suy ảnh
-Cải thiện ảnh nhị phân
-Co , dãn ảnh
3.4.2 Khôi phục ảnh:
3.5 Phát hiện biên:

19
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

3.5.1 Khái niệm:


-Điểm biên : Một điểm ảnh đượ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 liên tiếp của các điểm biên tạo thành một đường bao
3.5.2 Các phương pháp phát hiện biên
ảnh:

Ảnh gốc

- Phương
pháp phát
hiện trực
tiếp : dựa chủ
yếu vào sự
biến thiên độ
sáng của điểm
ảnh để làm nổi biên bằng cách lấy đạo hàm
Ảnh biên
+ Lấy đạo hàm bậc nhất ta có phương pháp Gradient
+ Lấy đạo hàm bậc hai có phương pháp Laplace
Cả 2 phương pháp này gọi chung là phương pháp dò biên cục bộ
- Phương pháp phát hiện gián tiếp : Bằng cách nào đấy chúng ta thu được các vùng ảnh khác nhau
thì đường phân cách các vùng ảnh chính là biên . Phương pháp này khó thực hiện nhưng cho kết quả tốt
khi sự biến thiên mức xám nhỏ .

20
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

3.5.2.1 Phương pháp phát hiện biên cục bộ:


a. Phương pháp Gradient:
b. Phương pháp Laplace:
CHƯƠNG BỐN : NHẬN DẠNG ẢNH
4.1 Giới thiệu:
Nhận dạng là giai đoạn cuối của hệ thống xử lý ảnh . Nhận dạng dựa trên lý thuyết về nhận dạng , lý
thuyết này và lý thuyết về nhận dạng ảnh nói riêng đề cập đến 3 phương pháp nhận dạng chính:
- Nhận dạng dựa vào phân hoạch không gian
- Nhận dạng dựa vào cấu trúc
- Nhận dạng dựa vào mạng nơron
Khái niệm về nhận dạng: Nhận dạng là quá trình phân loại đối tượng được biểu diễn theo một mô
hình nào đó và gán cho chúng một tên dựa theo quy luật và mẫu chuẩn
Bản chất của quá trình nhận dạng gồm 3 giai đoạn chính:
- Lựa chọn mô hình biểu diễn đối tượng
- Chọn ra luật quyết định ( phương pháp nhận dạng ) và suy diễn
- Học nhận dạng
4.2 Mạng nơron:
Mạng nơron nhân tạo được thiết kế dựa trên mô hình mạng nơron thần kinh với các mô hình nơron
nhân tạo là mô phỏng nơron thần kinh.
Mô hình của một mạng nơron nhân tạo gồm 3 phần chính : bộ tổng kết đầu vào , bộ học tuyến tính
và bộ phi tuyến .
Bộ tổng liên kết đầu vào: Là bộ tổng hợp các liên kết tại đầu vào của một phần tử nơron, mô tả như
sau:
m
V(t)=∑ wk xk(t)- θ
K=1

-1
x1
W1 θ

x2 w
2 u(t) y(t)
v(t) H(.) f(.)
Σ

xm
wm

21
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

Hình 1.2. Mô hình nơron nhân tạo.


Trong đó:
v(t): Tổng tất cả các đầu vào mô tả toàn bộ thế năng tác động ở thân nơron .
xk(t): Các đầu vào ngoài; với k là chỉ số chạy, k=1,2…m.
m: Số lượng đầu vào mô tả tín hiệu vào từ các đầu nhạy thần kinh hoặc các nơron khác.
wk: Trọng liên kết ngoài giữa các đầu vào k tới nơron hiện tại.
y(t): Tín hiệu đầu ra nơron .
θ: Ngưỡng (là hằng số), xác định ngưỡng kích thích hay ức chế.
Bộ động học tuyến tính: Đầu vào của phần động học tuyến tính là v(t), đầu ra của nó là u(t) gọi là
đầu ra tương tự. Hàm truyền tương ứng của phần động học tuyến tính có thể mô tả dưới dạng:
U(s) = H(s)V(s)
Bộ phi tuyến: Phần này sử dụng hàm quan hệ phi tuyến f(.) cho đầu ra y, để chặn tính hiệu ở đầu ra.
Các hàm đầu ra thông thường là các hàm có giới hạn ngưỡng phù hợp với đặc điểm đầu
Phân loại mạng nơron:
Có nhiều cách để phân loại mạng nơron nhân tạo, tùy theo tiêu chí đề
ra:
- Dựa vào số lượng lớp có trong mạng, ta phân thành:
+ Mạng một lớp
+ Mạng nhiều lớp
- Dựa vào đường truyền tín hiệu trong mạng, ta phân thành:
+ Mạng truyền thẳng
+ Mạng phản hồi
+ Mạng tự tổ chức
Khái quát luật học trong mạng nơron
Khái niệm học trong mạng nơron được hiểu theo hai nghĩa: Học về cấu trúc và
học về tham số.
Học tham số (Parameter Learning)
Mục tiêu của việc học tham số là thay đổi, cập nhật các trọng liên kết. Hầu hết
các luật học tồn tại thuộc kiểu học tham số. Thông thường, luật học tham số được
chia thành ba dạng chính, đó là: Học giám sát, học không giám sát và học củng cố.
Học có thầy (Học giám sát: Supervised Learning): Với kiểu học này, tại mỗi thời
điểm có đầu vào mạng nơron thì đầu ra mong muốn của hệ sẽ được cho sẵn. Có
thể cụ thể hóa như sau:
Mạng được cung cấp một tập các mẫu (x(1),d(1)), (x(2),d(2)),… (x(n),d(n)) là các
cặp đầu vào – đầu ra mong muốn. Khi một đầu vào mạng x(k) được đưa vào, đầu
ra mong muốn d(k) cũng được đưa vào mạng. Sai khác giữa giá trị đầu ra thực sự
y(k) và đầu ra mong muốn d(k) sẽ là cơ sở tạo tín hiệu lỗi để mạng sửa lỗi trọng
sao cho đầu ra thực sự gần với đầu ra mong muốn hơn.
Học không có thầy (Học không giám sát: Unsupervised Learning): Với kiểu học
này, không có bất kì một thông tin phản hồi từ môi trường nào. Mạng phải tự tìm ra
các mẫu, đặc tính, tính quy tắc, sự tương quan trong dữ liệu đầu vào và tập hợp lại

22
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

để tạo đầu ra. Khi tự tìm ra các đặc điểm này, mạng đã trải qua các thay đổi về
tham số của nó. Quá trình này được gọi là tự tổ chức.
Học củng cố (reinforcement learning): Đôi khi trong một số trường hợp, ta
không biết hết được các giá trị đầu ra chính xác để có thể học giám sát mà chỉ biết
được một số thông tin đánh giá. Khi đó luật học dựa trên những thông tin đánh giá
này gọi là luật học củng cố và thông tin phản hồi được gọi là thông tin củng cố.
Luật học này chỉ khác luật học giám sát ở chỗ, thông tin phản hồi từ môi trường chỉ
mang tính chất đánh giá chứ không mang tính chất dạy, có nghĩa là chỉ đánh giá
đầu ra thực sự là tốt hay xấu mà không đưa ra được đầu ra mong muốn là gì. Tín
hiệu củng cố được mạng sử dụng với hi vọng là đầu ra thực sự có đánh giá phản
hồi tốt hơn trong lần học tiếp theo.
Học cấu trúc (Structure Learning)
Mục tiêu của học cấu trúc là thay đổi số nơron, kiểu liên kết để làm cho cấu trúc
mạng thay đổi. Đối với học tham số, chúng ta giả sử cấu trúc mạng đã có sau đó
đưa ra các thuật học để thay đổi các trọng liên kết nhằm làm cho đầu ra thực sự
gần với đầu ra mong muốn. Còn việc học mức cấu trúc có thể sử dụng các kỹ thuật
liên quan đến thuật toán gen (Genetic Algorithm) và lập trình tiến hóa
(Evolutionary Programming). Các cách tìm kiếm trong thuật toán gen và lập trình
tiến hóa khá tiêu tốn thời gian ngay cả đối với mạng có kích thước trung bình. Do
đó, còn có thể sử dụng các kỹ thuật sửa đổi hay xây dựng mạng dần dần từ một
cấu trúc ban đầu. Kỹ thuật thường được sử dụng trong trường hợp này là kỹ thuật
xén bớt mạng nơron, phát triển mạng nơron và kết hợp cả hai: Xén bớt và phát
triển mạng nơron.

23
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

PHẦN HAI : THỰC NGHIỆM

1 GIỚI THIỆU VỀ MATLAB:


Matlab không chỉ là phần mềm mô phỏng hệ thống mà nó còn là công cụ tính toán , phần mềm lập
trình mạnh . Nó cung cấp nhiều toolbox để giải quyết các bài toán đồ họa , điều khiển , mô phỏng …
Image processing toolbox với thư viên lớn cung cấp nhiều hàm , các ví dụ demo phục vụ xử lý ảnh
Ngoài ra để thu nhận và nhận dạng thì kết hợp 2 toolbox là image acquisition toolbox và neural
network toolbox.
2 CHƯƠNG TRINH MINH HỌA:
Sơ đồ quá trình nhận dạng số:

Chyển sang
Thu nhận ảnh Cắt ảnh
Trong các bước trên thì quá trình ảnh nhị phân
chuyển ảnh sang ảnh nhị phân quyết định độ chính xác của quá
trình nhận dạng ảnh . Do nhiễu của môi trường (ánh sáng) và nhiễu của thiết bị thu nên sau khi nhị phân

Hiện thị kết 24


Nhận dạng
quả
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

hóa ảnh thông thường thì quá trình nhận dạng đạt độ chính xác không cao. Vì vậy để tăng độ chính xác
khi nhận dạng trước khi nhị phân hóa ảnh cần xử lý mức xám để tăng độ rõ nét của ảnh nhị phân.
Sau đây là chương trình minh họa:
function varargout = xulyanh(varargin)
% XULYANH M-file for xulyanh.fig
% XULYANH, by itself, creates a new XULYANH or raises the existing
% singleton*.
%
% H = XULYANH returns the handle to a new XULYANH or the handle to
% the existing singleton*.
%
% XULYANH('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in XULYANH.M with the given input arguments.
%
% XULYANH('Property','Value',...) creates a new XULYANH or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before xulyanh_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to xulyanh_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Copyright 2002-2003 The MathWorks, Inc.

% Edit the above text to modify the response to help xulyanh

% Last Modified by GUIDE v2.5 21-Apr-2009 15:44:39

% Begin initialization code - DO NOT EDIT

25
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @xulyanh_OpeningFcn, ...
'gui_OutputFcn', @xulyanh_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before xulyanh is made visible.
function xulyanh_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to xulyanh (see VARARGIN)
load mydata;
assignin('base','net',net); %gan gia tri o mydata
handles.output = hObject;
guidata(hObject, handles);
%*****************Phan nay thiet ke giao dien cua chuong trinh************
set(handles.edit3,'string',datestr(clock),'FontSize',16,'FontWeight','bold','ForegroundColor',[1 0 0]);
set(handles.edit1,'string','net');
set(handles.edit2,'string','');

26
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

set(handles.text1,'string','So nhan dang duoc la:','foregroundcolor',[1 0 0],...


'backgroundcolor',[0 1 0.5],'fontsize',16,'fontweight','bold');
set(handles.pushbutton1,'string','START','Fontsize',16,'fontweight','bold',...
'foregroundcolor',[1 0 0]);
set(handles.pushbutton2,'string','EXIT','fontsize',16,'fontweight','bold',...
'foregroundcolor',[1 0 0]);
set(handles.uipanel1,'title','Control','fontsize',12,'fontweight','bold');
set(handles.edit2,'fontsize',80,'fontweight','bold','foregroundcolor',[1 0 0]);
% --- Outputs from this function are returned to the command line.
function varargout = xulyanh_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles) %chuong trinh nut start
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.edit3,'string',datestr(clock),'FontSize',16,'FontWeight','bold','ForegroundColor',[1 0 0]);
%************************THU NHAN ANH*****************************
vid=videoinput('winvideo',1); %tao webcam
set(vid, 'FramesPerTrigger', 8); %so frame thu nhan la 8 giam nhieu
preview(vid);
pause(0.5);
start(vid); %thu anh
wait(vid); %doi thu anh xong
number=vid.FramesAvailable;
[frames,time]=getdata(vid,number);%luu anh vao bien frames
stop(vid);

27
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

delete(vid);
clear vid; %xoa webcam
disp(time);
imwrite(frames(:,:,:,6),'data_image.jpg','jpg');%luu anh
so=imread('data_image.jpg'); %doc anh
axes(handles.axes1);
imshow(so),title('original image');%hien thi anh goc tren axes1
%*****************************XU LY ANH*********************************
level=graythresh(so);%lay nguong
%imview(so);
disp(level);
%cai thien muc xam tang do ro cua anh nhi phan
for i=20:200
for j=50:270
if ((so(i,j,1)<75)|(so(i,j,2)<75)|(so(i,j,3)<75))
so(i,j,:)=0;%giam muc xam cua pixel co muc xam <75 xuong 0
else
so(i,j,:)=250;%tang muc xam cua pixel co muc xam >75 len 250
end
end
end
imview(so);
bw = im2bw(so(20:200,50:270),level);%chuyen anh nhi phan
axes(handles.axes2);
imshow(bw);title('binary image');%hien thi anh nhi phan tren axes2
bw2 = cat_anh(bw); %cat anh
axes(handles.axes3);
imshow(bw2);title('anh sau khi cat');%hien thi
charvec = hoc_image(bw2);%chuyen anh ve dinh dang [70 50]
axes(handles.axes4);
plotchar(charvec);title('Neural Network of num');
selected_net = get(handles.edit1,'string'); %tao mang network tu edit1

28
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

selected_net = evalin('base',selected_net); %nhan dang


result = sim(selected_net,charvec);%lay ket qua
[value, num] = max(result);
set(handles.edit2, 'string',num);%hien thi
set(handles.edit3,'string',datestr(clock),'FontSize',16,'FontWeight','bold','ForegroundColor',[1 0 0]);
guidata(hObject, handles);

% --- Executes on button press in pushbutton2.


function pushbutton2_Callback(hObject, eventdata, handles) %chuong trinh nut exit
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
beep;
beep;
exit=questdlg('Do you want to exit now?','EXIT','Yes','No','No');
switch exit
case 'Yes'
h=waitbar(0,'Please wait ...','Name','Please wait...');
for t=0:5000
dem=t/50;
waitbar(t/5000,h,num2str(dem));
end
close(xulyanh);
close(h);
close all;
case 'No'
return;
end

29
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

KẾT LUẬN
Phần cứng của nhận dạng số gồm:
-Webcam kết nối với cổng usb.
- Bảng các chữ số từ 0 đến 9.
Phần mềm : Để thực hiện nhận dạng các chữ số sử dụng công cụ tích hợp trong matlab để thực hiện .
Do môn xử lý ảnh là môn khó ít người làm thực tế ở Việt Nam vì vậy đồ án không thể tránh khỏi sai
xót , đặc biệt quá trình nhận dạng hay bị nhiễu bởi môi trường do đó độ chính xác chưa cao .

TÀI LIỆU THAM KHẢO


1- Nhập môn xử lý ảnh số ĐHBK Hà Nội
2-Help matlab
3-www.mathworks.com

30
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ

31

You might also like