核心点检测 [英] Core point detection

查看:63
本文介绍了核心点检测的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好朋友,



我正在做一个指纹匹配项目。

为此我需要找到核心点。

我使用的方法是庞加莱指数,但我没有得到输出,我不知道原因。

请帮忙...





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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