I. Cơ sở lý thuyết tách biên
Tách biên là phương pháp thông dụng nhất để tách theo nghĩa gián đoạn trong các
giá trị cường độ. Sự gián đoạn được tách sử dụng đạo hàm bậc nhất và bậc hai.
Đạo hàm bậc nhất lựa chọn trong xử lý ảnh là gradient (độ dốc). Gradient của hàm
2-D f (x, y)được định nghĩa dưới dạng vectơ
20 trang |
Chia sẻ: phuongt97 | Lượt xem: 518 | Lượt tải: 0
Nội dung tài liệu Bài giảng Tách biên ảnh màu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ễ dàng tại mọi điểm trong ảnh bằng phép chập (sử dụng
hàm imfilter) ảnh lần lượt với từng mặt nạ trong hình 1. Sau đó xấp xỉ của đáp ứng
gradient ảnh thu được bằng cách cộng hai trị tuyệt đối của hai ảnh được chập. Các
mặt nạ được nói tới là các mặt nạ Sobel, có thể được tạo ra dùng hàm fspecial.
Gradient được tính toán theo cách được mô tả là một trong những phương pháp
thường dùng để tách biên ảnh xám, đã được thảo luận trong phần I. Quan tâm của
ta lúc này là tính gradient trong không gian màu RGB. Tuy nhiên phương pháp vừa
mới đưa ra có thể ứng dụng được trong không gian 2D nhưng không mở rộng được
cho không gian có chiều lớn hơn. Cách duy nhất để sử dụng nó đối với các ảnh
RGB là tính gradient của mỗi thành phần màu rồi sau đó kết hợp các kết quả.
Không may thay, theo phần sau, điều này không giống như việc tính toán các
không gian vectơ RGB một cách trực tiếp.
Do đó vấn đề là định nghĩa gradient ( biên độ và hướng) của vectơ c được định
nghĩa:
cR (x, y) R(x, y)
c(x, y) c (x, y) G(x, y)
G
cB (x, y) B(x, y)
Theo sau là một trong những cách mà khái niệm gradient được mở rộng với các
hàm vectơ. Lại nói hàm vô hướng f(x,y) gradient là một vectơ mà nó chỉ hướng của
tỉ lệ thay đổi cực đại tại tọa độ (x,y).
Lấy r, g và b là các vectơ đơn vị theo các trục R, G và B của không gian màu RGB
và định nghĩa các vectơ :
R G B
u r g b
x x x
R G B
v r g b
y y y
11
TÁCH BIÊN ẢNH MÀU
Đặt các số g xx , g xy và g yy được định nghĩa như sau:
R 2 G 2 B 2
g u u uT u
xx x x x
2 2 2
R G B
g v v vT v
yy y y y
T R R G G B B
g u v u v
xy x y x y x y
Nhớ rằng R, G và B và các giá trị g là các hàm của x và y. Dùng chú ý này như
được thể hiện trong Di Zenzo [1986] nói rằng hướng của tỉ lệ thay đổi cực đại của
c(x,y) là một hàm (x,y)
1 2g xy
x, y tan 1
2 g xx g yy
và giá trị của tỉ lệ thay đổi (biên độ của gradient) theo các hướng được cho bởi các
phần tử của
Chú ý rằng (x, y) và F (x, y) là các ảnh có cùng kích cỡ với ảnh đầu vào. Các
phần tử (x, y) là các góc tại mỗi điểm gradient được tính va F (x, y) ølà ảnh
gradient .
1/ 2
1
F x, y g xx g yy g xx g yy cos2 2g xy sìn2
2
-1
Vì tan tan( ) nếu 0 là một nghiệm của phương trình tan trước, vì vậy
0 / 2. Thêm vào đó F (x, y) F (x, y) , vì thế F cần được tính chỉ với các
giá trị của trong nửa khoảng [0, ) . Sự thật là phương trình tan-1 cho hai giá trị
lệch nhau 900 nghĩa là phương trình này nghiệm đúng với mỗi cặp (x,y) có hướng
vuông góc nhau. Dọc theo một trong những hướng này F là cực đại, và nó sẽ là cực
tiểu nếu theo hướng còn lại, vì vậy kết quả nhận được bằng cách chọn giá trị lớn
nhất tại mỗi điểm. Đạo hàm của các kết quả này hơi dài, và chúng ta sẽ ít đạt được
mục đích cơ bản của thảo luận hiện tại của chúng tabằng cách chi tiết nó ở đây.
Đạo hàm riêng phần có thể được tính toán bằng toán tử Sobel đã thảo luận trước.
Hàm theo sau sẽ tính gradient của ảnh RGB:
[VG, A, PPG] = colorgrad(f,T)
trong đó f là ảnh RGB, T là ngưỡng tự chọn nằm trong khoảng [0 1] (Mặc định là
0); VG là một vecto gradient RGBF (x, y) ; A là ảnh góc (x, y) tính bằng rad; và
PPG là gradient được tính bằng các lấy tổng các gradient 2D của các không gian
màu riêng biệt. Các gradient này laRx, y, Gx, y, Bx, y trong đó toán tử
được định nghĩa trong phần trước. Tất cả đạo hàm cần để thực hiện phương trình
12
TÁCH BIÊN ẢNH MÀU
trên được thực hiện trong hàm colorgrad sử dụng toán tử Sobel. Các ngõ ra VG và
PPG được chuẩn hóa trong khoảng [0 1] bởi colorgrad và chúng được đặt ngưỡng
để VG(x,y) =0 đối với những giá trị nhỏ hơn hoặc bằng T và VG(x,y) = VG(x,y)
đối với những trường hợp khác. Chú thích tương tự đối với PPG.
III. Thuật toán tách biên ảnh màu
Ảnh RGB
Tính các đạo hàm x và y
của 3 thành phần ảnh với
mặt nạ được chọn
Tính các tham số vector gradient
gxx, gyy, gxy ==> 1,2
Tính F (x, y) maxF (x, y),F (x, y)
1 2
và chuẩn hóa trong khoảng [0,1]
So sánh với ngưỡng T ta
được ảnh tách biên
13
TÁCH BIÊN ẢNH MÀU
IV. Chương trình M_File
IV.1. Hàm colorgrad
function[VG,A,PPG]=colorgrad(f,dec,T)
%COLORGRAD TINH VECTO GRADIENT CUA MOT ANH MAU RGB.
%function[VG,A,PPG]=colorgrad(f,T) tinh vector gradient,VG, va mang goc
%tuong ung,VA, (don vi radians) cua anh RGB f. No cung tinh PPG, gradient
%ket hop tu cac vung mau ma co duoc bang cach cong cac gradient hai chieu
%cua cac vung mau don. Ngo vao T la muc nguong trong tam [0 1]. Neu no duoc
%xac dinh trong bien ngo vao thi gia tri cua VG va PPG duoc lay nguong bang
%cach tao ra VG(x,y)=0 khi gia tri <=T va VG(x,y) =VG(x,y)doi voi gia tri
%khac.Nhung lenh tuong tu cung duoc ung dung cho PPG. Neu T khong xac dinh
%trong doi so vao thi T duoc set = 0. Ca hai gradient ngo ra duoc xac dinh
%trong tam [0 1]
%dec la loai mat na
if (ndims(f)~=3)| (size(f,3)~=3)
error('Input image must be RGB');
end
%Tinh toan vi phan theo phuong x va y cua ba anh thanh phan su dung toan tu
%Mat na
sh=fspecial(dec);
sv=sh';
Rx=imfilter(double(f(:,:,1)),sh,'replicate');
Ry=imfilter(double(f(:,:,1)),sv,'replicate');
Gx=imfilter(double(f(:,:,2)),sh,'replicate');
Gy=imfilter(double(f(:,:,2)),sv,'replicate');
Bx=imfilter(double(f(:,:,3)),sh,'replicate');
By=imfilter(double(f(:,:,3)),sv,'replicate');
%Tinh cac thong so cua vec to gradient
gxx=Rx.^2+ Gx.^2+ Bx.^2;
gyy=Ry.^2+ Gy.^2+ By.^2;
gxy=Rx.*Ry+ Gx.*Gy+ Bx.*By;
A=0.5*(atan(2*gxy./(gxx-gyy+eps)));
G1=0.5*((gxx+gyy)+(gxx-gyy).*cos(2*A)+2*gxy.*sin(2*A));
14
TÁCH BIÊN ẢNH MÀU
%Bay gio lap lai voi goc + pi/2. Sau do chon gia tri cuc dai tai moi diem.
A = A+pi/2;
G2=0.5*((gxx+gyy)+(gxx-gyy).*cos(2*A)+2*gxy.*sin(2*A));
G1=G1.^0.5;
G2=G2.^0.5;
%Tinh VG bang cach lay gia tri cuc dai tai moi diem (x,y)va sau do chuan hoa
% trong khoang [0 1]
VG=mat2gray(max(G1,G2));
%Tinh toan cac gradient tren tung vung mau
RG=sqrt(Rx.^2+Ry.^2);
GG=sqrt(Gx.^2+Gy.^2);
BG=sqrt(Bx.^2+By.^2);
%Thuc hien viec tong hop bang cach cong cac ket qua rieng biet va chuan hoa
%trong khoang [0 1]
PPG=mat2gray(RG+GG+BG);
%Tinh ket qua khi co nguong
if nargin==3
VG=(VG>T).*VG;
PPG=(PPG>T).*PPG;
end
%Ket thuc ham colorgrad
IV.2 Chương trình tách biên ảnh màu
%file thuc hien tach bien anh mau
clc;
close all;
clear all;
f=imread('lacda.jpg');
T=0.5;
figure(1);
subplot(3,1,1);
imshow(f);
str={['RGB image, threshold T=' num2str(T)]};
title(str);
15
TÁCH BIÊN ẢNH MÀU
[VG_S,A_S,PPG_S]=colorgrad(f,'sobel',T);
subplot(3,1,2);
imshow(VG_S);
title('Sobel mask');
hold on;
[VG_P,A_P,PPG_P]=colorgrad(f,'prewitt',T);
subplot(3,1,3);
imshow(VG_P);
title('Prewitt mask');
hold on;
V. Kết quả
Hình 5. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0
16
TÁCH BIÊN ẢNH MÀU
Hình 6. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0.25
Hình 7. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0.5
17
TÁCH BIÊN ẢNH MÀU
Hình 8. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0.75
Hình 9. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 1
18
TÁCH BIÊN ẢNH MÀU
TÀI LIỆU THAM KHẢO
1. Rafael C. Gonzalez, Richard E. Woods, Steven L. Eddins – Digital Image
Processing using Matlab – NXB Prentice Hall 2004.
2. Nguyễn Kim Sách - Xử lý ảnh và Video số – NXBKHKT 1997.
3. Image Processing Toolbox của Matlab Version 6.5
19
Các file đính kèm theo tài liệu này:
- bai_giang_tach_bien_anh_mau.pdf