Professional Documents
Culture Documents
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Ơ
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 :
3
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ
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ơ)
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Ơ
5
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ
g(x,y) = h(x,y) ⊗ f(x,y) = ∫ ∫ h( x − x ' , y − y ' ) f ( x ' , y ' )dx ' dy '
−∞ −∞
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Ơ
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')
11
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ
12
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ
C=
13
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ
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Ơ
- 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 :
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
19
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ
Ả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Ơ
-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Ơ
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Ơ
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
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
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Ơ
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Ơ
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 .
30
NHẬN DẠNG SỐ QUA CAMERA GVHD:NHỮ QUÝ THƠ
31