You are on page 1of 25

HCMC University of Technology and Education

Faculty of Electrical & Electronic Engineering

Image Edge Detection

vietnb@hcmute.edu.vn 1
KHÁI NIỆM

Tại sao ta lại cần phải có bài toán nhận dạng đường biên này?
=> Biên là phần hình ảnh có thông tin quan trọng giúp ta có thể
phân tích và nhận dạng hình ảnh!
vietnb@hcmute.edu.vn 2
KHÁI NIỆM
Biên: là đường viền/đường bao ngăn cách khu vực ảnh liền
kề có đặc điểm tương đối khác biệt, theo một số yếu tố nhất
định, một trong số đó là sự thay đổi đột ngột về mức xám.
Biên: là tập hợp của các điểm biên, là các điểm có sự thay
đổi đột ngột về mức xám (hoặc màu đối với ảnh màu). Ví dụ
trong ảnh nhị phân, một điểm đen được coi là điểm biên nếu
lân cận nó là có ít nhất một điểm trắng.
Dựa theo mức độ biến đổi của đường biên ta có các dạng
đường biên sau:
vietnb@hcmute.edu.vn 3
KHÁI NIỆM

vietnb@hcmute.edu.vn 4
CÁC PHƯƠNG PHÁP PHÁT HIỆN BIÊN
– Phương pháp phát hiện biên trực tiếp: Dựa vào sự biến
thiên mức xám của ảnh, sử dụng phương pháp chủ yếu là
đạo hàm. Ở đây có 2 phương pháp chính là: Gradient (đạo
hàm bậc nhất) và Laplace (đạo hàm bậc hai).
– Phương pháp phát hiện biên gián tiếp: Nếu bằng cách
nào đó ta phân được ảnh thành các vùng thì ranh giới giữa
các vùng đó gọi là biên, việc phân vùng ảnh thường phụ
thuộc vào kết cấu bề mặt (texture) của ảnh.

vietnb@hcmute.edu.vn 5
QUY TRÌNH PHÁT HIỆN BIÊN

Bước 1: Lọc nhiễu do ảnh ghi vào thường có nhiễu.


Bước 2: Làm nổi biên sử dụng các toán tử phát hiện biên.
Bước 3: Định vị biên (cần loại bỏ biên giả).
Bước 4: Liên kết và trích chọn biên.

vietnb@hcmute.edu.vn 6
PHƯƠNG PHÁP GRADIENT
Gradient là một vector có các thành phần biểu thị tốc độ
thay đổi giá trị của điểm ảnh theo 2 hướng x và y, hay có
thể nói là nó đại diện cho sự thay đổi về hướng và độ lớn
của một vùng ảnh.
Các thành phần của gradient được tính như sau:

Như vậy ta có ta có vectorvietnb@hcmute.edu.vn


gradient là G(f’x,f’y). 7
PHƯƠNG PHÁP GRADIENT
Với dx, dy lần lượt là khoảng cách giữa 2 điểm lân cận theo
chiều x và chiều y. (có thể xem dx, dy là số lượng điểm ảnh
giữa 2 điểm.)
Thực tế ta chọn dx = dy = 1 (tính lân cận tức là điểm ngay
cạnh nó, nên có thể coi khoảng cách của chúng là 1) tại điểm
có tọa độ là (i,j), thay vào công thức trên ta được:

vietnb@hcmute.edu.vn 8
PHƯƠNG PHÁP GRADIENT
Do tính chất phức tạp trong tính toán khi áp dụng phương
pháp Gradient trong xử lý ảnh, người ta sử dụng kỹ thuật
Gradient dùng cặp mặt nạ Hx, Hy trực giao (theo 2 hướng
vuông góc).
Nếu định nghĩa gx(f’x), gy(f’y) là Gradient (vector gradient
thành G(gx,gy)) theo hai hướng x, y tướng ứng thì biên độ
(tức độ lớn) g(i,j) và hướng của biên tại điểm (i,j) được tính
như sau:

vietnb@hcmute.edu.vn 9
PHƯƠNG PHÁP GRADIENT
Biên độ (tức độ lớn) G(i,j):

G(i, j )  G (i, j )  G (i, j )


2
x
2
y

Để giảm độ phức tạp tính toán, tính gần đúng như sau:
G (i, j )  G (i, j )  G (i, j )
x y

Hướng của biên tại điểm (i,j) được tính như sau:
 G (i, j ) 
 (i, j )  arctan  x

 G (i, j ) 
y

 arctanG (i, j ), G (i, j )


x y
vietnb@hcmute.edu.vn 10
CHỌN MẶT NẠ/TOÁN TỬ – EDGE
OPERATORS
Robert Operator (Robert Cross)

Sobel Operator

Prewitt Operator

vietnb@hcmute.edu.vn 11
THUẬT TOÁN
Đầu vào:
– Ma trận ảnh.
– Ma trận toán tử/mặt nạ.
– Ngưỡng
Đầu ra:
– Ma trận ảnh gồm các đường biên.

vietnb@hcmute.edu.vn 12
THUẬT TOÁN
Giải thuật
FOR (các điểm của ảnh : I(i,j))
{
if (nếu là điểm nằm trên đường viền)
I(i,j) = 0;
else
{
- Tính Gx (g1) : Nhân chập với Hx
- Tính Gy (g2) : Nhân chập với Hy
- Tính A = |Gx| + |Gy|
- I(i,j) = A &gt ; = ngưỡng ? 0 : 1;
}
}
vietnb@hcmute.edu.vn 13
Image Edge Detection

