《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 差影法模擬物體運動軌跡的研究與實現(xiàn)
差影法模擬物體運動軌跡的研究與實現(xiàn)
劉國柱,,高全磊
(青島科技大學 信息科學技術(shù)學院,山東 青島 266061)
摘要: 物體在不同介質(zhì)中的運動軌跡受到介質(zhì)的粘度,、比重的影響,,將物體的運行軌跡從圖片中提取出來,,有助于分析物體在不同介質(zhì)中的運動規(guī)律。本文中動態(tài)視頻轉(zhuǎn)換成靜態(tài)bmp圖片序列,,采用差影法針對bmp圖片進行處理,,再將處理后的系列bmp圖片進行整合,得到物體的運行軌跡,,呈現(xiàn)出物體運行軌跡曲線,。結(jié)果表明差影法對物體運動軌跡的模擬可靠有效。
Abstract:
Key words :

  摘 要: 物體在不同介質(zhì)中的運動軌跡受到介質(zhì)的粘度,、比重的影響,,將物體的運行軌跡從圖片中提取出來,有助于分析物體在不同介質(zhì)中的運動規(guī)律,。本文中動態(tài)視頻轉(zhuǎn)換成靜態(tài)bmp圖片序列,,采用差影法針對bmp圖片進行處理,再將處理后的系列bmp圖片進行整合,,得到物體的運行軌跡,,呈現(xiàn)出物體運行軌跡曲線。結(jié)果表明差影法對物體運動軌跡的模擬可靠有效,。

  關(guān)鍵詞數(shù)字圖像處理,;運動軌跡差影法;bmp圖片

0 引言

  數(shù)字圖像處理是指將圖像信號轉(zhuǎn)換成數(shù)字信號并利用計算機對其進行處理的過程[1],。圖像是人類獲取和交換信息的主要來源,,因此,圖像處理的應(yīng)用具有重要作用,。本文基于差影法獲取物體運動軌跡,。運動軌跡是最重要的物體運動信息之一,通過運動軌跡可以很好地分析物體的運動規(guī)律,,還可以計算出其他的運動信息,,如速度、加速度[2],。使用差影法獲取物體運動軌跡,,方法簡單,思路清晰,,追蹤運動物體軌跡的過程清晰明了,,并且具有很高的魯棒性和處理速度。

1 差影法的原理

  差影法在動態(tài)檢測與識別技術(shù),、血管造影技術(shù)及印刷線路板掩模缺陷的診斷等技術(shù)中都有應(yīng)用,利用差影法可以檢測同一場景中兩幅圖像間的差異[3],。差影法本質(zhì)就是對圖像進行代數(shù)運算,即對兩幅圖片中對應(yīng)坐標位置的運算,。本文的操作使用了圖像相減的做法,,即對于同一場景的兩幅圖,圖像的背景是大致相同的,,當兩幅圖進行相減時,,相同位置的背景因為灰度值相同,使得像素值變?yōu)?,,而目標物體因為位置不同,,所以相減后值不為0,處理后的圖像就只有兩個目標物體的位置有像素點,,背景因而變?yōu)楹谏?。可以?jù)此得出物體的軌跡,。其中輸入圖像為A(X,Y)和B(X,Y),輸出圖像為C(X,Y),滿足公式C(X,Y)=A(X,Y)±B(X,Y)[4],。使用差影法將兩幅圖像相減所得結(jié)果如圖1、圖2和圖3所示,。

001.jpg

2 bmp圖片文件格式

  bmp圖片文件由文件頭,、位圖信息頭、顏色信息和圖形數(shù)據(jù)四部分組成[5],。文件頭主要包含文件的大小,、文件類型、圖像數(shù)據(jù)偏離文件頭的長度等信息,;位圖信息頭包含圖像的尺寸信息,、圖像用幾個比特數(shù)值來表示一個像素,、圖像是否壓縮、圖像所用的顏色數(shù)等信息,。顏色信息包含圖像所用到的顏色表,,顯示圖像時需用到這個顏色表來進行調(diào)色。文件中的數(shù)據(jù)塊表示圖像的相應(yīng)的像素值,。bmp文件中位圖數(shù)據(jù)是以連續(xù)行的形式存儲的[6],。具體格式如圖4所示。

