Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 96 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
96
Dung lượng
2,67 MB
Nội dung
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
PHẦN A
MỞ ĐẦU
GVHD : TS. LÊ THANH PHÚC
Trang 1
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
1. ĐẶT VẤ ĐỀ
Với xu hướng phát triển của cơ sở hạ tầng và giao thông, mật độ giao thông
ngày càng cao. Tính an toàn trên ô tô ngày càng được chú trọng hơn.
Kéo theo đó nhiều hệ thống an toàn trên xe ra đời và phát triển giúp giảm
thiểu xảy ra tai nạn.
Xuất phát từ thực tế trên, đề tài “MATLAB XỬ LÝ ẢNH ỨNG DỤNG
TRÊ
Ô TÔ” được nghiên cứu nhằm hỗ trợ cảnh báo cho người lái xe nhận
biết được nguy hiểm sắp xảy ra .
2. MỤC TIÊU_NHIỆM VỤ NGHIÊN CỨU
Mục đích của nhóm thực hiện là tìm hiểu chương trình ứng dụng phần mềm
MATLAB để giao tiếp giữa máy tính và camera nhằm thu nhận hình ảnh và lấy
thông tin về đối tượng quan tâm trong hình ảnh để xử lý.
Mục đích của đề tài này là sử dụng thuật toán MATLAB để xây dựng một hệ
thống an toàn trên xe ô tô nhằm giúp người lái xe có thể tránh được những vụ tai
nạn có thể sắp xảy ra. Giúp nâng cao tính an toàn khi tham gia giao thông.
3. ĐỐI TUỢNG VÀ PHẠM VI NGHIÊN CỨU
Đối tuợng nghiên cứu bao gồm phần mềm lập trình MATLAB và hình ảnh
thu nhận được từ các thiết bị thu hình. Trên cơ sở đó để lập trình và mô phỏng
bằng thực nghiệm .
4.
ƯƠ G
Á
G IÊ CỨU
Để đề tài được hoàn thành nhóm đã kết hợp nhiều phương pháp nghiên cứu,
đặc biệt là phương pháp tham khảo tài liệu sách và tìm hiểu trên internet, từ đó có
cơ sở và tìm ra những ý tưởng mới để hình thành đề cương cho đề tài. Trong quá
GVHD : TS. LÊ THANH PHÚC
Trang 2
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
trình thực hiện chuơng trình, chúng tôi còn kết hợp cả phương pháp quan sát ,
thực nghiệm và tham khảo ý kiến của các thầy và bạn bè để hoàn thành tốt đề tài
này.
GVHD : TS. LÊ THANH PHÚC
Trang 3
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
PHẦN B
CƠ SỞ LÝ THUYẾT
GVHD : TS. LÊ THANH PHÚC
Trang 4
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
C ƯƠ G 1
TỒNG QUAN VỀ XỬ LÝ ẢNH VÀ CÁC KHÁI NIỆM CỦA ẢNH
TRONG MATLAB
I . Tồng quan về xử lý ảnh
Xử lý ảnh là một dạng của xử lý tín hiệu trong đó đầu vào là một hình ảnh (các
bức ảnh, các khung hình) và đầu ra của quá trình xử lý ảnh có thể là một hình ảnh
khác hoặc là một tập chứa các tính chất hoặc tham số liên quan tới hình ảnh đó.
Phần lớn các kỹ thuật xử lý ảnh thì thường qui về việc xử lý hình ảnh như là một
tín hiệu 2 chiều rồi sử dụng các kỹ thuật xử lý tín hiệu để xử lý nó.
II . Các khái niệm
1. Điểm ảnh
Gốc của ả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(số), ả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 đ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).
Như vậy, điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x,y) với độ
xám hoặc màu nhất định. Kích thước và khoảng cách giữa các điểm ảnh đó được
chọn thích hợp sao cho mắt người cảm nhận sự liên tục về kkhong gian và mức
xám (hoặc màu) của ảnh số gần như ảnh thật. Mỗi phần tử trong ma trận được gọi
là một phần tử ảnh.
GVHD : TS. LÊ THANH PHÚC
Trang 5
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
1 pixel
Hình 1 : xác định điểm ảnh
2. Độ phân giải của ảnh
Độ 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ị.
Theo định nghĩa, 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.
Ví dụ : màn hình máy tính có nhiều loại với độ phân giải khác nhau như màn hình
CGA (Color Graphic Adaptor) có độ phân giải 320*200 , màn hình VGA (Video
Graphic Array) có độ phân giải 1280*800.
Rõ ràng màn hình có độ phân giải càng cao thì ta tháy có cảm giác nó mịn, rõ và
dễ thấy hơn so với loại có độ phân giải thấp hơn.
GVHD : TS. LÊ THANH PHÚC
Trang 6
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
3. Cấu trúc lưu dữ liệu
Trong MATLAB, dữ liệu chủ yếu được lưu trữ theo cấu trúc mảng (tập có thứ
tự gồm các phần tử số thực hoặc phức). Ảnh trong Matlab cũng được lưu trữ bởi
các mảng phần tử với các giá trị lưu trữ có thể là mầu, cường độ… của ảnh.
Hầu hết các ảnh được MATLAB lưu trữ dưới dạng các mảng 2 chiều (VD: ma
trận). Trong các mảng 2 chiều này, mỗi phần tử tương ứng với một pixel và
thường được biểu diễn bởi một điểm trên màn hình máy tính(VD: Một bức ảnh có
500 hàng và 700 cột gồm nhiều điểm mầu khác nhau được lưu trữ bởi một ma trận
có kích thước 500x700). Một số bức ảnh, như ảnh mầu đòi hỏi phải được lưu trữ
bởi mảng ba chiều. Trong đó, mặt phẳng thứ nhất trong mảng ba chiều này biểu
diễn cho cường độ đỏ (red) của phần tử, mặt phẳng thứ hai biểu diễn cho cường
độ màu xanh là cây (green) và mặt phẳng còn lại biểu diễn cho cường độ màu
xanh da trời (blue) của phần tử. Với việc lưu trữ các ảnh dưới dạng mảng, việc xử
lý ảnh với dữ liệu được lưu bởi dạng ma trận nào đều được thực hiện rất thuận tiện.
GVHD : TS. LÊ THANH PHÚC
Trang 7
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
C ƯƠ G 2
CÁC KIỂU ẢNH TRONG MATLAB
I . Ảnh Index
Ảnh được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trận
màu (còn gọi là bản đồ màu). Ma trận có thể là kiểu uint8, uint16 hoặc double. Ma
trận màu là một ma trận kích thước m x 3 gồm các thành phần thuộc kiểu double
có giá trị trong khoảng [0 1]. Mỗi hàng của ma trận xác định thành phần red,
green, blue của một màu trong tổng số m màu được sử dụng trong ảnh. Gía trị của
một phần tử trong ma trận dữ liệu ảnh cho biết màu của điểm ảnh đó nằm ở hàng
nào trong ma trận màu. Nếu ma trận dữ liệu thuộc kiểu double, giá trị 1 sẽ tương
ứng với hàng thứ 1 trong bảng màu, giá trị hai tương ứng với màu ở hàng thứ
hai,…Nếu ma trận dữ liệu thuộc kiểu uint8 hoặc uint16, giá trị 0 tương ứng với
hàng 1, giá tri 1 tương ứng với hàng 2,…Riêng với kiểu uint16, MATLAB không
hỗ trợ đủ các phép toán so với kiểu uint8 nên khi cần xử lý ta cần chuyển sang
kiểu dữ liệu uint8 hoặc double bằng các hàm imapprox hoặc im2double.
GVHD : TS. LÊ THANH PHÚC
Trang 8
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Hình 2 : ảnh index
II . Ảnh Grayscale
Mỗi ảnh được biểu diễn bởi một ma trận hai chiều, trong đó giá trị của mỗi
phần tử cho biết độ sáng (hay mức xám) của điểm ảnh đó. Ma trận này có thể
thuộc một trong các kiểu uint8, uint16, hoặc double. Trong đó giá trị nhỏ nhất (0)
tương ứng với màu đen còn giá trị lớn nhất (255 hoặc 65535, hoặc 1 tuỳ kiểu dữ
liệu là uint8, uint16, hay double) ứng với màu trắng. Như vậy, ảnh biểu diễn theo
kiểu này còn gọi là ảnh “trắng đen” hoặc ảnh gray scale.
Hình 3 : ảnh Grayscale
GVHD : TS. LÊ THANH PHÚC
Trang 9
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
III . Ảnh nhị phân
Ảnh được biểu diễn bởi một ma trận hai chiều thuộc kiểu logical. Mỗi điểm ảnh
chỉ có thể nhận một trong hai giá trị là 0 (đen) hoặc 1 (trắng).
Hinh 4 : ảnh nhị phân
IV . Ảnh RGB
Ảnh RGB còn gọi là ảnh “truecolor” do tính trung thực của nó. Ảnh này được
biểu diễn bởi một ma trận ba chiều kích thước m x n x 3, với m x n là kích thước
ảnh theo pixels. Ma trận này định nghĩa các thành phần màu red, green, blue cho
mỗi điểm ảnh, các phần tử của nó có thể thuộc kiểu uint8, uint16, hoặc double. Ví
dụ, điểm ảnh ở vị trí (10,5) sẽ có ba thành phần màu được xác định bởi các giá trị
(10,5,1), (10,5,2) và (10,5,3). Các file ảnh hiện nay thường sử dụng 8 bit cho một
thành phần màu, nghĩa là mất 24 bit cho mỗi điểm ảnh (khoảng 16 triệu màu).
GVHD : TS. LÊ THANH PHÚC
Trang 10
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Hình 5 : Ảnh RGB
GVHD : TS. LÊ THANH PHÚC
Trang 11
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
C ƯƠ G 3
CÁC HÀM XỬ LÝ CƠ BẢN
I . Đọc, ghi dữ liệu và xem thông tin của ảnh
1 . Hàm imread
Hàm ‘imread’ để nhập một bức ảnh vào trong workspace (không gian làm
việc) của Matlab. Lúc này xử lý bức ảnh tương đương với việc xử lý biên được
gán cho nó.
Cú pháp :
A = imread(filename.fmt)
[X,map] = imread(filename.fmt)
VD: image=imread(‘picture.jpg’); % gán ảnh có tên picture định dang jpg cho
biến image, biến image được lưu trong workspace.
2 . Hàm imwrite
Hàm ‘imwrite’ chuyển đổi một biến đã được gán cho ảnh thành file ảnh và
ghi nhớ file ảnh đó.
Cú pháp :
imwrite(A,filename,fmt)
imwrite(X,map,filename,fmt)
VD: imwrite(image,’image.jpg’); % lưu biến image dưới định dạng file ảnh jpg
vào thư mục làm việc hiện thời
GVHD : TS. LÊ THANH PHÚC
Trang 12
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
3 . Hàm imfonfo
Hàm ‘imfonfo’ cho ta xem các thông số của một file ảnh nào đó.
Các thông tin được cung cấp bởi hàm ‘imfinfo’ là: filename, filemoddate,
filesize, ormatversion, width, height, bitdepth, colortype.
Cú pháp : info = imfinfo(filename,fmt)
info = imfinfo(filename)
II . Các hàm hiển thị ảnh trong Matlab
Matlab cung cấp hai hàm hiển thị cơ bản là image và imagesc. Ngoài ra trong IPT
cũng có hai hàm hiển thị ảnh khác, đó là imview và imshow.
1 . Hàm imshow
Hàm ‘imshow’ cũng tạo một đối tượng đồ họa thuộc loại image và hiển thị ảnh
trên một figure. Hàm imshow sẽ tự động thiết lập các giá trị của các đối tượng
image, axes và figure để thể hiện hình ảnh.
Cú pháp : imshow(A)
2 . Hàm image
Hàm ‘image(X,Y,C)’ hiển thị hình ảnh biểu diễn bởi ma trận C kích thước M
x N lên trục tọa độ hiện hành. X, Y là các vector xác định vị trí các pixel C(1,1) và
C(M,N) trong hệ trục hiện hành.
Cú pháp : image(A)
GVHD : TS. LÊ THANH PHÚC
Trang 13
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
3 . Hàm imagesc
Hàm ‘imagesc’ có chức năng tương tự như hàm image, ngoại trừ việc dữ liệu
ảnh sẽ được co giãn để sử dụng toàn bộ bản đồ màu hiện hành.
Cú pháp : imagese(A)
4 . Hàm imview
Hàm ‘imview’ cho phép hiển thị hình ảnh trên một cửa sổ riêng, nền Java, gọi là
image Viewer. Image Viewer cung cấp các công cụ dò tìm và xác định các giá trị
pixel một cách linh hoạt.
Cú pháp : imview(A)
III . Chuyển đổi giữa các kiểu dữ liệu, kiểu ảnh
1 . Chuyển đổi giữa các kiểu dữ liệu ảnh
Matlab cung cấp sẵn các hàm thực hiện chuyển kiểu cho các ma trận biểu diễn
ảnh, bao gồm: im2double, im2uint8 và im2uint16. Tuy nhiên, khi thực hiện
chuyển kiểu giữa các dữ liệu ảnh cần lưu ý một số điều sau:
- Khi chuyển từ một kiểu dữ liệu dùng nhiều bit sang một kiểu dữ liệu dùng it bit
hơn thì một số thông tin chi tiết về bức ảnh ban đầu sẽ bị mất.
- Không phải lúc nào cũng có thể chuyển đổi kiểu dữ liệu đối với kiểu ảnh
indexed, vì các giá trị của ma trận ảnh xác định một địa chỉ trong bản đồ màu chứ
không phải là giá trị màu, do đó không thể lượng tử hóa được.
GVHD : TS. LÊ THANH PHÚC
Trang 14
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
2 . Chuyển đổi giửa các kiểu ảnh
+ Gray2ind : chuyển từ dạng Gray sang indexed.
Cú pháp : [X,Map] = gray2ind(I,N)
[X,Map] = gray2ind(BW,N)
+ Im2bw : Tạo một ảnh nhị phân từ một ảnh indexed, grayscale hay ảnh RGB
trên cơ sở của ngưỡng ánh sáng .
Cú pháp : bw=im2bw(I,level)
bw=im2bw(x,map,level)
bw=im2bw(rgb,level)
+ Ind2gray : chuyển từ dạng indexed sang Gray.
Cú pháp : i=ind2gray(x,map)
+ Dither : chuyển các định dạng khác sang dạng nhị phân.
Cú pháp : dither(I)
+ Ind2rgb : chuyển từ dạng indexed sang RGB.
Cú pháp : rgb=ind2rgb(x,map)
+ Mat2gray : Tạo một ảnh cường độ đen trắng từ dữ liệu trong một ma trận bằng
cách lấy tỉ lệ dữ liệu .
Cú pháp : i=mat2gray(a,[amin amax])
+ Rgb2gray : chuyển dạng RGB sang dạng Gray.
Cú pháp : i=rgb2gray(rgb)
GVHD : TS. LÊ THANH PHÚC
Trang 15
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
+ Rgb2ind : chuyển dạng RGB sang dạng Indexed.
Cú pháp : [x, map]=rgb2ind(rgb,n)
IV . Các phép toán số học cơ bản đối với dữ liệu ảnh
Các phép toán số học cơ bản trên các dữ liệu ảnh bao gồm các phép cộng, trừ,
nhân và chia. Chẳng hạn , trừ ảnh có thể được sử dụng để phát hiện sự khác nhau
giữa hai hoặc nhiều ảnh của cùng một cảnh hoặc một vật .
Tuy nhiên, Matlab chỉ hỗ trợ các phép toán này trên kiểu double nên cần thực
hiện chuyển đổi kiểu trước khi thực hiện. Để giảm bớt thao tác này, trong IPT có
cung cấp các hàm thực hiện các phép toán số học trên ảnh mà có thể chấp nhận
bất kỳ kiểu dữ liệu ảnh nào và trả về kết quả thuộc cùng kiểu với các toán hạng.
Các hàm này cũng xử lý các dữ liệu một cách tự động.
- Imabsdiff : z=imabsdiff(x,y)
- Imadd : z=imadd(x,y,out_class)
- Imcomplement : im2=imcomplement(im)
- Imdivide : z=imdivide(x,y)
- Imlincomb : z=imlincomb(k1,a1,k2,a2,…,kn,an,k,out_class)
- Immultiply : z=immultiply(x,y)
- Imsubstract : z=imsubstract(x,y)
GVHD : TS. LÊ THANH PHÚC
Trang 16
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
C ƯƠ G 4
CÁC PHÉP BIẾ ĐỔI ẢNH
I . Biến đổi Fourier
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 .
- Định nghĩa phép biến đổi Fourier như sau : 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ệ :
Biến
và
là các biến tần số . Hàm
đượ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
và
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 của biến đổi
Fourier .
- Biến đổi Fourier ngược được cho bởi công thức :
Nói chung , phương trình 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ố
được lưu trong
GVHD : TS. LÊ THANH PHÚC
Trang 17
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
- Để minh hoạ biểu diễn trực quan biến đổi Fourier, 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.
Hình 6: minh hoạ biểu diễn trực quan biến đổi Fourier
- Hình biểu diễn sau đây biểu diễn biên độ của biến đổi Fourier
của
hàm chữ nhật như trên .
GVHD : TS. LÊ THANH PHÚC
Trang 18
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Hình 7 : biểu diễn biên độ của biến đổi Fourier
- 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
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) 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
như một ảnh :
GVHD : TS. LÊ THANH PHÚC
Trang 19
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
- 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ị
gần bằng 0 . Để minh hoạ , hãy xem biểu diễn trực
quan các biến đổi Fourier sau :
GVHD : TS. LÊ THANH PHÚC
Trang 20
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Hình 8 :biểu diễn trực quan các biến đổi Fourier
-Biến đổi Fourier 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 )
- Do các dữ liệu trên máy tính được lưu trữ dưới dạng rời rạc, cụ thể là dữ liệu ảnh
được tổ chức theo đơn vị pixel nên phép biến đổi Fourier cũng được rời rạc hóa
thành biến đổi Fourier rời rạc (DFT). Giả sử hàm f(m,n)
0 trong miền
(0 gõ guide
cửa sổ GUIDE Quick Start xuất hiện:
Hình 28 : Cửa số GUIDE
GVHD : TS. LÊ THANH PHÚC
Trang 60
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Có thể chọn các mẫu giao diện thiết kế sẵn hay nhấn OK để chọn GUI trống.
Sau đây là cửa sổ biên soạn GUI:
Hình 27 : Cửa số biên soạn GUIDE
Vùng bên trái chứa danh sách thành phần của đối tượng, vùng có ô lưới là vùng
hiển thị - nơi đặt các component, bấm chuột trái vào component muốn tạo, sau đó
đưa chuột ra vùng layout nơi muốn đặt component, bấm chuột trái dùng kỹ thuật
kéo chuột để chọn kích thước component.
Các component mà GUI cho phép là:
Axes: vẽ hệ trục.
GVHD : TS. LÊ THANH PHÚC
Trang 61
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Check box: là hộp kiểm tra cho phép đưa vào các chọn lựa khi bấm
chuột vào đó.
Edit Text: là hộp văn bản đưa chuỗi ký tự vào đó.
Frame: khung bao một vùng cửa sổ hình.
List box: gồm một văn bản các mục để chọn lựa.
Pop-up menu: menu sổ xuống trình bày một bảng các chọn lựa khi
nhấp chuột vào đó.
Push button (nút nhấn): phát sinh một hành động nào đó khi nhấp
chuột.
Radio button: tương tự như Check box nhưng chỉ chọn một.
Slider (con trượt): dùng để đưa giá trị vào trong một tầm giới hạn.
Static Text: dòng văn bản dùng để đặt nhãn, tiêu đề, hướng dẫn.
Toggle button (nút bật): giống push button nhưng có hiển thị trạng thái
thay đổi mỗi khi nhấn.
Popup Menu: tạo menu.
Bấm kép chuột vào component trong vùng layout để soạn tính chất của
component, ví dụ bấm kép chuột vào Push button sẽ hiện ra cửa sổ Property
Inspector như sau:
GVHD : TS. LÊ THANH PHÚC
Trang 62
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Hình 28: Cửa sổ thuộc tính
Cửa sổ Property Inspector có rất nhiều thuộc tính, sau đây là các thuộc tính cơ
bản nhất:
Tag: Tên mà ta gắn cho component, ví dụ pushbutton-start.
BackgroundColor: Màu nền của component.
ForegroundColor: Màu chữ trên component.
FontName, FontAngle, FontSize, FontWeight: Các đặc tính của font
chữ trên component.
String: Văn bản hiển thị trên component. Trong trường hợp muốn sử
dụng font tiếng Việt ví dụ như VNI-Times ta có thể chọn FontName
phù hợp, nhưng thường không thể đánh trực tiếp ký tự có dấu, ta có
thể soạn văn bản tiếng Việt trong Word sau đó copy và paste vào
string trong Property Inspector, lúc đó các ký tự tiếng Việt sẽ hiện ra
GVHD : TS. LÊ THANH PHÚC
Trang 63
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
không đúng trên layout editor nhưng khi chạy chương trình thì sẽ hiển
thị đúng.
Enable: Cho phép component hoạt động hay không.
Visible: Hiển thị component hay không.
Quan trọng nhất đối với các component là callback tức là các hàm con mà file
m sẽ gọi khi tác động vào component, ví dụ khi bấm chuột vào pushbutton,
togglebutton, di chuyển con trượt của slider hay khi viết văn bản vào EditText rồi
bấm Enter.
Soạn thảo các callback: ở cửa sổ soạn thảo layout editor nhấp chuột phải vào
component muốn soạn thảo sau đó chọn View Callbacks -> callback ta sẽ vào
màn hình soạn thảo callback cho component đó (Lưu ý rằng các dòng lệnh sẽ
được viết sau dòng “function tên component_Callback (hobject, eventdata,
handles)”)
Sau khi soạn thảo hoàn tất và lưu, MATLAB sẽ lưu hai file có cùng tên nhưng
khác nhau về phần mở rộng:
File có phần mở rộng .fig chứa nội dung của giao diện.
File có phần mở rộng .m chứa những đoạn mã liên quan đến giao diện.
II . Toolbox thu thập hình ảnh (Image Acquisition Toolbox)
1. Nhiệm vụ của Toolbox
Image Acquisition Toolbox là tập hợp các hàm của MATLAB có nhiệm vụ
thu thập hình ảnh số từ các thiết bị thu hình. Cụ thể là:
Thu thập hình ảnh từ các thiết bị thu hình khác nhau, từ loại chuyên
dụng đến loại rẻ tiền như Webcam (giao tiếp USB).
Trình chiếu (preview) luồng dữ liệu video từ thiết bị thu hình.
GVHD : TS. LÊ THANH PHÚC
Trang 64
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Trích hình ảnh từ luồng dữ liệu video.
Thiết lập các callback cho các sự kiện khác nhau.
Chuyển dữ liệu hình ảnh vào không gian workspace của MATLAB
để xử lý ảnh tiếp theo.
2 . Các bước thu thập hình ảnh cơ bản với Toolbox
Bước 1: Gắn thiết bị thu hình vào máy tính và cài đặt driver điều khiển
Gắn thiết bị thu hình vào máy tính.
Cài đặt driver (trình điều khiển) cho thiết bị (được cho bởi nhà sản
xuất).
Xem thử hình ảnh video hiện trên máy tính thông qua phần mềm của
nhà sản xuất.
Khởi động MATLAB
Bước 2: Chỉ định thông tin phần cứng:
Ta cần chỉ định cho MATLAB biết phần cứng nào dùng để lấy dữ liệu
(vì có thể có nhiều camera kết nối với PC).
Gõ lệnh imaqhwinfo để biết tên các loại thiết bị có thể dùng.
Tên
Loại thiết bị
‘coreco’
Thiết bị của công ty coreco
‘DCAM’
Các thiết bị dùng chuẩn IEEE 1394
‘dt’
Các thiết bị của Data Translation
‘Matrox’
Các thiết bị của hãng Matrox
‘winvideo’ Các thiết bị dùng chuẩn Windows Driver Model (WDM)
hoặc Video for Windows (VFW). Bao gồm các loại USB
WEBCAM và camera IEEE 1394
GVHD : TS. LÊ THANH PHÚC
Trang 65
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Chỉ định thiết bị: Tuỳ vào loại thiết bị (adaptor name), mỗi thiết bị cùng loại
gắn vào PC được đánh số ID, thiết bị thứ nhất có deviceID = 1, thiết bị thứ hai có
deviceID = 2,…
Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy, ta cũng dùng
lệnh imaqhwinfor với đối số là winvideo
>>imaqhwinfo(‘winvideo’)
ans =
AdaptorD11Name: [1x81 char]
AdaptorD11Version: ‘2.1 (R2007a)’
AdaptorName: ‘winvideo’
DeviceIDs: { [1] }
DeviceInfo: [1x1 struct]
Có một thiết bị với DeviceID là 1. Ta có thể tìm hiểu thêm thông tin về thiết bị
này.
>>imaqhwinfo(‘winvideo’,1)
ans=
DefaultFormat: ‘RGB24_320x240’
DeviceFileSupported: 0
DeviceName: ‘USB PC Camera-168’
DeviceID: 1
ObjectConstructor: [1x25 char]
SupportedFormats: {1x14 cell}
Đây là Webcam đã gắn vào máy để làm đề tài này.
Bước 3: Tạo đối tượng đại diện cho luồng dữ liệu video
GVHD : TS. LÊ THANH PHÚC
Trang 66
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Để tạo luồng dữ liệu video ta dùng lệnh videoinput.
Ví dụ:
>>vid = videoinput(‘winvideo’,1)
Summary of Video Input Object Using ‘USB PC Camera-168’.
Acquisition Source(s): input1 is available.
Acquisition Parameters: ‘input1’ is the current selected source.
10 frames per trigger using the selected source.
‘RGB24_320x240’ video data to be logged upon START.
Grabbing first of every 1 frame(s).
Log data to ‘memory’ on trigger.
Trigger Parameters: 1 ‘immediate’ trigger(s) on START.
Status: Waiting for START.
0 frames acquired since starting.
0 frames available for GETDATA.
Bước 4: Hiển thị luồng video trên màn hình để xem thử
Để xem trước luồng dữ liệu video ta dùng lệnh preview.
Ví dụ: preview(vid)
Màn hình lúc này hiện lên cửa sổ video của đối tượng vid
Để kết thúc xem ta dùng lệnh stoppreview hoặc để đóng cửa sổ preview ta
dùng lệnh closepreview(vid).
Bước 5: Lấy một khung ảnh và lưu thành file đồ hoạ.
Để lấy một ảnh vào xử lý ta dùng lệnh getsnapshot.
Để lưu ảnh thành file đồ hoạ ta dùng lệnh imwrite.
GVHD : TS. LÊ THANH PHÚC
Trang 67
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Ví dụ: hinh = getsnapshot (vid);
imwrite (hinh, ‘d.jpg’);
Bước 6: Làm sạch bộ nhớ
Sau khi lấy dữ liệu hình ảnh ta có thể giải phóng bớt bộ nhớ bằng các lệnh
sau:
delete(vid)
clear
close(gcf)
GVHD : TS. LÊ THANH PHÚC
Trang 68
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
C ƯƠ G II
QUÁ TRÌNH XỬ LÝ ẢNH
I . Xử lý video giao tiếp qua Webcam
n=10^9999
while i=30
Khoảng cách an toàn
else
Khoảng cách nguy hiểm
end
end
GVHD : TS. LÊ THANH PHÚC
Trang 74
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Cửa sổ giao diện đề tài như sau :
Hình giao diện chính của đề tài
GVHD : TS. LÊ THANH PHÚC
Trang 75
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Hình báo đèn xanh sáng khi ở mức an toàn
Hình báo đèn đỏ sáng khi ở mức nguy hiểm
GVHD : TS. LÊ THANH PHÚC
Trang 76
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
\
VII. SƠ ĐỒ KHỐI C ƯƠ G TRÌ
WEBCAM
Chụp hình
Xử lý ảnh và tách
biên đối tượng
Tính toán khoảng cách
Quyết định
Nếu ≥ 30 cm
An toàn
GVHD : TS. LÊ THANH PHÚC
Nếu [...]...ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ Hình 5 : Ảnh RGB GVHD : TS LÊ THANH PHÚC Trang 11 ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ C ƯƠ G 3 CÁC HÀM XỬ LÝ CƠ BẢN I Đọc, ghi dữ liệu và xem thông tin của ảnh 1 Hàm imread Hàm ‘imread’ để nhập một bức ảnh vào trong workspace (không gian làm việc) của Matlab Lúc này xử lý bức ảnh tương đương với việc xử lý biên được gán cho... Trang 19 ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ - 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ị gần bằng 0 Để minh hoạ , hãy xem biểu diễn trực quan các biến đổi Fourier sau : GVHD : TS LÊ THANH PHÚC Trang 20 ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ Hình 8 :biểu diễn trực quan các biến đổi Fourier -Biến đổi Fourier trên máy tính... TS LÊ THANH PHÚC Trang 26 ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ Hình 10 : hình biểu diễn phép chiếu hàm Radon Biến đổi Radon của f(x,y) tương ứng với góc quay Ø là tích phân đường của f theo trục Ø )= : Ø – y sin Ø , GVHD : TS LÊ THANH PHÚC sin Ø + y cos Ø)d y Trang 27 ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ Hình 11 :Biến đổi Radon của f(x,y) tương ứng với góc quay Ø Hàm Radon... PHÚC Trang 21 ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ (0 ... Trang ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ PHẦN B CƠ SỞ LÝ THUYẾT GVHD : TS LÊ THANH PHÚC Trang ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ C ƯƠ G TỒNG QUAN VỀ XỬ LÝ ẢNH. .. ảnh (khoảng 16 triệu màu) GVHD : TS LÊ THANH PHÚC Trang 10 ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ Hình : Ảnh RGB GVHD : TS LÊ THANH PHÚC Trang 11 ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH. .. LÊ THANH PHÚC Trang 39 ĐỒ ÁN TỐT NGHIỆP MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ C ƯƠ G XỬ LÝ MỜ VÀ NHIỄU TRONG ẢNH I Xử lý mờ ảnh Nguyên nhân mờ Sự làm mờ hay phai nhạt ảnh gây nhiều tác nhân :