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

從CCD擷取影像比對

尚未結案
chensillin
一般會員


發表:9
回覆:22
積分:6
註冊:2002-08-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-08-19 23:24:45 IP:210.60.xxx.xxx 未訂閱
目前個人在測試從CCD擷取影像之後 再擷取最新影像!刻意保持影像不變 從畫面看到的也是一樣!但是去抓取值 比對!發現不一樣!會有誤差! 是不是日光燈線造成影響呢? 有什麼辦法可以解法呢? 變成真正影像有變化才做動作
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-08-20 01:01:25 IP:211.74.xxx.xxx 未訂閱
沒錯,光線的確對取得影像有絕對的影響 以我們公司的做法,是從硬體上著手 在取像時給予比日光還強的紅外光照射 再用濾鏡濾掉紅外光即可取得較不受日光影響的圖像值 所有的影像處理都由DSP完成,所以沒有辦法描述太多 ...就這樣... 噓~~~~~~沉思中…
chensillin
一般會員


發表:9
回覆:22
積分:6
註冊:2002-08-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-08-20 01:40:07 IP:210.60.xxx.xxx 未訂閱
只是我蠻好奇的是我使用了! Power Guard這個監控軟體操作我的ccd 再同樣的的設備也就是ccd notebook 它能直接處理掉,並且故意走動,他就真的比對成功 而把影像存檔!而我呢?光被光線這部份就搞死了! 所以我想我會朝這部分去做把他改為灰階之外再比對! 比對過程中取一個誤差值。不知有沒有人有更好的方法
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-08-20 02:10:08 IP:211.74.xxx.xxx 未訂閱
影像的比對,可採二值化,求得單純影像 並找尋較不易變動之數點,計算其斜率 予以編碼,依演算法可決定 FAR/FRR (錯誤接受率/錯誤拒絕率) 可達1 /1000以下 噓~~~~~~沉思中…
chensillin
一般會員


發表:9
回覆:22
積分:6
註冊:2002-08-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-08-20 20:24:45 IP:210.60.xxx.xxx 未訂閱
在現在ccd每秒抓擷30張畫面 若做比對的話! 預先抓了一張! 之後要是有變化的話比對! 若載入image再從image中和立即抓的影像 先做二元化處理之後與再抓到的影像比對! 但變成抓到的影像也都需先二元化! 那不就覺比對就很耗時,會有某段時間影像跑掉! 不知沒有較快的方法
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-08-21 01:29:51 IP:61.59.xxx.xxx 未訂閱
引言: 在現在ccd每秒抓擷30張畫面 若做比對的話! 預先抓了一張! 之後要是有變化的話比對! 若載入image再從image中和立即抓的影像 先做二元化處理之後與再抓到的影像比對! 但變成抓到的影像也都需先二元化! 那不就覺比對就很耗時,會有某段時間影像跑掉! 不知沒有較快的方法
實際上我們在業界,若要做影像比對,是很少採用連續畫面的, 連續畫面只有在保全業裡記錄監視器時使用 CCD 是採被動的模式,通常是利用紅外線感測,再啟動抓取影像 如果在記憶體事先就以儲存影像的編碼值,則僅需計算一次。 這是用在生物辨識領域的做法 但如果你是以走動的人為影像主體的話,辦識會更難比對 除非能"定位",不然沒有基準點要如何比對? 噓~~~~~~沉思中…
chensillin
一般會員


發表:9
回覆:22
積分:6
註冊:2002-08-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-08-21 01:38:08 IP:210.60.xxx.xxx 未訂閱
只是現在我論文要做的東西 就是有關影像移動中去判斷他的移動軌跡! 嗯!謝了!
ufstep
一般會員


發表:8
回覆:11
積分:3
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-08-21 04:23:30 IP:218.163.xxx.xxx 未訂閱
引言: 只是現在我論文要做的東西 就是有關影像移動中去判斷他的移動軌跡! 嗯!謝了!
提供一些意見: 當你把CCD靜止不動的放著,並且對著純白色的牆壁他還是會抓取畫面的 除非你做了些判斷,你可將畫面切割成多個小塊狀,並且判斷比對每個小塊是否變化 若有則抓取並更新畫面,若無則保持原靜止畫面. 當然就如我剛才所說的,就算是對著一面白牆他還是會不停的 更新畫面,所以在抓取之前你要預設一個Threshold值來作限制 例: const int ThreshHold=2048; 若每一小塊的Pixel變化大於2048時(好比有人在畫面前走動),則進行抓取並更新畫面. 若小於2048(好比光線微量的變化)則不進行後續動作. *在進行任何判斷前將所擷取到的畫面二值化是必要的. 發表人 - ufstep 於 2002/08/21 04:24:13
chensillin
一般會員


