thuật toán sử dụng mặt nạ để làm rõ đường biên trong ảnh - Pdf 12


MỤC LỤC

ĐỒ ÁN MÔN HỌC XỬ LÍ ẢNH
Đề bài(9):Tìm hiểu các thuật toán sử dụng mặt nạ để làm rõ đường biên trong
ảnh.
I.Phát biểu bài toán
Biên là một vấn đề quan trọng trong trích chọn đặc điểm nhằm tiến tới hiểu
ảnh. Cho đến nay chưa có định nghĩa chính xác về biên, trong mỗi ứng dụng người
ta đưa ra các độ đo khác nhau về biên, một trong các độ đo đó là độ đo về sự thay
đổi đột ngột về cấp xám.
Một điểm ảnh có thể coi là điểm biên nếu ở đó có sự thay đổi đột ngột về mức
xám.Tập hợp các điểm biên tạo thành biên hay đường bao của ảnh.
Ví dụ: Đối với ảnh đen trắng, một điểm được gọi là điểm biên nếu nó là điểm
đen có ít nhất một điểm trắng bên cạnh.
1
Định nghĩa toán học của biên ở trên là cơ sở cho các kỹ thuật phát hiện biên.
Điều quan trọng là sự biến thiên giữa các điểm ảnh là nhỏ, trong khi đó biến thiên
độ sáng của điểm biên (khi qua biên) lại khá lớn. Xuất phát từ cơ sở này người ta
thường sử dụng 2 phương pháp phát hiện biên sau:
• Phương pháp phát hiện biên trực tiếp: phương pháp này nhằm làm nổi
đường biên dựa vào biến thiên về giá trị độ sáng của điểm ảnh. Kỹ thuật chủ
yếu là dùng kỹ thuật đạo hàm. Nếu lấy đạo hàm bậc nhất của ảnh ta có
phương pháp Gradient, nếu lấy đạo hàm bậc 2 ta có kỹ thuật Laplace.
• Phương pháp gián tiếp: Nếu bằng cách nào đấy ta phân ảnh thành các vùng
thì đường phân ranh giữa các vùng đó chính là biên.
Trong phạm vi bài viết chỉ tìm hiểu phương pháp thứ nhất:phương pháp phát
hiện biên trực tiếp theo 2 phương pháp Gradient và Laplace.
II.Hướng giải quyết bài toán
Từ định nghĩa về điểm biên và biên đã nêu ở trên người ta thường sử dụng hai
phương pháp: phát hiện biên trực tiếp(sẽ được trình bày trong bài viết này) và

( ) ( )
( ) ( )







−+≈


−+≈


yxfyxf
y
f
yxfyxf
x
f
,1,
,,1
Biên độ của Gradient được tính tại điểm (i,j) kí hiệu là g(i,j)được tính theo công
thức:
),(),(),(
22
0
jigjigAjig
yx

-1 0 1
-1 -2 -1
H
y
= 0 0 0
1 2 1
1.1.3Toán tử Prewitt sử dụng 2 mặt nạ
-1 0 1
H
x
= -1 0 1
-1 0 1
-1 -1 -1
H
y
= 0 0 0
1 1 1
Nhận xét:
Các toán tử Gradient làm việc khá tốt khi độ sáng thay đổi khá rõ nét khi qua
biên .Khi sự thay đổi độ sáng chậm miền chuyển tiếp trải rộng thì phương pháp
Gradient tỏ ra kém hiệu quả.
Trong 3 toán tử được thực hiện ở trên, toán tử Prewitt đơn giản hơn Sobel
nhưng lại nhạy cảm với nhiễu hơn, một vấn đề quan trong khi giải quyết với đạo
hàm. Toán tử Robert đơn giản nhất nhưng không tốt hơn 2 toán tử trên vì nó nhạy
cảm với nhiễu nhất.
Mặt khác, toán tử Robert (mask cỡ 2*2) rất khó được thi hành vì không có trung
tâm rõ ràng.
Còn đối với Sobel và Prewitt thì sử dụng mask 3*3.
Prewitt: Gx = z7 + z8 + z9) - (z1+ z2 + z3)
Gy = (z3 + z6 + z9) – (z1 + z4 + z7)

