Iris Detection

by 20tmro in Craft > Digital Graphics

3876 Views, 31 Favorites, 0 Comments

Iris Detection

005_1_1.bmp
3.PNG

This project will crop the iris from an image.

Add a Video With an Eye Image

1.PNG

Add "From Multimedia File" block in Simulink and convert it to double type.

Find Pupil

1.PNG
2.PNG

Add in Simulink diagram 3 "Interpreted Matlab Function" Blocks.

The first one will find the x coordinate of the centre of pupil.

function [ center1] = findCentre1( gray_image )
[centers1, radii1] = imfindcircles(gray_image,[35 45],'ObjectPolarity','dark', ... 'Sensitivity',1);

center1=centers1(1,1);

end

The second block will find the y coordinate of the centre of pupil.

function [center2] = findCentre2( gray_image )
[centers1, radii1] = imfindcircles(gray_image,[35 45],'ObjectPolarity','dark', ... 'Sensitivity',1);

center2=centers1(1,2);

end

The last block will find the radius of pupil.

function [radii1 ] = findRadii1( gray_image )
[centers1, radii1] = imfindcircles(gray_image,[35 45],'ObjectPolarity','dark', ... 'Sensitivity',1);

radii1=radii1(1);

end

Then, add a mux block with 3 entries and a "Draw shapes " block (select circle as shape in block parameters). View the image with a "Video Viewer" block.

Find Iris

3.PNG
4.PNG
5.PNG
6.PNG

Add a user-defined system block. Here we will create a sobel edge detector .

Add in Simulink diagram 3 "Interpreted Matlab Function" Blocks.

The first one will find the x coordinate of the centre of iris.

function [ center3] = findCentre3( gray_image )
[centers2, radii2] = imfindcircles(gray_image,[99 110], 'ObjectPolarity','dark', ... 'Sensitivity',1,'Method','twostage');

center3=centers2(1,1);

end

The second block will find the y coordinate of the centre of iris.

function [ center4] = findCentre4( gray_image )
[centers2, radii2] = imfindcircles(gray_image,[99 110], 'ObjectPolarity','dark', ... 'Sensitivity',1,'Method','twostage');

center4=centers2(1,2);

end

The last block will find the radius of iris.

function [radii2 ] = findRadii2( gray_image )

[centers2, radii2] = imfindcircles(gray_image,[99 110], 'ObjectPolarity','dark', ... 'Sensitivity',1,'Method','twostage');

radii2=radii2(1); end

Then, add a mux block with 3 entries and a "Draw shapes " block (select circle as shape in block parameters). View the image with a "Video Viewer" block.

Create a Mask for Eyelid

7.PNG
8.PNG
4.PNG

Copy the user-define subsystem and paste it in the diagram. Change the constant to 3.

Convert the image to double type.

Crop Iris

9.PNG
3.PNG

Add 2 Matlab Function Blocks.

First:

function [Mask_row,Mask_column]= fcn(Mask,centre_x1,centre_y1,r1)
[row,column]=size(Mask);

row_mask=1;

column_mask=1;

Mask_r=zeros(row,column);

Mask_c=zeros(row,column);

for i=1:row

for j=1:column

if (centre_x1-i)^2+(centre_y1-j)^2-(r1+10)^2<=0

Mask(i,j)=1;

end

end

end

for i=1:row

for j=1:column

if Mask(i,j)==0;

Mask_r(row_mask)=i;

Mask_c(column_mask)=j;

row_mask=row_mask+1;

column_mask=column_mask+1;

end

end

end

Mask_row=Mask_r;

Mask_column=Mask_c;

end

Second:

function y = crop_iris(Image,centre_x1,centre_y1,r1,centre_x2,centre_y2,r2,Mask_row,Mask_column)
[row,column]=size(Image);

row_mask=1;

column_mask=1;

max_row=(max(max(Mask_row))+min(min(Mask_row)))*0.66;

for i=1:row

for j=1:column

if (centre_x1-i)^2+(centre_y1-j)^2-r1^2>=0

Image(i,j)=1;

end

if (centre_x2-i)^2+(centre_y2-j)^2-r2^2<=0

Image(i,j)=1;

end

if i==Mask_row(row_mask) && j==Mask_column(column_mask)

Image(i,j)=1;

row_mask=row_mask+1;

column_mask=column_mask+1;

end

end

end

y = Image;