討論區快速選單
知識庫快速選單
虛擬社群公民行為研究 程式設計俱樂部Facebook粉絲團
[ 回上頁 ] [ 討論區發言規則 ]
影像辨識與比對
更改我的閱讀文章字型大小
作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/5/8 下午 01:24:38
最近在做掌紋辨識的專題
可在圖片處理完了之後
常會發生同一個人的手掌
因為角度或位置問題
無法辨識比對
想請問有什麼樣好的方法嗎?

請大家幫忙,謝謝^^"
作者 : jonay(jonay) VC++優秀好手C++ Builder優秀好手C++優秀好手貼文超過500則
[ 貼文 887 | 人氣 8025 | 評價 5030 | 評價/貼文 5.67 | 送出評價 30 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人stutfish註記此篇回應為很有道理 2006/5/8 下午 04:37:18
先將圖片二值化,找出最租的那根
不是你的大姆指,而是你的...手腕
接著再將圖形適度的旋轉角度以符合比對率

小心旋轉時,要計算軸心位置
作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/5/16 上午 02:10:05
恩~可是我發現用掃描器手腕圖形很容易有偏差ㄝ
我目前用中指下去做~呵
作者 : crazystar(CrazyStar) C++ Builder優秀好手貼文超過200則人氣指數超過10000點
[ 貼文 449 | 人氣 17326 | 評價 2260 | 評價/貼文 5.03 | 送出評價 89 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/5/16 下午 07:56:23
參考一下:

假設有二張相同的指紋, 但掃瞄時角度不一樣

1. 對掃瞄進來的圖1找 n 個特徵值
2. 每個特徵值間的幾何距離可以一個一個計算出來.--> set 1
3. 同理, 對圖2 找 n 個特徵值, 並計算其幾何距離. ---> set 2
4. 比對set 1 跟set 2 間各個值的差異, 若總合小於給定的臨界值 t, 則表示二者吻合.

作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/5/29 上午 03:56:53
恩恩~我目前是打算把五支手指頭當作特徵
圖取以中指為垂直線下方0.5公分
長寬各7.5公分來提取掌紋
只是...再寫程式~遇到很多問題..
就是...程式不夠好 不知道怎麼實現
我所想要的工能
我是用BCB下去寫的
希望有人可以給我建議
謝謝
作者 : jonay(jonay) VC++優秀好手C++ Builder優秀好手C++優秀好手貼文超過500則
[ 貼文 887 | 人氣 8025 | 評價 5030 | 評價/貼文 5.67 | 送出評價 30 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/5/29 上午 09:29:57
http://www.cn.nctu.edu.tw/faculty/jychang/dept/course.html
http://140.130.175.70/Doc3A.htm
作者 : jonay(jonay) VC++優秀好手C++ Builder優秀好手C++優秀好手貼文超過500則
[ 貼文 887 | 人氣 8025 | 評價 5030 | 評價/貼文 5.67 | 送出評價 30 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/5/29 上午 09:46:15
不論語音、瞳孔、指紋、掌紋、人臉辨識的基本原理都相似
那就是"比對",而最重要的是"辨識率"
因此你需要了解類神經模糊的知識
來"教育"你的程式何者為是,何者為非
因此你需要大量的樣本,"送進"你的程式中
使其能學習
利用三點成一面的特性,找出圖形的特徵(放大、縮小或旋轉)
對每面給予權值(有的面是所有人都有,有的是少數人才有、甚至獨有)
所計算出的就是辨識率
舉例而言:
你可以在100張圖形中,放入3張你的掌紋,看結果如何
作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/5/31 下午 10:55:16
恩~~我目前的問題是....
不知道該怎麼樣定出五枝手指頭的位子....
呵呵
請大家多多幫忙謝謝
作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/4 上午 01:48:34
恩~~可能是我問的方式不太好
我想要請教各位的是
因為目前 做好了bp識別
可是 目前只能夠辨識固定大小也就是400*400的圖
希望能夠掃描圖檔時 能夠不用在固定剪裁圖檔
希望能夠自動偵測到掌紋圖形中400*400的圖片方塊
抓取下來做比對
可是..卻不知道該怎麼作
我抓取到手掌掌型的重心 然後...想要以重心
來找出離重心最遠的那一個點 因該就是...中指
只是....問題在於 怎麼樣去計算重心與邊的距離
邊的座標不知道該怎麼抓
作者 : jonay(jonay) VC++優秀好手C++ Builder優秀好手C++優秀好手貼文超過500則
[ 貼文 887 | 人氣 8025 | 評價 5030 | 評價/貼文 5.67 | 送出評價 30 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/4 下午 11:22:59
以我個人的經驗
辨識學不是研究所以下的學生玩的東西
不知道你去過我提供的網站上研究過了沒?(我沒看到你的任何程式碼)
你一直執著在"五"根手指上,你覺得電腦會知道你有四根還是五根指頭嗎?
圖形學最基本的是三角形(我之前已經提示過了)
四邊形可以切成二個三角形,五邊形切成三個三角形(學過微積分吧)
不論多複雜的圖形都可以簡化成三角形
再來你執著在400*400的圖形上
不論你從200*300或是800*600縮放成400*400都會有誤差(失真)
所以縮放圖形再來比對是沒有意義的(對我個人而言)
而一張400*400圖上的二個三角形對於同一圖800*600上的二個三角形
其相對位置是不變的(如何証明?將一張200*300的圖放大至上述二種大小再來比對即可)
而其中若有細微的差異就是所謂的"容錯率"(畢竟電腦是數位化的東西)
國中時學過相似三角形吧(把以前學過的再拿出來複習一下)
>>我抓取到手掌掌型的重心 然後...想要以重心
這一點更簡單了
三角形中不是有"五"心嗎(中心,重心,垂心...)
即然是數學,給予同樣的數據就會有同樣的答案
所以找出相同特徵三個三角形,每個取其中心(或其它..)
再利用此三點形成新的三角形,求其中心就可以旋轉了(我個人對這種初級的比對法比較沒興趣,看看其它人的意見吧)
作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/5 上午 02:36:12
恩恩~我不是打算要縮放他~目前是打算要攫取其中 打算要辨識的方塊那個方塊大小
剛好是400*400也就是手掌去除5跟手指頭的部分 在經過剪裁比對
orz

以下..是我辨識的部分的簡化程式...我先將他用CheckBox來代表二值化後的黑色像素
以8*8來表示的簡化模型
作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/5 上午 02:37:41
int a,b;
  for (a=0;a<InputLayer;a++)
    for (b=0;b<MiddleLayer;b++)
     wi[a][b]=float (rand()%10000-5000)/5000;
  for (a=0;a<MiddleLayer;a++)
    for (b=0;b<OutputLayer;b++)
     wo[a][b]=float (rand()%10000-5000)/5000;
  for (int i=0;i<8;i++) //初始化輸出結點的存放空間
  {
    for (int j=0;j<OutputLayer;j++)
    {
    correctout[i][j]=0;;
    }
    correctout[i][i]=1;

}

 Form1->Edit2->Enabled=false;
 Form1->Edit1->Clear();
作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/5 上午 02:39:05
void __fastcall TForm1::Button2Click(TObject *Sender)
{

     float alfa,delta_b[MiddleLayer],delta_a[InputLayer];
     int p;//第P個輸入樣本
int i,j,testnum;
float temp,temp2;
bool needajust;

float yita=0.3;
     float t=0.7;
     float thita=0.1;//兩個參數
p=0;//第P個輸入樣本
needajust=true;
testnum=0;
     float ep=0;
while (needajust)
{
testnum++;
if (testnum>100000)
{
MessageDlg("不收斂",mtInformation,
     TMsgDlgButtons()<<mbOK,0);
return;
}
needajust=false;
for(p=0;p<SampleNo;p++)
{

while (true)
{
for (i=0;i<MiddleLayer;i++)
secondout[i]=0;
for (j=0;j<OutputLayer;j++)
thirdout[j]=0;
ep=0;
temp=0;//初始化資料



for (i=0;i<MiddleLayer;i++)
{
for (j=0;j<InputLayer;j++)
secondout[i]=secondout[i] + Dot[p][j] * wi[j][i];
secondout[i]=1/(1+exp(-(secondout[i]-thita)/t));
}
for (i=0;i<OutputLayer;i++)
{
for (j=0;j<MiddleLayer;j++)
thirdout[i]=thirdout[i]+ secondout[j] * wo[j][i];
thirdout[i]=1/(1+exp(-(thirdout[i]-thita)/t));
}

//誤差
for(i=0;i<OutputLayer;i++)
ep=ep+pow((correctout[p][i]-thirdout[i]),2);
ep=ep/2;


if (ep>0.001)
{
needajust=true;
for(i=0;i<OutputLayer;i++)
{
delta_b[i]=(correctout[p][i]-thirdout[i])*thirdout[i]*(1-thirdout[i]);
for (j=0;j<MiddleLayer;j++)
wo[j][i]=wo[j][i]+yita*delta_b[i]*secondout[j];
}




for(i=0;i<MiddleLayer;i++) //隱層權重的調節
{
for (j=0;j<OutputLayer;j++)
temp=temp+delta_b[j]*wo[i][j];

for(j=0;j<InputLayer;j++)
{
delta_a[i]=secondout[i]*(1-secondout[i])*temp;
wi[j][i]=wi[j][i]+yita*delta_a[i]*Dot[p][j];
}
}
}
else
break;

}


}



}
MessageDlg("收斂!",mtInformation,
     TMsgDlgButtons()<<mbOK,0);

}

作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/5 上午 02:41:36

void __fastcall TForm1::Button3Click(TObject *Sender)
{//識別字符

int i,j,p;
float t=0.7;
 for(int i=0;i<InputLayer;i++) //識別時取空間點陣的值
    {
    app[i]=0;
    }
  if(Form1->CheckBox1->Checked){app[0]=1;}
  if(Form1->CheckBox2->Checked){app[1]=1;}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
中間掠過...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  if(Form1->CheckBox64->Checked){app[63]=1;}
  
 for (i=0;i<MiddleLayer;i++) //資料初始化
secondout[i]=0;
 for (j=0;j<OutputLayer;j++)
thirdout[j]=0;



 for (i=0;i<MiddleLayer;i++) //隱層輸出
 {
    for (j=0;j<InputLayer;j++)
     {secondout[i]=secondout[i] + app[j]*wi[j][i]; }
    
     secondout[i]=1/(1+exp(-(secondout[i]-thita)/t));

 }

  for (i=0;i<OutputLayer;i++)//輸出層的輸出
  {
     for (j=0;j<MiddleLayer;j++)
     thirdout[i]=thirdout[i]+ secondout[j] * wo[j][i];
     thirdout[i]=1/(1+exp(-(thirdout[i]-thita)/t));
}

  for(p=0;p<SampleNo;p++) //計算誤差
  {
    ep=0;
    for(i=0;i<OutputLayer;i++)
     ep=ep+pow((correctout[p][i]-thirdout[i]),2);
    ep=ep/2;
  
     if (ep<0.01)
     {
     Form1->Edit2->Enabled=true;
     Edit2->Text=trueout[p];
     return;
}

     }


     if (ep>0.01)
     {MessageDlg("不識別!",mtInformation,
     TMsgDlgButtons()<<mbOK,0);
     }
 }



作者 : stutfish(小魚)
[ 貼文 12 | 人氣 4383 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/5 上午 02:49:27
至於...我所認為..非常需要的重心的部分....主要是因為...
.......................................................................
好八..我承認我基礎沒打好 呵呵...不好意識

想要選取重心 是要來做自動剪裁
而不要要做縮放的動作 謝謝
作者 : jonay(jonay) VC++優秀好手C++ Builder優秀好手C++優秀好手貼文超過500則
[ 貼文 887 | 人氣 8025 | 評價 5030 | 評價/貼文 5.67 | 送出評價 30 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/6/5 下午 12:14:29
慢慢來
我最後的建議是
你可以先從簡單的作起(不要一開始就處理掌紋)
比如自已先建立一些簡單的圖形(只有黑白二色)
做不同的旋轉、縮放後存檔
利用這些樣本做初級的辨識
有了心得後,建立自已的模組(也就是你的prototype)
接著用數位相機對同一物體取景(需要不同角度)<-顏色從簡單開始
最後才是你的目的
 板主 : 徵求中
 > 影像處理與計算機圖學 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 影像處理與計算機圖學 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
影像處理與計算機圖學
1 Linkin 780 
2 CrazyStar 400 
3 青衫 360 
4 白老鼠(Gary) 330 
5 悠悠深藍 220 
6 none 220 
7 shou 200 
8 ultra 200 
9 ghost 140 
10 archimage 110 
影像處理與計算機圖學
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.0625