1.2 Toán tử La bàn: sử dụng 8 mặt nạ theo 8 hướng 0
0
, 45
0
, 90
0
, 135
0
, 180
0
, 225
0
,
270
0
, 315
0.
Có nhiều toán tử la bàn khác nhau ở đây chỉ xét toán tử tiêu biểu Kirsh sử
dụng 8 mặt nạ:
5 5 -3 5 5 5
H
1
= 5 0 -3 H
2
= -3 0 -3
-3 -3 -3 -3 -3 -3
-3 5 5 -3 -3 5
H
3
= -3 0 5 H

),(),1(
2
2
yxfyxf
xx
f
xx
f
−+













=



[ ] [ ]
),1(),(2),1(
),1(),(),(),1(
yxfyxfyxf

=


6
[ ] [ ]
)1,(),(2)1,(
)1,(),(),()1,(
−+−+≈
−−−−+≈
yxfyxfyxf
yxfyxfyxfyxf
Từ đó toán tử Laplace được tính:

2
f= f(x+1,y) + f(x,y+1) - 4f(x,y) + f(x-1,y) + f(x,y-1)
=>Mặt nạ :

010
141
010
H










=











−−

=
121
242
121
H
111
181
111
H
010
141
010
H
321
III.Thuật toán
1.Gradient

int w = bmp.Width;
int[,] result = new int[h, w];
int Gx, Gy;
double alpha;
int threshold;

for (int i = 1; i < h - 1; i++)
{
for (int j = 1; j < w - 1; j++)
{
Gx = M[i - 1, j + 1] + M[i, j + 1] + M[i + 1, j + 1];
Gx -= M[i - 1, j - 1] + M[i, j - 1] + M[i + 1, j - 1];
Gy = M[i + 1, j - 1] + M[i + 1, j] + M[i + 1, j + 1];
Gy -= M[i - 1, j - 1] + M[i - 1, j] + M[i - 1, j + 1];
alpha = Math.Sqrt(Gx * Gx + Gy * Gy);
if (alpha > threshold)
result[i, j] = 255;
else
result[i, j] = 0;
8
}
}
1.3:Gradient sử dụng toán tử Robert
int[,] M ; Bitmap bmp;
int h = bmp.Height;
int w = bmp.Width;
int[,] result = new int[h, w];
int Gx, Gy;
double alpha;
int threshold;


A[0] -= 3 * M[i, j - 1] + 3 * M[i, j + 1] + 3 * M[i + 1, j - 1] +
9
3 * M[i + 1, j] + 3 * M[i + 1, j + 1];

A[1] = -3 * M[i - 1, j - 1] + 5 * M[i - 1, j] + 5 * M[i - 1, j + 1];
A[1] -= 3 * M[i, j - 1] - 5 * M[i, j + 1] + 3 * M[i + 1, j - 1] +
3 * M[i + 1, j] + 3 * M[i + 1, j + 1];
A[2] = -3 * M[i - 1, j - 1] - 3 * M[i - 1, j] + 5 * M[i - 1, j + 1];
A[2] -= 3 * M[i, j - 1] - 5 * M[i, j + 1] + 3 * M[i + 1, j - 1] +
3 * M[i + 1, j] - 5 * M[i + 1, j + 1];
A[3] = -3 * M[i - 1, j - 1] - 3 * M[i - 1, j] - 3 * M[i - 1, j + 1];
A[3] -= 3 * M[i, j - 1] - 5 * M[i, j + 1] + 3 * M[i + 1, j - 1] –
5 * M[i + 1, j] - 5 * M[i + 1, j + 1];
A[4] = -3 * M[i - 1, j - 1] - 3 * M[i - 1, j] - 3 * M[i - 1, j + 1];
A[4] -= 3 * M[i, j - 1] + 3 * M[i, j + 1] - 5 * M[i + 1, j - 1] –
5 * M[i + 1, j] - 5 * M[i + 1, j + 1];
A[5] = -3 * M[i - 1, j - 1] - 3 * M[i - 1, j] - 3 * M[i - 1, j + 1];

A[5] -= -5 * M[i, j - 1] + 3 * M[i, j + 1] - 5 * M[i + 1, j - 1] –
5 * M[i + 1, j] + 3 * M[i + 1, j + 1];
A[6] = 5 * M[i - 1, j - 1] - 3 * M[i - 1, j] - 3 * M[i - 1, j + 1];
A[6] -= -5 * M[i, j - 1] + 3 * M[i, j + 1] - 5 * M[i + 1, j - 1] +
3 * M[i + 1, j] + 3 * M[i + 1, j + 1];
A[7] = 5 * M[i - 1, j - 1] + 5 * M[i - 1, j] - 3 * M[i - 1, j + 1];
A[7] -= -5 * M[i, j - 1] + 3 * M[i, j + 1] + 3 * M[i + 1, j - 1] +
3 * M[i + 1, j] + 3 * M[i + 1, j + 1];
MaxA = Math.Abs(A[0]);
for (int jj = 0; jj < 8; jj++)
{

result[i, j] = 255;
else
result[i, j] = 0; } }
IV.Chương trình Demo
11
Chức năng chính:-Tách biên của ảnh theo nhiều phương pháp khác nhau.
-Lưu ảnh sau khi đã tách biên.
IV.Kết luận
Các phương pháp phát hiện biên sử dụng các mặt nạ tương đối hiệu quả,khả
năng tách biên khá tốt.Tuy nhiên tùy vào từng ảnh sáng tối khác nhau mà lựa chọn
phương pháp, mặt nạ cho hiệu quả ngoài ra giá trị ngưỡng để phân biệt vùng biên
và vùng ảnh cũng rất quan trọng.Vì vậy việc lựa chọn giá trị biên hay mặt nạ nào là
hết sức quan trọng ảnh hưởng trực tiếp đến việc phát hiện biên của ảnh.
12


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status