核心点检测 [英] Core point detection
本文介绍了核心点检测的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
你好朋友,
我正在做一个指纹匹配项目。
为此我需要找到核心点。
我使用的方法是庞加莱指数,但我没有得到输出,我不知道原因。
请帮忙...
Hello friends,
I am doing a project of fingerprint matching.
For that I need to find core point.
The method which I have used is poincare index, but I am not getting the output and I dont know the reason.
please help...
Double PIby2=Math.PI/2;
Double[,] Poincare = new Double[blockW - 1, blockH - 1];
for (x = 1; x < blockW - 1; x++)
{
for (y = 1; y < blockH - 1; y++)
{
Double x1 = thetaD[x, y - 1] - thetaD[x + 1, y - 1];
Double x2=thetaD[x - 1, y - 1] - thetaD[x, y - 1];
Double x3=thetaD[x - 1, y] - thetaD[x - 1, y - 1];
Double x4=thetaD[x - 1, y + 1] - thetaD[x - 1, y];
Double x5=thetaD[x, y + 1] - thetaD[x - 1, y + 1];
Double x6=thetaD[x + 1, y + 1] - thetaD[x, y + 1];
Double x7=thetaD[x + 1, y] - thetaD[x + 1, y + 1];
Double x8=thetaD[x + 1, y - 1] - thetaD[x + 1, y];
if(x1<PIby2) x1=x1;
else if(x1< -PIby2) x1=Math.PI+x1;
else x1=Math.PI-x1;
if(x2<PIby2) x2=x2;
else if(x2<-PIby2) x2=Math.PI+x2;
else x2=Math.PI-x2;
if(x3<PIby2) x3=x3;
else if(x3<-PIby2) x3=Math.PI+x3;
else x3=Math.PI-x3;
if(x4<PIby2) x4=x4;
else if(x4<-PIby2) x4=Math.PI+x4;
else x4=Math.PI-x4;
if(x5<PIby2) x5=x5;
else if(x5<-PIby2) x5=Math.PI+x5;
else x5=Math.PI-x5;
if(x6<PIby2) x6=x6;
else if(x6<-PIby2) x6=Math.PI+x6;
else x6=Math.PI-x6;
if(x7<PIby2) x7=x7;
else if(x7<-PIby2) x7=Math.PI+x7;
else x7=Math.PI-x7;
if(x8<PIby2) x8=x8;
else if(x8<-PIby2) x8=Math.PI+x8;
else x8=Math.PI-x8;
Poincare[x,y]=Math.Abs((x1+x2+x3+x4+x5+x6+x7+x8)/(2*Math.PI));
}
}
for (x = 1; x < blockW - 1; x++)
{
for (y = 1; y < blockH - 1; y++)
{
if (Poincare[x, y] < 0.45 || Poincare[x, y] > 0.51)
{
}
else
{
image.SetPixel(x , y, Color.Blue);
}
}
}
}
推荐答案
这个网站上有一篇关于指纹识别的文章:
用于指纹验证的C#框架 [ ^ ]
也许它可以帮助您解决问题。
< br $>
Valery。
Hi,
There is an article about fingerprint recognition on this website:
A Framework in C# for Fingerprint Verification[^]
Maybe it could help you solving your issues.
Valery.
这些代码
These pieces of code
if(x1<PIby2) x1=x1;
else if(x1< -PIby2) x1=Math.PI+x1;
else x1=Math.PI-x1;
我怀疑你想要每个角度+ / - PI / 2。那将是
I suspect you want each angle within +/- PI/2. That would be
if(x1>PIby2) x1=x1-Math.PI;
else if(x1< -PIby2) x1=Math.PI+x1;
另外,最好有一个数组而不是八个变量,所以你不必写八次相同的代码!
我不知道庞加莱指数,但这看起来像是一个错误,它会使结果无效。
Also, it would be better to have an array rather than eight variables so you didn't have to write the same code eight times!
I do not know the Poincaré index but that looks like a mistake and it will invalidate the results.
这篇关于核心点检测的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文