如何快速的判斷兩個影像區塊是否相同 |
答題得分者是:bugmans
|
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
[code delphi] function isSameTheBmp(TheNewBmp, TheOldBmp: TBitmap): Boolean; var i,j : integer; //暫存長寬目前索引用 OldP24,NewP24 : PInteger; //24位元顏色 begin //Result:=False; For i:=0 to TheOldBmp.Height-1 do begin OldP24:=TheOldBmp.ScanLine[i];//獲取掃瞄線--old NewP24:=TheNewBmp.ScanLine[i];//獲取掃瞄線--New For j:=0 to TheOldBmp.Width-1 do begin if OldP24^ <> NewP24^ then begin Result:=False; Exit; end; inc(OldP24); inc(NewP24); end; end; //恢復原來的像素顏色位格式 Result:=True; end; [/code] 上面程式碼是輸入兩個切割好的bitmap(我是切成16*16),但是一張圖有3000多個(16*16)要比對,而上面程式碼的寫法不太好,若相同的話,則要比較16*16個if後才知道,這樣會造成cpu飆高的問題,不知道有沒有人有更好的方式來做。請求各位的幫忙。 |
friendlly
高階會員 發表:22 回覆:144 積分:103 註冊:2003-04-08 發送簡訊給我 |
|
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
比對一張16*16 圖檔....測試約不到10msec..
怎麼和這篇測試的結果有差異,是單位不同嗎 http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=89257#6 測試影像:兩張640*480 24bpp RGB 影像相減取絕對值並取臨界值後,存成另一張640*480 24bpp RGB Project Options / Compiler : Full Debug ciy's code:16~19 ms For-loop:6~7 ms While-loop : 6~7 ms |
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
我的都是16*16的小區塊,有很多個在比較,每個都是一對一個小區塊比較。好像相減後,時間花更長了。該怎麼辦呢。
目前比較亂的做法就是4*4只比對一個點。不知道還有沒有快速的方法 ===================引 用 bugmans 文 章=================== 比對一張16*16 圖檔....測試約不到10msec.. 怎麼和這篇測試的結果有差異,是單位不同嗎 http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=89257#6 測試影像:兩張640*480 24bpp RGB 影像相減取絕對值並取臨界值後,存成另一張640*480 24bpp RGB Project Options / Compiler : Full Debug ciy's code:16~19 ms For-loop:6~7 ms While-loop : 6~7 ms
編輯記錄
17kobe 重新編輯於 2008-03-03 18:04:29, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |