全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1047
推到 Plurk!
推到 Facebook!

圖片比對問題~~

答題得分者是:JerryKuo
jeff6518
一般會員


發表:4
回覆:4
積分:1
註冊:2003-07-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-20 17:08:13 IP:61.231.xxx.xxx 未訂閱
將B圖的每一個PIXEL在A圖中找出16個連續的8-BIT進行比對,並用XOR找出最小值(最接近B圖PIXEL的值),但是在ShowMessage中發現最小值有錯誤,懷疑可能是位元位移或是XOR的部分有錯誤,請各位幫我看一下程式指點糾正,謝謝^^~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //宣告區  char a[128][128];     //圖1-偽圖  char a1[128][128];    //圖1-第一個位元  char a2[128][128];    //圖1-後二個位元  char b[64][128];      //圖2-隱藏圖  char c[64][128][16];  //圖1的比對值  char c1[64][128][16]; //  char d2[64][128];     //  int d3[64][128];     //  using namespace std;                      //min_element  typedef vector::iterator iterator; char d1[16]; // for (int i=0;i<128;i ) { for (int j=0;j<128;j ) { a[i][j]=Image1->Canvas->Pixels[i][j]; //取得圖1之值 a1[i][j] = a[i][j] & 0x80; //取得圖1之每點的第一位元 a2[i][j] = a[i][j] & 0xf8; //空出每點的後三個位元 } } // for (int i=0;i<64;i ) { for (int j=0;j<128;j ) { b[i][j]=Image2->Canvas->Pixels[i][j]; //取得圖2之值 for (int k=0;k<16;k ) { c[i][j][k] = a1[i][j k] | a1[i][j k 1]>>1 | a1[i][j k 2]>>2 | a1[i][j k 3]>>3 | a1[i][j k 4]>>4 | a1[i][j k 5]>>5 | a1[i][j k 6]>>6 | a1[i][j k 7]>>7; //取得圖1之比對值 } } } // 進行比對 for (int i=0;i<64;i ) { for (int j=0;j<128;j ) { for (int k=0;k<16;k ) { c1[i][j][k] = c[i][j][k] ^ b[i][j]; //使用xor來作比對 d1[k] = c1[i][j][k]; if (k==15) { vector v1(d1,d1 16); iterator it1 = min_element(v1.begin(),v1.end()); if (d1[0]==*it1) { d3[i][j] = 0; } if (d1[1]==*it1) { d3[i][j] = 1; } if (d1[2]==*it1) { d3[i][j] = 2; } if (d1[3]==*it1) { d3[i][j] = 3; } if (d1[4]==*it1) { d3[i][j] = 4; } if (d1[5]==*it1) { d3[i][j] = 5; } if (d1[6]==*it1) { d3[i][j] = 6; } if (d1[7]==*it1) { d3[i][j] = 7; } if (d1[8]==*it1) { d3[i][j] = 8; } if (d1[9]==*it1) { d3[i][j] = 9; } if (d1[10]==*it1) { d3[i][j] = 10; } if (d1[11]==*it1) { d3[i][j] = 11; } if (d1[12]==*it1) { d3[i][j] = 12; } if (d1[13]==*it1) { d3[i][j] = 13; } if (d1[14]==*it1) { d3[i][j] = 14; } if (d1[15]==*it1) { d3[i][j] = 15; } ShowMessage (d3[i][j]); } } } } }
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-21 09:39:31 IP:61.230.xxx.xxx 未訂閱
你好: 請確認這行的值 c[i][j][k] = a1[i][j k] | a1[i][j k 1]>>1 | a1[i][j k 2]>>2 | a1[i][j k 3]>>3 | a1[i][j k 4]>>4 | a1[i][j k 5]>>5 | a1[i][j k 6]>>6 | a1[i][j k 7]>>7; 發表人 - jerrykuo 於 2003/07/21 09:50:59
系統時間:2024-04-29 3:38:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!