.Tìm điểm đặc trưng, vector đặc trưng :

Một phần của tài liệu Đồ án tốt nghiệp đại học nghiên cứu thuật toán biến đổi ảnh gabor wavelet và xây dựng ứng dụng nhận dạng ảnh mặt người (Trang 38 - 40)

a) Ảnh đầu vào b) Ảnh thể hiện các điểm đặc trưng

Ta xây dựng một đối tượng “đặc trưng” theo công thức (3.8) sẽ có cấu trúc như sau:

public class Feature

{

protected int W = 4;// 1/2 kích thước của cửa sổ tìm đặc trưng

// Toạ độ x,y của mỗi vector đặc trưng

private int x;

private int y;

// Phần Ri,j(xk,yk) trong công thức (3.8)

private double[] ArrayFeature;

public int X { get { return x; } set { x = value; } } public int Y { get { return y; } set { y = value; } }

public double[] arrayFeature

{

get { return ArrayFeature; }

set { ArrayFeature = value; } }

}

Bây giờ ta sẽ thực hiện tìm kiếm tất cả các vector đặc trưng trên dữ liệu của ảnh đầu vào, ở đây dữ liệu của ảnh đã được chuyển về dạng phức :

public ArrayList SeachFeature(Complex[][,] _Data)

{

//Lưu tất cả các vector đặc trưng của đối tượng ảnh ArrayList ListFeature = new ArrayList();

double max = 0;

Complex[][,] data = new Complex[40][,]; data = _Data;

// Tìm điểm đặc trưng trên mỗi ảnh kết quả sau khi đã thực hiện // phép cuôn ảnh đầu vào với sóng Gabor.

for (int i = 0; i < 40; i++) {

//---Tính trung bình độ xám trên mỗi ảnh cuộn theo (3.7)

double total = 0;

for (int x_ = 0; x_ < 128; x_++) for (int y_ = 0; y_ < 128; y_++) {

total += data[i][x_, y_].Re; }

total = total / (128 * 128);

//-- Dùng cửa sổ W= 9x9 de quyet,bỏ qua viền xung quanh ảnh //---Chỉ quan tâm phần thực vì phần ảo bằng 0

{

// Tìm max trong vùng của sổ

max = 0;

for (int v = -W; v <=W ; v++) for (int u = -W; u <= W; u++)

if (max < data[i][x0 + v, y0 + u].Re) {

max = data[i][x0 + v, y0 + u].Re; }

// Xét điều kiện là điểm đặc trưng theo (3.6)và (3.7)

if ((data[i][x0, y0].Re == max) &&

(data[i][x0, y0].Re > total)) {

// Bổ xung thêm 1 điểm đặc trưng vào danh sách

Feature _feature = new Feature(); double[] I = new double[40];

// Lấy độ xám ở 40 ảnh cuộn tai cùng toạ độ for (int v = 0; v < 40; v++)

{

I[v] = data[v][x0, y0].Re; } _feature.x = y0; _feature.y = x0; _feature.ArrayFeature = I; ListFeature.Add(_feature); } } } return ListFeature; }

Một phần của tài liệu Đồ án tốt nghiệp đại học nghiên cứu thuật toán biến đổi ảnh gabor wavelet và xây dựng ứng dụng nhận dạng ảnh mặt người (Trang 38 - 40)

Tải bản đầy đủ (DOC)

(68 trang)
w