圖片切割分群~~ |
尚未結案
|
jakie720313
一般會員 發表:15 回覆:7 積分:4 註冊:2003-11-23 發送簡訊給我 |
我現在要做的是把1300張圖片的每張圖片先切割成100塊(block),再把每張圖片去做分群。也就是把原本1張圖片有100個block(也就是100群),利用分群把群數降低,以加快比對的速度~~
我分群的演算法如下:
1.因為圖片已經先切割成100個block,先挑圖片最左上角為第一群,設群數=1。
2.選取第二個block(第一個block的右邊),與第一群相減取絕對值算出差異值,每個block都是一個256個數字的陣列,差異值就等於陣列裡面的每個數字兩兩相減再取絕對值的總和。
3.自訂一個Threshold值,如果差異值小於Threshold的值就視為同一群,否則視為不同群,群數+1。
4.如果是同一群,就得對群裡面的block取平均。Ex:3個block都屬於同一群的話,這群的中心點=3個block陣列的總和/3,得到這群的新的256個數字的陣列。
5.繼續挑下一個block,對目前每個群求差異值,當群數超過1時,計算差異值就必須對兩個群求差異值,比較差異值的大小,看跟哪一群的差異值最小,就把block視為那一群,再把那一群做平均,以此類推,一直做到第100個block為止。
6.做完第一張圖片後,繼續挑第二張圖片重複做1~~5的步驟,直到1300張都做完為止。 如此一來,便可以把1300張圖片都做分群的動作,可是我現在遇到一個問題。就是Threshold值設比較大的時候,每張的群數都等於1(表示都屬於同一群),再去比對計算正確率,出來的結果竟然比我把Threshold值設小一點(每張的群數變大)去計算的正確率來得要高........這有點不合常理~~~
理論上群數越少,正確率應該會越低才對,群數越多正確率應該會提高,可是我的程式跑出來的結果剛好相反@@.....一直在找bug始終找不出來~~~
請教各位大大我的程式哪裡出了問題???哪裡有bug呢??可否幫我找一找呢??謝謝
//下面是分群的程式碼
long *block_minium=new long[100]; //這裡是宣告的部分 int number; long counts; long counts2; bool overflow=false; struct my_struct2 { long index; int Group; }; struct my_struct2 Image[1300]; long find_index(int local) //找尋陣列所在的位址 { long index=0; int a; if(local!=0) { for(a=local-1;a>=0;a--) { index =Image[a].Group*256; } return index; } else { index=0; return index; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button9Click(TObject *Sender) { int m=1; //以下是分群的程式碼 int i,j,block,k=1; int data_value,n; int NP = 1; int NC = 1; long different[101]; int group[101]; long temp[256]; counts2=0; struct my_struct { int GroupFlag[101]; long data[256]; }; struct my_struct C[101]; struct my_struct P[101]; struct sortdata { long data; }; struct sortdata A[101]; int *d=new int[33280000]; long i_index; long threshold,temp2; long mininum; FILE *fptr,*stream,*stream2; threshold = StrToInt(Edit3->Text); number = StrToInt(BoxNum->Text); counts = number*100*256; fptr=fopen("D:\\data.txt","r"); //讀取檔案內容 for(i_index=0;i_index |
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
dear jakie720313:
引言:如此一來,便可以把1300張圖片都做分群的動作,可是我現在遇到一個問題。就是Threshold值設比較大的時候,每張的群數都等於1(表示都屬於同一群),再去比對計算正確率,出來的結果竟然比我把Threshold值設小一點(每張的群數變大)去計算的正確率來得要高........這有點不合常理~~~ 理論上群數越少,正確率應該會越低才對,群數越多正確率應該會提高,可是我的程式跑出來的結果剛好相反@@.....一直在找bug始終找不出來~~~ 請教各位大大我的程式哪裡出了問題???哪裡有bug呢??光看你的程式碼也不知道哪邊可能出問題。現在你問的似乎是一個現象,並非完全是程式的bug所引起的,所以丟兩個問題給你: 1. 你要分群的圖片其特性是什麼?比對的目的是什麼? 2. 演算法的設計是否合理?因為這會導致你的結果會不會符合你的預期。 因為你也提出你所看到「不合理」的地方,但不光是程式寫錯會造成,邏輯上的錯誤或是演算法錯誤都可能得到這樣的結果。請參考看看嚕~ |
m58610
初階會員 發表:22 回覆:83 積分:36 註冊:2003-09-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |