計(jì)算機(jī)圖像處理技術(shù)_第1頁
計(jì)算機(jī)圖像處理技術(shù)_第2頁
計(jì)算機(jī)圖像處理技術(shù)_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、計(jì)算機(jī)圖像處理技術(shù)前言:隨著計(jì)算機(jī)軟件、硬件技術(shù)的日新月異的發(fā)展和普及,人類已經(jīng)進(jìn)入一個(gè)高速發(fā)展的信息化時(shí)代,人類大概有80%的信息來自圖像,科學(xué)研究、技術(shù)應(yīng)用中圖像處理技術(shù)越來越成為不可缺少的手段。圖像處理所涉及的領(lǐng)域有軍事應(yīng)用、醫(yī)學(xué)診斷、工業(yè)監(jiān)控、物體的自動(dòng)分檢識(shí)別系統(tǒng)等等,這些系統(tǒng)無不需要計(jì)算機(jī)提供實(shí)時(shí)動(dòng)態(tài),效果逼真的圖像?;趫D像采集卡的視頻圖像處理系統(tǒng) 計(jì)算機(jī)圖像處理系統(tǒng)從系統(tǒng)層次上可分為高、中、低檔三個(gè)層次,目前一般比較普及的是低檔次的系統(tǒng),該系統(tǒng)由CCD(攝像頭)、圖像采集卡、計(jì)算機(jī)三個(gè)部分組成,其結(jié)構(gòu)簡單,應(yīng)用方便,效果也比較不錯(cuò),得到的圖像較清晰。目前網(wǎng)上基于VC開發(fā)經(jīng)驗(yàn)的文

2、章不少,可是關(guān)于如何在VC開發(fā)平臺(tái)上使用圖像采集卡的文章確沒發(fā)現(xiàn),筆者針對在科研開發(fā)中積累的使用圖像采集卡經(jīng)驗(yàn),介紹如何自己是如何將采集卡集成到圖像開發(fā)系統(tǒng)中,希望能夠給目前正需要利用圖像采集卡開發(fā)自己的圖像處理系統(tǒng)的朋友有所幫助。 使用的攝像機(jī)采用臺(tái)灣BENTECH INDUSTRIAL 有限公司生產(chǎn)的CV-155L黑白攝像機(jī)。該攝像機(jī)分辨率為752x582。圖象采集卡我們采用北京中科院科技嘉公司開發(fā)的基于PCI 總線的CA-MPE 1000 黑白圖象采集卡。使用圖像采集卡分三步,首先安裝采集卡的驅(qū)動(dòng)程序,并將虛擬驅(qū)動(dòng)文件VxD.vxd拷貝到Windows的SYSTEM目錄下;這時(shí)候就可以進(jìn)

3、入開發(fā)狀態(tài)了,進(jìn)入VC開發(fā)平臺(tái),生成新的項(xiàng)目,由于生產(chǎn)廠家為圖像采集卡提供了以mpew32.dll、mpew32.lib命名的庫文件,庫中提供了初始硬件、采集圖像等函數(shù),為使用這些函數(shù),在新項(xiàng)目上連接該動(dòng)態(tài)庫;最后一步就是采集圖像并顯示處理了,這一步要設(shè)置系統(tǒng)調(diào)色板,因?yàn)椴杉ㄌ峁┑氖锹銏D形式,既純圖像數(shù)據(jù),沒有圖像的規(guī)格和調(diào)色板信息,這些需要開發(fā)者自己規(guī)定實(shí)現(xiàn),下面是實(shí)現(xiàn)的部分代碼: CTestView:CTestView() W32_Init_MPE1000();/初始化采集卡W32_Modify_Contrast(50);/下面的函數(shù)是為了對采集卡進(jìn)行預(yù)設(shè)置W32_Modify_Brig

4、htness(45);/設(shè)置亮度W32_Set_HP_Value(945);/設(shè)置水平采集點(diǎn)數(shù)wCurrent_Frame = 1;/當(dāng)前幀為1,獲取的圖像就是從這幀取得的/ 設(shè)置采集信號(hào)源,僅對MPE1000有效W32_Set_Input_Source(1);W32_CACardParam(AD_SETHPFREQ,hpGrabFreq);W32_Set_PAL_Range(1250, 1024);/設(shè)置水平采集范圍W32_Set_VGA_Mode ( 1 );wGrabWinX1 = 0; / 采集窗口的左上角的坐標(biāo)wGrabWinY1 = 0;firstTime=TRUE;bGrabMo