Using the convolution method to calculate for each pixel in image


vietnb@hcmute.edu.vn 14
Image Edge Detection
Example: The following image is given
Use the following ,masks to estimate the magnitude and
orientation of the local gradient at all pixel positions of the
image except the boundary pixels

C=
0 1 2 0 4 5
0 1 2 0 4 5
0 2 0 4 5 4
0 2 5 4 6 6
0 0 6 6 5 6
5 4 6 5 4 5
vietnb@hcmute.edu.vn 15
Image Edge Detection
Example: The following image is given
Use the following ,masks to estimate the magnitude and
orientation of the local gradient at all pixel positions of the
image except the boundary pixels

vietnb@hcmute.edu.vn 16
Image Edge Detection
Example:

Gx1,1 = 0 Gx1,2 =1 Gx1,3 =7 Gx 1,4=5


Gy1,1 = 6 Gy1,2 =-1 Gy1,3 =11 Gy1,4 = 15
Gx2,1 = 5 Gx2,2 = 11 Gx2,3 = 13 Gx2,4 = 9
Gy2,1 = 7 Gy2,2 = 5 Gy2,3 = 13 Gy2,4 = 7
Gx3,1 = 2 Gx3,2 =12 Gx3,3 =10 Gx3,4 =4
Gy3,1 =16 Gy3,2 =12 Gy3,3 =6 Gy3,4 =4
Gx4,1 =10 Gx4,2 =5 Gx4,3 =1 Gx4,4 =-4
Gy4,2 =18 Gy4,2 =15 Gy4,3 =-3 Gy4,4 =2

vietnb@hcmute.edu.vn 17
Image Edge Detection
Example: The following image is given
Use the following ,masks to estimate the magnitude and
orientation of the local gradient at all pixel positions of the
image except the boundary pixels

C=
0 1 2 0 4 5
0 0 1 1 4 5
0 2 0 4 5 4
0 2 5 4 6 6
0 0 6 6 5 6
5 4 6 5 4 5

vietnb@hcmute.edu.vn 18
Image Edge Detection
Example:

Gx1,1 = Gx1,2 = Gx1,3 = Gx 1,4=


Gy1,1 = Gy1,2 =- Gy1,3 = Gy1,4 =
Gx2,1 = Gx2,2 = Gx2,3 = Gx2,4 =
Gy2,1 = Gy2,2 = Gy2,3 = Gy2,4 =
Gx3,1 = Gx3,2 = Gx3,3 = Gx3,4 =
Gy3,1 = Gy3,2 = Gy3,3 = Gy3,4 =
Gx4,1 = Gx4,2 = Gx4,3 = Gx4,4 =
Gy4,2 = Gy4,2 = Gy4,3 = Gy4,4 =

vietnb@hcmute.edu.vn 19
Image Edge Detection
Edge codes in Matlab
%%%%%EDGE DETECTION BY SOBEL METHOD%%%%%
close all;
clc;
img=imread('a.jpg'); B(i,j)=sqrt(Gx.^2+Gy.^2);
B=rgb2gray(img); end
subplot(2,2,1) end
imshow(B) subplot(2,2,2)
pause(2) imshow(B); title('Sobel gradient');
I=double(B); pause(2)
%Define a threshold value
for i=1:size(I,1)-2
for j=1:size(I,2)-2 Thresh=100;
%Sobel mask for x-direction: B=max(B,Thresh);
Gx=((2*I(i+2,j+1)+I(i+2,j) B(B==round(Thresh))=0;
+I(i+2,j+2))-(2*I(i,j+1)+I(i,j)+I(i,j+2))); B=uint8(B);
%Sobel mask for y-direction: subplot(2,2,3)
Gy=((2*I(i+1,j+2)+I(i,j+2)+I(i+2,j+2)) imshow(~B);title('Edge detected Image’);
-(2*I(i+1,j)+I(i,j)+I(i+2,j))); Theta=atan2(Gx,Gy); % edge direction

vietnb@hcmute.edu.vn 20
Image Edge Detection

Edge function in Matlab

clc;
%% create a new figure to show the image .
newImg = imread('Water lilies.jpg');
figure(1);
%% show the loaded image.
imshow(newImg);
figure(2);
%% convert RGB to gray scale.
I = rgb2gray(newImg)
imshow(I);
%% apply sobel filter.
size(I)
BW = edge(I,'sobel',0.1) ;
imshow(BW); vietnb@hcmute.edu.vn 21
Image Segmentation and Edge Detection

1. Phân đoạn dùng ngưỡng


2. Phân đoạn ảnh dung Otsu
3. Dò biên ảnh dùng phương pháp mặt nạ (Sobel, Prewitt,
Robert, …
4. Phương pháp tính toán Gradient, hướng, biên độ, tính ảnh
ngõ ra.

vietnb@hcmute.edu.vn 22
Giả sử ảnh vào f(x,y) như Hình 1.
a. Xác định ngưỡng T để phân đoạn ảnh bằng
phương pháp Otsu
b. Vẽ lưu đồ giải thuật cho chương trình tính dùng
phương pháp Otsu
c. Viết chương trình dựa vào lưu đồ giải thuật câu (b)
dùng Matlab

1 1 1 1 1
 
1 0 2 0 1
f  1 3 3 3 1
 
1 0 2 0 1
1 1
 1 1 1

vietnb@hcmute.edu.vn 23
vietnb@hcmute.edu.vn 24
vietnb@hcmute.edu.vn 25

You might also like