002.jpg

  其中,,顏色表的大小由位圖信息頭中的位深度決定,,當位深度是1、4,、8時,,分別有2、16,、256個顏色表項,,當位深度是24時,圖像為真彩色,,圖像中每個像素的顏色用3個字節(jié)表示,,分別對應(yīng)R、G,、B值,,圖像文件沒有顏色表項。

  位圖各部分詳細內(nèi)容如下:

  文件頭:

  typedef struct tagBITMAPFILEHEADER {

  WORD bfType; //位圖文件類型

  DWORD bfSize; //位圖文件的大小

  WORD bfReserved1; //位圖文件保留字1

  WORD bfReserved2; //位圖文件保留字2

  DWORD bfOffBits; //位圖數(shù)據(jù)部分相

  //對于文件頭的偏移量

  } BITMAPFILEHEADER,

  FAR *LPBITMAPFILEHEADER,

  *PBITMAPFILEHEADER;

  信息頭:

  typedef struct tagBITMAPINFOHEADER{

  DWORD biSize; //該結(jié)構(gòu)所占字節(jié)數(shù)

  LONG biWidth; //位圖寬度

  LONG biHeight; //位圖高度

  WORD biPlanes; //目標設(shè)備平面數(shù)目

  WORD biBitCount; //位深度

  DWORD biCompression; //壓縮類型

  DWORD biSizeImage; //位圖數(shù)據(jù)大小

  LONG biXPelsPerMeter; //水平分辨率

  LONG biYPelsPerMeter; //垂直分辨率

  DWORD biClrUsed; //使用的顏色表項數(shù)

  DWORD biClrImportant;

  } BITMAPINFOHEADER,

  FAR *LPBITMAPINFOHEADER,

  *PBITMAPINFOHEADER;

  顏色表(RGB值):

  typedef struct tagRGBQUAD {

  BYTE rgbBlue;

  BYTE rgbGreen;

  BYTE rgbRed;

  BYTE rgbReserved;

  } RGBQUAD;

  其中顏色表和位圖信息頭組成位圖信息:

  typedef struct tagBITMAPINFO {

  BITMAPINFOHEADER bmiHeader;

  RGBQUAD bmiColors[1];

  } BITMAPINFO, FAR *LPBITMAPINFO,

  *PBITMAPINFO;

3 視頻處理流程

  使用差影法,,讓兩幅圖片中不同的地方突顯出來,,以實現(xiàn)追蹤物體運動軌跡的目的[7],處理流程如圖5所示,。首先將視頻轉(zhuǎn)換為幀序列,,然后加載一幅圖片作為背景,再將目標圖片加載到內(nèi)存,,進行差影法處理,,處理后若該圖片不是最后一幀則保存差影后的結(jié)果為新的背景,繼續(xù)操作,,直至最后一幀圖片(注:使用AVI格式視頻,,幀序列中的圖片格式是bmp)。

003.jpg

4 差影法處理視頻

  使用的開發(fā)工具是Visual Studio2010,,開發(fā)語言為C++,,使用類庫MFC、Opencv2。

  4.1 視頻轉(zhuǎn)換為幀序列

  使用Opencv2來實現(xiàn)avi視頻轉(zhuǎn)換為bmp格式圖片序列,。

  使用cvCaptureFromFile(CString)函數(shù)來捕獲視頻中的每一幀,。主要代碼如下:

  CvCapture *cap= cvCaptureFromFile(vedioName);

  if (cap==NULL)

  {

  MessageBox("失敗,請確認視頻格式是avi !!");

  EndWaitCursor();

  }

  char fileName[300]; //文件名

  char* format=".bmp"; //圖片格式

  char* fileBag="d:\\testPics\\";

  IplImage* pImg=NULL;

  int frame=0;

  //捕獲每一幀圖片

  while((pImg=cvQueryFrame(cap))!=NULL) {

  frame++;

  strcpy(lastName,"");

  sprintf(lastName,"%s%d%s",fileBag,frame,format);

  //保存捕獲的幀

  cvSaveImage(fileName,pImg,NULL);

  }

  4.2 圖片的加載

  要處理圖片必須將其加載到內(nèi)存,,然后才能做相應(yīng)的處理,。本系統(tǒng)使用MFC中的CFile類,通過CFile的Read函數(shù)將圖片讀入[8],。主要代碼如下:

  CFile file;

  //用一定模式打開文件

  if(!file.Open(pathName,CFile::modeRead)) return FALSE;

  DWORD fileLength;

  fileLength = file.GetLength();

  char *m_pBMPBuffer = new char[fileLength + 1];

  if(!m_pBMPBuffer)

  return FALSE;

  if(file.Read(m_pBMPBuffer,fileLength)!=m_nFileLen)

  //從文件中讀入指定字節(jié)數(shù)的數(shù)據(jù)

  return FALSE;

  file.Close();

  4.3 使用差影法處理圖片

  通過分析bmp文件的格式,可以分別獲取到圖片的文件頭,、信息頭,、顏色表、像素數(shù)據(jù),。由于對同一視頻獲取的幀序列而言,,它們的文件頭、信息頭和顏色表都是一致的,,故僅處理像素數(shù)據(jù)部分,,處理后,再利用原來圖片的文件頭,、信息頭和顏色表等信息,,拼湊出一個新的bmp圖片文件。主要代碼如下:

  BITMAPINFOHEADER &bmiHeader_old=

  *(LPBITMAPINFOHEADER)hDIB_Old ;

  BITMAPINFO &bmInfo_old=

  *(LPBITMAPINFO)hDIB_Old ;

  unsigned char pixelValue1,pixelValue2;

  LPSTR lpDst;

  LPSTR lpYuan,lpBack;

  LONG i,j;

  for (i=0;i<bmHeight;i++) //對比每一個像素

  {

  for(j=0;j <perLineBytes;j++)

  {

  lpYuan=(char*)hDIB_Old_Data +

  perLineBytes * i + j;

  lpBack=(char *)hDIB_Template_Data + perLineBytes

  * i + j;

  lpDst = (char *)m_newBMPDATA + perLineBytes * i

  + j;

  pixelValue1= (unsigned char)* lpYuan;

  pixelValue2= (unsigned char)* lpBack;

  *lpDst=(pixelValue1-pixelValue2)<0?abs(pixelValue-

  pixelValue2) : (pixelValue1- pixelValue2);

  }

  }

  CClientDC dc(this);

  CreateDIBitmap(dc.m_hDC,&bmiHeader_old,CBM_INIT,m_

  newBMPDATA,&bmInfo_old,DIB_RGB_COLORS);

  //創(chuàng)建位圖