5、de = FRAME;bZipMode = ZIPPLE; /lpDib=NULL;/存放獲取的圖像數(shù)據(jù) CTestView:CTestView()W32_Close_MPE1000();/關(guān)閉采集卡/顯示采集的圖象,雙擊鼠標(biāo)采集停止void CTestView:OnGraboneframe()/ TODO: Add your command handler code herewCurrent_Frame = 1;/ 設(shè)置采集目標(biāo)為內(nèi)存W32_CACardParam (AD_SETGRABDEST, CA_GRABMEM);/ 啟動(dòng)采集if (lpDib != NULL)GlobalUnloc

6、k( hglbDIB );GlobalFree( hglbDIB );/ 分配內(nèi)存hglbDIB=GlobalAlloc(GHND, (DWORD)wImgWidth*(DWORD)wImgHeight );lpDib = (BYTE *)GlobalLock( hglbDIB );hdc = GetDC()-GetSafeHdc( ) ;if(lpDib != NULL)cxDib = wImgWidth;cyDib = wImgHeight;SetLogicPal( hdc, cxDib, cyDib, 8 ); SetStretchBltMode (hdc, COLORONCOLOR)

7、; bGrabMark = TRUE; while (bGrabMark = TRUE)if(msg.message=WM_LBUTTONDBLCLK)bGrabMark = FALSE; W32_ReadXMS2Buf (wCurrent_Frame,lpDib) ;SetDIBitsToDevice (hdc, 0, 0, cxDib, cyDib, 0, 0,0, cyDib, (LPSTR) lpDib,bmi,DIB_RGB_COLORS) ;/ 停止采集W32_CAStopCapture();:ReleaseDC( GetSafeHwnd(), hdc );return ;/將下面

