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ínhVD: Một bức ảnh có 500 hàng và 700 cột gồm nhiều điểm mầu khác
Trang 1GVHD : TS LÊ THANH PHÚC Trang 1
PHẦN A
MỞ ĐẦU
Trang 2GVHD : TS LÊ THANH PHÚC Trang 2
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á
Trang 3GVHD : TS LÊ THANH PHÚC Trang 3
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
Trang 4GVHD : TS LÊ THANH PHÚC Trang 4
PHẦN B
CƠ SỞ LÝ THUYẾT
Trang 5GVHD : TS LÊ THANH PHÚC Trang 5
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
Trang 6GVHD : TS LÊ THANH PHÚC Trang 6
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
1 pixel
Trang 7GVHD : TS LÊ THANH PHÚC Trang 7
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
Trang 8GVHD : TS LÊ THANH PHÚC Trang 8
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
Trang 9GVHD : TS LÊ THANH PHÚC Trang 9
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
Trang 10GVHD : TS LÊ THANH PHÚC Trang 10
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)
Trang 11GVHD : TS LÊ THANH PHÚC Trang 11
Hình 5 : Ảnh RGB
Trang 12GVHD : TS LÊ THANH PHÚC Trang 12
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
Trang 13GVHD : TS LÊ THANH PHÚC Trang 13
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)
Trang 14GVHD : TS LÊ THANH PHÚC Trang 14
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
Trang 15GVHD : TS LÊ THANH PHÚC Trang 15
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
Trang 16GVHD : TS LÊ THANH PHÚC Trang 16
+ 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
Trang 17GVHD : TS LÊ THANH PHÚC Trang 17
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
Trang 18GVHD : TS LÊ THANH PHÚC Trang 18
- Để 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
Trang 19GVHD : TS LÊ THANH PHÚC Trang 19
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 :
Trang 20GVHD : TS LÊ THANH PHÚC Trang 20
- 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 :
Trang 21GVHD : TS LÊ THANH PHÚC Trang 21
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 :
Trang 22
GVHD : TS LÊ THANH PHÚC Trang 22
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
f = zeros(30,30);
f(5:24,13:17) = 1;
imshow(f,'notruesize')
Trang 23GVHD : TS LÊ THANH PHÚC Trang 23
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);
Trang 24GVHD : TS LÊ THANH PHÚC Trang 24
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 :
Trang 25GVHD : TS LÊ THANH PHÚC Trang 25
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 :
Cú pháp của hàm như sau : B=dtc2(A,M,N)
A=idtc2(B,M,N)
Trang 26GVHD : TS LÊ THANH PHÚC Trang 26
III Phép biến đổi Radon
Phép biến đổi Radon được thực hiện bởi hàm Radon trong Matlab , biểu diễn ảnh dưới dạng các hình chiếu của nó dọc theo hướng xác định Hình chiếu của một hàm hai biến f(x,y) là tập hợp các tích phân đường Hàm Radon tính các tích phân đường từ nhiều điểm nguồn dọc theo các đường dẫn song song, gọi là tia chiếu, theo một hướng xác định nào đó Các tia chiếu này nằm cách nhau 1 pixel
Để biểu diễn toàn bộ ảnh , hàm Radon sẽ lấy nhiều hình chiếu song song của ảnh
từ góc quay khác nhau bằng cách xoay các điểm nguồn quanh tâm ảnh
Hình 9 : hình biểu diễn hàm Radon Chẳng hạn, tích phân đường của f(x,y) theo chiều thẳng đứng là phép chiếu của f(x,y) trên trục x , tích phân đường theo chiều nằm ngang là phép chiếu của f(x,y) trên trục y Hình sau mô tả các phép chiều dọc , ngang của hàm hai chiều :
Trang 27GVHD : TS LÊ THANH PHÚC Trang 27
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 Ø , sin Ø + y cos Ø)d y
Trang 28GVHD : TS LÊ THANH PHÚC Trang 28
Hình 11 :Biến đổi Radon của f(x,y) tương ứng với góc quay Ø
Hàm Radon có cú pháp như sau :
[R,Xp] = radon(I,theta)
Trang 29GVHD : TS LÊ THANH PHÚC Trang 29
C ƯƠ G 5 TÁC BIÊ TRO G Ả
I Tách biên ảnh
Tách biên là phương pháp gián đoạn các giá trị cường độ Sự gián đoạn được tính bằng cách sử dụng đạo hàm bậc nhất Đạo hàm bậc nhất lựa chọn trong xử lý ảnh là gradient (độ dốc)
Điểm biên được xác định tăng lên đến các đỉnh trong gradient biên độ ảnh Sau thuật toán tìm đỉnh của các đỉnh này và đặt giá trị 0 vào tất cả các pixel không nằm trên đỉnh Các pixel đỉnh được đặt bằng hai ngưỡng T1 và T2 Các pixel đỉnh lớn hơn T2 được gọi là các pixel biên “mạnh” Các pixel đỉnh nằm giữa T1 và T2 được gọi là các pixel biên “yếu”
Cuối cùng thuật toán thực hiện biên kết nối bằng cách kết hợp các pixel “yếu” với các pixel mạnh
1 Cơ sở của việc tách biên
Biên là tập hợp những pixel (nằm trên đường biên giới giữa 2 vùng) liên kết với nhau Một biên lý tưởng có các thuộc tính của hình sau :
Trang 30GVHD : TS LÊ THANH PHÚC Trang 30
Hình 12 :Mô hình biên lý tưởng
Tuy nhiên trong thực tế các yếu tố như là chất lượng của hệ thống thu nhận hình ảnh, tốc độ lấy mẫu, điều kiện chiếu sáng của mỗi bức ảnh,… ảnh hưởng đến chất lượng của hình ảnh Vì vậy kết quả là biên giống với một đoạn dốc được thể hiện trong hình bên dưới :
Hình 13 : Mô hình biên trong thực tế
Trang 31GVHD : TS LÊ THANH PHÚC Trang 31
Vì vậy chúng ta không bao giờ có một đường biên mảnh (có độ dày một pixel) Thay vào đó, một điểm biên bây giờ là một điểm bất kì chứa trong đoạn dốc và biên là tập hợp những điểm liên thông Độ dày của đường biên được xác định bởi chiều dài của đoạn dốc, khi biên biến đổi từ đầu đến cuối mức xám
độ dày của biên
Hình 14: Mô hình miêu tả độ dày của biên Hình 1.4 cho thấy đạo hàm bậc 1 của biên :
Hình15: Mô hình miêu tả đạo hàm bậc 1 của biên
Từ hình vẽ ta thấy đạo hàm bậc 1 có giá trị 1 tại nơi biên được tách và giá trị 0 tại nơi biên không được tách Vì vậy độ lớn của đạo hàm bậc 1 có thể được sử
Trang 32GVHD : TS LÊ THANH PHÚC Trang 32
dụng để phát hiện ra dấu hiệu của một biên tại một điểm trong hình (nghĩa là xác định điểm đó có nằm trên dốc không)
1.1 Bộ tách biên Sobel
Bộ tách biên Sobel sử dụng mặt lạ Sobel để tính các đạo hàm bậc nhất Gx và
Gy ,nói cách khác đạo hàm tại điểm tâm trong một lân cận được tính theo bộ tách Sobel
Khi đó vị trí (x,y) là pixel biên nếu g T, trong đó T là một ngưỡng được chỉ định
Để tính Gx và Gy ta dựa vào mặt lạ Sobel
1
10
-1
Sobel
)2
()2
)2
()2
7 4 1 9 6 3
2 3 2 1 9 8 7 2
/ 1
2
2
})]
2()2
[(
)]
2()2
G
G
Trang 33GVHD : TS LÊ THANH PHÚC Trang 33
Cú pháp của bộ tách biên Sobel
[g, t] = edge (f, ‘sobel’, T, dir)
Trong đó: f là ảnh đầu vào
g là ảnh logic chứa giá trị 1 tại những nơi biên được tách và chứa giá trị 0 tại những nơi biên không được tách
T =t là ngưỡng được chỉ định (T=10, 20,….)
dir là hướng cần tách biên: ‘ngang’, ‘dọc’ hoặc ‘chéo’
Ví dụ :
Ảnh gốc
Trang 34GVHD : TS LÊ THANH PHÚC Trang 34
Ảnh sau khi tách biên Hình 21 :hình vẽ ví vụ mô tả bộ tách biên Sobel
1.2 Bộ tách biên Canny
Bộ tách biên Canny có các đặc tính cơ bản: tìm biên bằng cách tìm các cực đại địa phương của gradient f(x,y) Gradient được tính toán dùng đạo hàm của bộ lọc Gauss Phương pháp dùng hai ngưỡng để tách biên mạnh và yếu, gộp các biên yếu
ở ngõ ra chỉ khi chúng được kết nối với các biên mạnh Do đó phương pháp này thích hợp để tách các biên yếu thực sự
Có thể tóm tắt phương pháp tách biên bằng bộ tách biên Canny như sau: ảnh được làm trơn bằng cách sử dụng một bộ lọc Gauss với độ lệch chuẩn để làm giảm nhiễu
Xét hàm Gauss:
2 2 2
)
r
e r h
Trang 35GVHD : TS LÊ THANH PHÚC Trang 35
Hàm làm trơn này khi chập với một ảnh sẽ làm mờ ảnh, độ mờ được xác định bởi
Cú pháp của bộ tách biên Canny là:
[g, t] = edge (f, ‘canny’, T, sigma) Trong đó: f là ảnh đưa vào để tách biên
T là một vector, T = [T1 T2]
sigma là độ lệch chuẩn có giá trị mặc định là 1
g là ảnh sau khi tách biên
Ví dụ :
Ảnh gốc
Trang 36GVHD : TS LÊ THANH PHÚC Trang 36
Ảnh sau khi tách biên Hình 22 : hình vẽ mô tả bộ tách biên Canny
1
10
-1-1
Prewitt
Trang 37GVHD : TS LÊ THANH PHÚC Trang 37
)(
)
)(
)
Cú pháp gọi hàm:
[g, t] = edge (f, ‘prewitt’, T, dir)
Tham số này đồng nhất với tham số Sobel Bộ tách Prewitt đơn giản hơn so với
bộ tách biên Sobel nhưng nó dễ sinh ra nhiễu hơn so với bộ tách biên Sobel Việc tính toán các giá trị hoàn toàn giống với bộ tách biên Sobel
1.4 Bộ tách biên Roberts
Bộ tách biên Roberts sử dụng mặt nạ Roberts như hình bên dưới xấp xỉ phương pháp số theo đạo hàm bậc nhất Gx, Gy
0 0
-1
1
0
0 1
-1
Roberts
Trang 38GVHD : TS LÊ THANH PHÚC Trang 38
Cú pháp của bộ tách biên Roberts :
[g, t] = edge (f, ‘roberts’, T, dir)
Tham số này đồng nhất với tham số Sobel Bộ tách Roberts là một trong những
bộ tách biên xưa nhất trong xử lý ảnh số và cũng là bộ tách biên đơn giản nhất
1.5 Bộ tách biên Laplace của hàm Gauss (LoG)
Xét hàm Gauss
2 2
2 2 2
Với những lý do rõ ràng, hàm này gọi là toán tử Laplace của hàm Gauss (LoG)
Vì đạo hàm bậc hai là toán tử tuyến tính chập với một hàm ảnh 2h(r) giống như chập với hàm trơn và sau đó tính kết quả của toán tử Laplace Đây là chìa khoá khái niệm cơ bản của bộ tách LoG Chúng ta chập ảnh bằng 2h(r) biết nó có hai tác động: làm mịn (giảm nhiễu) và nó tính toán toán tử Laplace, làm cong một biên ảnh kép, định vị các biên sau đó tìm các điểm giao zero giữa các biên kép
Cú pháp bộ tách biên Laplace của hàm Gauss :
Trang 39GVHD : TS LÊ THANH PHÚC Trang 39
[g , t ] = edge(f, ‘log’, T, sigma)
Trong đó: sigma là độ lệch chuẩn, giá trị mặc định của sigma là 2, các tham số còn lại giống phần trước Những biên không lớn hơn T ta bỏ qua Nếu T không được cho hoặc rỗng, edge chọn giá trị một cách tự động
Trang 40GVHD : TS LÊ THANH PHÚC Trang 40
C ƯƠ G 6
XỬ LÝ MỜ VÀ NHIỄU TRONG ẢNH
I Xử lý mờ trong ảnh
1 Nguyên nhân của sự mờ
Sự làm mờ hay sự phai nhạt của một ảnh có thể gây ra bởi nhiều tác nhân : + Chuyển động trong khi capture ảnh - bởi camera hoặc khi thời gian lộ sáng nhiều được sử dụng - bởi vật
+ Ngoài vùng tiêu cự của ống kính , sử dụng một ống kính có góc mở rộng , sự hỗn loạn của môi trường , thời gian lộ sáng ngắn … sẽ làm giảm số lượng phôtôn được bắt giữ (captured)
2 Các bộ lọc khôi phục ảnh mờ
Trong xử lý ảnh của Matlab gồm có 4 hàm khôi phục ảnh mờ bao gồm :
+ Sủ dụng bộ lọc Wiener
+ Sử dụng bộ lọc được quy tắc hoá
+ Sử dụng giải thuật Lucy-Richardson
+ Sử dụng giải thuật blind deconvolution
Ta có thể cần phải thi hành nhiều quá trình khử mờ lặp đi lặp lại , mỗi lần thay đổi tham số truyền vào hàm khử mờ cho tới khi thu được một ảnh gần xấp xỉ với ảnh gốc
- Để tránh bị rung động trong ảnh được khử nhiễu, ta có thể sử dụng hàm edgetaper để tiền xử lý ảnh trước khi truyền nó cho hàm khử mờ