5 結(jié)果分析

004.jpg

  針對圖6和圖7中的兩幀圖像使用差影法處理,,得到如圖8所示結(jié)果,。由圖8可以看出,差影法對求物體運動軌跡是可行的,,并且處理后的結(jié)果清晰,,可以準確地辨別出目標物體。

005.jpg

  通過差影法的循環(huán)使用,,得到目標物體的運動軌跡如圖9所示,。由圖9看出,軌跡清晰明了,,目標物體的輪廓明顯,,而且處理后的結(jié)果并無模糊現(xiàn)象[9]。驗證了差影法模擬運動軌跡的可行性和可靠性,。

6 結(jié)論

  基于差影法來獲取物體運動軌跡是可行的,,并取得了良好的實驗結(jié)果,達到了預期目的,。文中對獲取物體運動軌跡進行了一些研究,,仍有以下內(nèi)容需要進一步研究:

  (1)文中使用的視頻格式為AVI,圖片的格式為bmp,可以基于本研究,,推廣到其他視頻格式和圖片格式的應(yīng)用,。

  (2)可以結(jié)合實際問題來分析運動物體的軌跡,如交通運輸,、實時監(jiān)控,、行為分析等領(lǐng)域,使系統(tǒng)的可用性更強,。

參考文獻

  [1] 李立芳. 淺談數(shù)字圖像處理技術(shù)及應(yīng)用[J]. 中國科技信息, 2012(3):78-79.

  [2] 孫達,黃劍華,唐降龍. 大場景中物體運動軌跡的測量[J]. 計算機工程, 2009,35(9):17-18.

  [3] 周彩霞,匡綱要,宋海娜,等. 基于差影法粗分割與多模板匹配的人臉檢測[J]. 計算機工程與設(shè)計, 2004,25(10):1648-1650.

  [4] 降雨志,張義順,張華軍,等. 投影法和差影法在焊縫跟蹤圖像識別中的應(yīng)用[J]. 沈陽工業(yè)大學學報, 2005,27(5):558-561.

  [5] 宋葉未,葉建芳. BMP格式位圖文件的分析及顯示算法[J]. 現(xiàn)代電子技術(shù), 2011,34(20):5-7.

  [6] 張明敏. 圖形圖像文件格式解碼實用程序[J]. 中國圖像圖形學報, 1998,3(5):73-79.

  [7] 羅佳佳. 基于差影法與攝像機定標技術(shù)的車牌定位研究[D].武漢:武漢理工大學, 2008.

  [8] 宋坤,劉銳寧,李偉明. Visual C++開發(fā)技術(shù)大全[M]. 北京:人民郵電出版社, 2008.

  [9] 楊曉曉. 高速運動物體軌跡預測的研究[D]. 北京:北京交通大學,2012.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。