8、這個(gè)函數(shù)添加在視圖類的CTestView:OnSize()函數(shù)中,就可以對系統(tǒng)的調(diào)色板進(jìn)行設(shè)置。void WINAPI InitLogicPal( HDC hdc , short width, short height, WORD bitCount )int j, i;short cxDib, cyDib;LOGPALETTE * pLogPal; j=256 ; if (pLogPal=(LOGPALETTE *)malloc(sizeof(LOGPALETTE) + (j*sizeof(PALETTEENTRY) = NULL)return ; pLogPal-palVersion=0x3

9、00;pLogPal-palNumEntries=j; for (i=0;i pLogPal-palPalEntryi.peRed = i ;pLogPal-palPalEntryi.peGreen = i ;pLogPal-palPalEntryi.peBlue = i ;pLogPal-palPalEntryi.peFlags = 0; hPal = :CreatePalette(pLogPal);delete pLogPal;:SelectPalette(hdc,hPal,0);:RealizePalette(hdc); cxDib = width; cyDib = height; if

10、 ( (bmi = (BITMAPINFO *)malloc(sizeof(BITMAPINFOHEADER) + j*sizeof(RGBQUAD) = NULL )return ;/bmi為全局變量,用于顯示圖像時(shí)用bmi-bmiHeader.biSize = 40;bmi-bmiHeader.biWidth = cxDib;bmi-bmiHeader.biHeight = cyDib;bmi-bmiHeader.biPlanes = 1 ; bmi-bmiHeader.biBitCount = bitCount ; bmi-bmiHeader.biCompression = 0 ;bmi

11、-bmiHeader.biSizeImage = 0 ;bmi-bmiHeader.biXPelsPerMeter = 0;bmi-bmiHeader.biYPelsPerMeter = 0;bmi-bmiHeader.biClrUsed = 0;bmi-bmiHeader.biClrImportant = 0; for (i=0;i bmi-bmiColorsi.rgbBlue = i ;bmi-bmiColorsi.rgbGreen = i ;bmi-bmiColorsi.rgbRed = i ;bmi-bmiColorsi.rgbReserved = 0 ; 視頻畫中畫技術(shù) 畫中畫這個(gè)概

12、念類似與彩色電視機(jī)畫中畫,就是在一幅大的圖像內(nèi)顯示另外一幅內(nèi)容不同的小的圖像,小圖像的尺寸大小一般地說為大圖像尺寸的1/4或1/9,顯示位置在大圖像的右上角。這種技術(shù)不僅在電視技術(shù)中,在可視電話系統(tǒng)也可以發(fā)現(xiàn)這種技術(shù)的身影,它們都是依靠硬件來實(shí)現(xiàn)的,但是如何在VC開發(fā)平臺(tái)上用編程語言來將該功能添加到自己開發(fā)的視頻監(jiān)控軟件,為使用者提供更大的信息量呢?也許讀者最容易想到的是首先顯示大圖像,然后再在一個(gè)固定位置畫第二幅小圖像,這種技術(shù)技術(shù)如果對于靜止圖像當(dāng)然沒有問題,但是對于視頻流,由于每一秒鐘需要畫25?,即25幅圖像,這樣一來計(jì)算機(jī)需要不停的畫不停的擦除,會(huì)給用戶以閃爍的感覺,如何解決這個(gè)問題

13、呢?有的參考書上將大小圖像分快顯示,這種方法要將待顯示的圖像數(shù)據(jù)與顯示位置的關(guān)系對應(yīng)起來,容易出錯(cuò)不說,而且麻煩,且速度慢,為此,我對該方法進(jìn)行了改進(jìn),得到了滿意的效果。實(shí)現(xiàn)的代碼如下: void pictureinpicture( ).CBitmap bitmap,*oldmap;pData1=(BYTE*)new charbiWidth*biHeight *3;/biWidth和biHeight為視頻采集卡獲取/的圖像尺寸。Read(pData1,bih.biWidth*bih.biHeight *3);/該函數(shù)從采集卡中獲取數(shù)據(jù)CClientDC dc(this);m_pBMI1= ne

14、w BITMAPINFO;/自定義的BMP文件信息結(jié)構(gòu),用于后面的圖像顯示m_pBMI1-bmiHeader.biBitCount=24;m_pBMI1-bmiHeader.biClrImportant=0;m_pBMI1-bmiHeader.biClrUsed=0;m_pBMI1-bmiHeader.biCompression=0;m_pBMI1-bmiHeader.biHeight=biHeight;m_pBMI1-bmiHeader.biPlanes=1;m_pBMI1-bmiHeader.biSize=40;m_pBMI1-bmiHeader.biSizeImage=WIDTHBYTE

15、S(biWidth*8)*biHeight*3;m_pBMI1-bmiHeader.biWidth=biWidth;m_pBMI1-bmiHeader.biXPelsPerMeter=0;m_pBMI1-bmiHeader.biYPelsPerMeter=0;/pData2=(BYTE*)new charbiWidth1*biHeight1 *3;/申請存放小圖像的緩沖區(qū)Read(pData2,biWidth1*biHeight1 *3);/向該緩沖區(qū)讀數(shù)據(jù)m_pBMI2= new BITMAPINFO;m_pBMI2-bmiHeader.biBitCount=24;m_pBMI2-bmiHe

16、ader.biClrImportant=0;m_pBMI2-bmiHeader.biClrUsed=0;m_pBMI2-bmiHeader.biCompression=0;m_pBMI2-bmiHeader.biHeight=biHeight1;m_pBMI2-bmiHeader.biPlanes=1;m_pBMI2-bmiHeader.biSize=40;m_pBMI2-bmiHeader.biSizeImage=WIDTHBYTES(biWidth1*8)*biHeight1*3;m_pBMI2-bmiHeader.biWidth=biWidth1;m_pBMI2-bmiHeader.bi

17、XPelsPerMeter=0;m_pBMI2-bmiHeader.biYPelsPerMeter=0;/下面實(shí)現(xiàn)畫中畫的顯示 CDC MemDc;MemDc.CreateCompatibleDC(&dc);bitmap.CreateCompatibleBitmap(&dc,biWidth,biHeight);oldmap=MemDc.SelectObject(&bitmap);:StretchDIBits(MemDc.m_hDC,0,0,biWidth,biHeight,0,0,biWidth,biHeight,pData1,m_pBMI1,DIB_RGB_COLORS,SRCCOPY);/首先將大圖像畫在內(nèi)寸上下文中 :StretchDIBits(MemDc.m_hDC,20,20,biWidth1,biHeight1,_0,0,biW

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論