How to make retinal identification fast?

2 visualizzazioni (ultimi 30 giorni)
Sidra Aleem
Sidra Aleem il 21 Lug 2017
Commentato: Jan il 21 Lug 2017
I have a project that does biometric identification of a person on the basis of retina. The identification accuracy is good. However, unlike the real systems as I increase the size of my data set the matching process takes so long and becomes so slow. Currently my data set has 120 images.
Features are extracted using crossing number technique. And for matching L2 norm is used as a similaity between query image feature matrix and feature matrix of images in database.
Feature matrix is formed by finding distance and angle between a candidate feature point and its four nearest neighbours. Feature matrix dimension is N x 8. where N is number of features. Please suggest me how can I reduce the matching time? And make identification process speed to match with the real identification systems. Below is the code for feature extraction.
Below is the code for matching process. It is implemented using following paper. https://www.researchgate.net/publication/241635834_Retinal_recognition_Personal_identification_using_blood_vessels
It comapres each row of test image(t) with all the rows of feature matrix stored in databse. The variable "count repitition" keeps the record of number of matches with images in databse. After all the images are compared the max of count repitition is taken. And that is the match. Below is the code for matching process. It comapres each row of test image(t) with all the rows of feature matrix stored in databse. The variable "count repitition" keeps the record of number of matches with images in databse. After all the images are compared the max of count repitition is taken. And that is the match.
%%Matching Process
count_repetition = zeros(1,size(S.Data,2)); %
for t = 1: size( Test_image_Featur_Matrix ,1) % Number of rows in
feature matrix of test
image
dita =[];
n = 1;
for i = 1: size(S.Data,2)
for j = 1:size(S.Data(i).Feature_Matrix,2)
for m = 1:size(S.Data(i).Feature_Matrix(j).Img,1) %Image in Database
dita(n,1) = norm (Test_image_Featur_Matrix(t,:)- S.Data(i).Feature_Matrix(j).Img(m,:)); % Distance between
row of test_image with every row of image
dita(n,2) = i; %Person
dita(n,3) = j; %image_number of specific person
n = n+1;
end
end
end
val = min(dita(:,1)); %Row with minimum Euclidean distance
if val < 20
in = find(dita(:,1) == val);
% Threshold 1 will be on value. That if the value is greater
% than this, then don't count it.
Result(t).distance = dita(in(1),1); %Minimum_distance
Result(t).Person_Num = dita(in(1),2); %Person Number
Result(t).Image_Number = dita(in(1),3); %Image_Number
count_repetition(Result(t).Person_Num) = count_repetition(Result(t).Person_Num) + 1;
end
end
Matched = max(count_repetition);
if Matched>(size(Test_image_Featur_Matrix,1)/2)
ind_match = find (count_repetition == Matched);
text_fin = ['Authorized Person。 Person is: ' S.Data(ind_match).Name ];
else
text_fin = 'No Match。Unauthorized Person。';
end
set(handles.text4,'string',text_fin);
end
How to make retinal identification fast?.
  1 Commento
Jan
Jan il 21 Lug 2017
Any improvement of speed start with identifying the bottleneck using the profiler. It is not worth to optimize code, which uses 1% of the computing time only.
Pre-allocate the output. Letting an array grow iteratively consumes a lot of resources. Search for "pre-allocate" in the forum.

Accedi per commentare.

Risposte (0)

Categorie

Scopri di più su Recognition, Object Detection, and Semantic Segmentation in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!