ĐỒ Á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<=m<=M-1, 0<=n<=N-1), các phép biến đổi DFT thuận và nghịch kích thước
MxN được định nghĩa như sau :
GVHD : TS. LÊ THANH PHÚC
Trang 21
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
(0<=p<=M-1 , 0<=q<=N-1)
(0<=m<=M-1 , 0<=n<=N-1)
F(p,q) gọi là các hệ số của biến đổi DFT.Với các ứng dụng trong xử lý ảnh, chúng
ta chỉ quan tâm đến các hàm fft2 và ifft2.
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 .
Nếu ảnh ban đầu có kích thước nhỏ hơn thì Matlab tự động thêm vào các zero
pixel trước khi biến đổi.Sau khi thực hiện biến đổi DFT bằng fft2, thành phần DC
sẽ nằm ở góc trên bên trái của ảnh. Ta có thể dùng hàm fftshift để dịch thành phần
DC này về trung tâm của ảnh.
Cú pháp : F=fft2(X,Mrows,Ncols)
f=ifft2(F,mrows,ncols)
Ví dụ :
Tạo ma trận f tương tự như hàm f(m,n) đã xét ở trên . 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).
f = zeros(30,30);
f(5:24,13:17) = 1;
imshow(f,'notruesize')
GVHD : TS. LÊ THANH PHÚC
Trang 22
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
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
Để thu được kết quả tốt hơn , ta sử dụng các lệnh sau đây :
F = fft2(f,256,256);
GVHD : TS. LÊ THANH PHÚC
Trang 23
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
imshow(log(abs(F)),[-1 5]); colormap(jet); colorbar
II .
hép biến đổi CT (Discrete Cosine Transform)
Biến đổi cosine rời rạc (DCT) biểu diễn ảnh dưới dạng tổng của các cosine
của các thành phần biên độ và tần số khác nhau của ảnh. 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 về ảnh chỉ tập trung trong một vài hệ số của DCT, trong khi các hệ số còn lại
chỉ chứa rất ít thông tin. Vì lý do này, DCT thường được sử dụng trong các ứng
dụng nén ảnh khác nhau nhờ hiệu suất gần như tối ưu của nó đối với các ảnh có độ
tương quan cao giữa các điểm ảnh lân cận. 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 :
M 1 N 1
Bpq p q Amn cos
m0 n 0
(2m 1) p
2M
cos
(2n 1)q
2N
với
0 p M 1
0 q N 1
1/ M
1/ N
p0
q0
và q
(2 / M ) 0 p M 1
(2 / N ) 0 q N 1
Trong đó: p
GVHD : TS. LÊ THANH PHÚC
Trang 24
ĐỒ ÁN TỐT NGHIỆP
MATLAB XỬ LÝ ẢNH ỨNG DỤNG TRÊN Ô TÔ
Các giá trị Bpq được gọi là các hệ số của biến đổi DCT. 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 :
M 1 N 1
Amn p q Bpq cos
(2m 1) p
p 0 q 0
2M
cos
(2n 1)q
2N
0 m M 1
với
0 n N 1
1/ M
1/ N
p0
q0
và q
(2 / M ) 0 p M 1
(2 / N ) 0 q N 1
Trong đó: p
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 :
p q B pq cos
(2m 1) p
(2n 1)q
cos
2M
2N
Những hàm này đựơc gọi là những hàm cơ sở của DCT. Hệ số DCT Bpq 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:
Cú pháp của hàm như sau : B=dtc2(A,M,N)
A=idtc2(B,M,N)
GVHD : TS. LÊ THANH PHÚC
Trang 25