Professional Documents
Culture Documents
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
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:
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):
Để 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
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 > ; = ngưỡng ? 0 : 1;
}
}
vietnb@hcmute.edu.vn 13
Image Edge Detection
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:
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:
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
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
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