필터 지우기
필터 지우기

How to make retinal identification fast?

조회 수: 2 (최근 30일)
Sidra Aleem
Sidra Aleem 2017년 7월 21일
댓글: Jan 2017년 7월 21일
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
Jan
Jan 2017년 7월 21일
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.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Recognition, Object Detection, and Semantic Segmentation에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

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

Start Hunting!