Bài giảng Tách biên ảnh màu

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ơ

 

pdf20 trang | Chia sẻ: phuongt97 | Lượt xem: 518 | Lượt tải: 0download
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 laRx, y, Gx, y, Bx, 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)  maxF (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:

  • pdfbai_giang_tach_bien_anh_mau.pdf
Tài liệu liên quan