發表:9
回覆:22
積分:6
註冊:2002-08-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-08-22 04:08:28 IP:210.60.xxx.xxx 未訂閱
謝謝您! 只是執行有時間問題每秒抓三十張畫面,不是拖太長! 所以每比對一張時間1/30=0.033秒=33毫秒就要結束! 以下是個人的測試 //==========測試執行的時間以毫秒計算 DWORD BTime; BTime=timeGetTime();       bmpfilename=ridcommon()+".bmp";   capFileSaveDIB(hCapWnd,bmpfilename.c_str() ); //存成bmp檔   Image1->Picture->LoadFromFile(bmpfilename.c_str());    Caption = IntToStr(timeGetTime()-BTime)+" msec."; //上面程式ridcommon()是我自己寫的函數抓時間命名可把2002/8/21 22:34:22   變成20020821223422,中間若月分小於十會自動補0,這樣所存檔的圖片就可   依時間存檔,下列附上我寫的函數希望對大家有幫助! String TMainForm::ridcommon(void) {      String systime;   char *strs;   systime=Now();   strs=systime.c_str();      int i,numberflag=0,monthmonth=0,dayday=0;   String numberyear,numbermonth,numberday,timefilename;      for(i=0;i<22;i ) { if(strs[i]=='/') { numberflag=numberflag 1; continue;} if(numberflag==1) { numbermonth=numbermonth strs[i]; continue; } //numberflag=2 和strs[i]= ' '字元時開始判斷日期是否為個位數,若是前面加0 if(numberflag==2 && strs[i]==' ') { numberflag=0; if(dayday==0) { dayday=1; if ( StrToInt(numberday)< 10 ) {numberday="0" numberday;} timefilename=timefilename numberday; } continue;} //numberflag=2時開始抓日期位置並且判斷月份是否小於十月,小於前面加0 if(numberflag==2) { numberday=numberday strs[i]; if(monthmonth==0) { monthmonth=1; if ( StrToInt(numbermonth)< 10 ) {numbermonth="0" numbermonth;} timefilename=timefilename numbermonth; } continue;} if(strs[i]<'0' || strs[i]>'9') continue; timefilename=timefilename strs[i]; } return(timefilename); } //============================================================ 這樣就耗了18毫秒左右,第一次執行約100毫秒,之後就是平均約18毫秒! 但是功能完成把測試時間拿掉應可更短,若直接給檔名的話,約9毫秒! 當然這個過程中從CCD立刻抓當時影像存成320*240; 和載入Image中! 只是這個時間可以不管,因為這是開始監控時的第一張圖片! 以下開始說比對! ufstep 兄台所說使用const int ThreshHold=2048; 測試程式如下: void __fastcall TMainForm::Timer1Timer(TObject *Sender) { HDC currentdc=GetDC(hCapWnd);//擷取CCD立即畫面影像 Memo1->Text= Image1->Canvas->Pixels[1][1];//預取圖片點值 Memo2->Text=TColor(GetPixel(currentdc,1,1));//目前畫面點值 } 只是我的ccd取單點比對測試結果同一點因光線變化量約6000上下! 我想是我的日光燈和ccd較差吧!但是使用特別使用Power Guard軟體 在同樣的設備下只要靜止不動還真的比對不動,完全不受光線影像! 當外在影像真的有動才開始監控!所以是在程式方面做了一定的處置! 現在我準備改為灰階來比對來測試看看!結果在給大家看! 在這個過程中,希望大家能陸續給意見一下! 因為第一張預取不管灰階或二元值處理時間不是問題! 但是緊樣是取立即影像從BMP再經灰階、二元值處理有時間.....? 當然二個FOR迴圈 320*240變成灰階.....直接做比對 當然也可給一個光量變化的適當量當作閥值! 或是變成二元值,之後做比值! 當然我不會完全比對每一點數值,應該採用抽樣來節省時間! 大家幫幫忙吧!謝謝大家!看各位是否有更好的意見! 我只要有最新進展一定POST告訴大家 發表人 - chensillin 於 2002/08/22 04:39:45
yita529
一般會員


發表:4
回覆:10
積分:2
註冊:2003-10-03

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-11-28 15:31:11 IP:61.62.xxx.xxx 未訂閱
請問一下 我該如何把ccd所拍攝下來的影片轉成每秒30張的frame?? 因為我也想要把所拍攝下來的影片作比對的動作.... 謝謝......!!!!
系統時間:2024-05-06 9:46:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!