熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 基于1394總線的工業相機圖像采集程序設計

基于1394總線的工業相機圖像采集程序設計

時間:2009-12-11 10:30:37來源:limin

導語:?通過對目前兩種圖像采集方法的比較,指出以數碼相機組合PC機進行圖像采集的優點。同時,在分析了IEEE1394總線標準的功能和特點后,揭示了1394總線在圖像采集方面的優越性能。
[b]0 引言 [/b] 目前,以CCD技術為核心的圖像獲取設備可以分為兩類: 1)由CCD攝像頭、圖像采集卡和計算機組成的圖像采集系統,利用圖像采集卡把CCD傳來的模擬圖像信號轉換為數字圖像信號并傳送給計算機處理; 2)由CCD相機本身帶有的數字化設備直接將數字圖像信號通過端口傳送給計算機。 其中前者作為經典的圖像采集系統在圖像采集的應用中一直居于主導地位[1],但是,性能較好的采集卡價格昂貴,同時由于需求不同,常常需要對采集卡進行二次開發,而大多采集卡生產廠家封裝了自己的函數和鏈接庫,因此在二次開發時對開發人員的專業素質要求較高。近年來隨著CCD相機技術的不斷進步,以數碼相機為代表的第二類圖像采集設備以其方便快捷、采集速度快、高分辨率、高性價比等特點受到人們的廣泛關注,已經在一些領域取得了很好的應用。 對于第二類圖像采集設備,因為是CCD相機直接提供數字信號,因此可以獲得高品質的圖像,但同時,也對圖像數據的傳輸速率提出了較高的要求。一般CCD輸出可以遵循RS-422、RS-644和IEEE1394等數字輸出接口標準。其中,RS-422的數據傳輸速率比較低,不能滿足大量圖像數據傳輸的要求;而RS-644在進行傳輸數據時,必須外加圖像采集卡,這樣就增加了整個系統的造價。而IEEE1394不僅能夠提供高速的數據速率,克服RS-422數據傳輸速率低的缺點,同時在和CCD相連的時候不需要外加圖像采集卡[2]。 IEEE1394,又稱FireWire(火線),是1987年Apple公司發布的一個高速串行總線標準。該標準在1995年被電氣與電子工程師協會(IEEE)采納,稱之為IEEE1394。1995年的IEEE1394-1995其數據傳輸率為100/200/400Mbps,后來其改進版IEEE1394b的數據傳輸率可達到800Mbps,1.6Gbps及3.2Gbps。所以,IEEE1394總線是目前為止最快的串行總線[3]。IEEE1394總線具有如下特點:(1)數字接口:數據以數字形式傳輸,不需數模轉換,從而降低了設備的復雜性,保證了信號的質量;(2)即插即用;(3) 速度快,支持同步和異步兩種數據傳輸模式;(4) 物理體積小,制造成本低,易于安裝;(5) 價廉?;谶@些特點,1394被廣泛應用于多媒體領域,特別是數碼攝像機。 目前,接觸最多的是對圖像采集卡的編程控制,而關于利用第二類圖像采集設備進行圖像采集時的編程方法介紹很少。因此,本文著重闡述在VC++平臺下應用基于1394接口的第二類圖像采集設備進行圖像采集的編程過程。 1 圖像采集系統的硬件組成及開發平臺 本文中圖像采集的硬件組成:工業數碼相機,1394b卡和PC機。在PC機主機的空余PCI插槽上安裝上系統所需的1394b卡,通過1394接口把相機在PC機并安裝驅動程序,這樣,本系統所需要的硬件環境就完成了。 使用的系統平臺時Windows 2000,開發環境時Microsoft VC++6.0。 [b]2 圖像采集的實現 [/b] 圖像采集系統的編寫,主要內容包括:人機交互界面、從CCD相機接收圖像信號并保存、圖像在采集界面顯示及對相機的控制。以下將對其逐一闡述。 2.1 建立采集界面 對于采集界面,可以創建為對話框形式,也可以采用文檔結構,本文采用后者: 1)生成一個MFC AppWizard(exe)多文檔應用程序框架(應用程序名稱:PictureTest)。 2)連接相機的動態鏈接庫(因為要控制相機采圖,所以會用到相機的庫函數)。找到相機安裝的目錄文件,把include文件夾的文件路徑加入到Project->Setting->C/C++->;preprocessor->Additional include directories的編輯框中;把lib文件夾的文件路徑加入到Project->Setting->Link->Input->Additional library path的編輯框中,同時在…->Input->Object/library modules編輯框中輸入pgrflycapture.lib pgrflycapturegui.lib。 3)包含相機控制類的頭文件,在工程中的CPictureTestDoc.h文件中加入頭文件: #include #include 并定義共有變量: FlyCaptureContext context; //相機功能句柄 CameraGUIContext m_guicontext; //圖形用戶界面(GUI)句柄 4)用相機采圖時,首先需要對其初始化,這部分工作我們希望在應用程序打開時由系統自己完成。在工程中的CPictureTestDoc.cpp文件中對相機進行初始化: 首先,在構造函數中對定義的功能句柄初始化: context=NULL; //相機功能句柄初始化 m_guicontext=NULL; //圖像用戶界面句柄初始化 然后,在OnNewDocument()函數中連接相機并初始化: flycaptureCreateContext( &context );//連接相機 guierror=pgrcamguiCreateContext( &m_guicontext );//創建GUI連接 flycaptureInitialize( context, _CAMERA_INDEX );//相機初始化 2.2 圖像抓取 在一些自動化系統中,可能在多處用到抓圖代碼,因此為增強程序的可讀性,減少編程代碼,我們編寫一個功能函數,由它來完成抓圖并保存功能,這樣在需要的時候,直接調用函數即可。在CPictureTestDoc.cpp文件中加入功能函數PictureGrab(),用它來實現圖像抓取,其核心代碼如下: flycaptureStart( context, FLYCAPTURE_VIDEOMODE_ANY, FLYCAPTURE_FRAMERATE_ANY );//相機開啟,其中三個參數分別為:相機功能句柄,視頻模式,幀頻 flycaptureGrabImage2( context, &image );//抓圖,image是圖像在內存中的存放地址 flycaptureConvertImage( context, &image, &imageConverted );//圖像格式轉換,imageConverted為轉換后圖像在內存中的地址 flycaptureSaveImage(context,&imageConverted,("TestPicture.bmp"),SAVE_FORMAT_C );//保存圖像,TestPicture.bmp為圖像保存名稱,SAVE_FORMAT_C為圖像保存格式,即BMP格式 flycaptureStop( context );//停止相機 通過上述程序抓到的圖像,保存在本工程文件夾中,這樣,在后續的圖像處理時,可以在程序中直接通過文件名訪問圖像文件,而不需要添加路徑,簡化了程序代碼。 2.3 圖像顯示 Windows位圖由兩種:DDB和DIB。前者依賴于設備(Device Dependent Bitmap),與MFC 6.0中的CBitmap類相對應,它們在內存中的結構和位置依賴于管理它們的設備驅動。DIB是一種“格式”,它可以存放在內存中,也可以存儲成文件,即常見的BMP文件。Visual C++的MFC中,以CBitmap類代表DDB圖像,極大地方便了編程人員對DDB的使用。然而通常情況下,沒有人會把DDB圖像存儲成文件,因此我們使用更多的是DIB,遺憾的是MFC對于DIB的支持幾乎可以說是沒有,因此在編制圖像處理的程序時,有必要設計可以重復使用的類CDib,專門用來處理DIB[4](關于CDib,讀者可以參閱相關書目,本文不再累述)。本文中,為了方便后續的圖像處理,在圖像顯示時采用類CDib技術。因為在實際應用中,我們往往需要圖像的連續讀入,因此本文直接采用文件名讀入圖像,這樣可以使采集的圖像實時的顯示。 首先,定義類CDib,并在CPictureTestDoc.h中定義共有變量: CDib m_dib;//CDib類對象,用于位圖文件的讀寫 然后,在CPictureTestDoc.cpp文件中添加功能函數:PictureRead(),在其中加入代碼: CString strPathName; strPathName = _T("TestPicture.bmp"); if (m_dib.Read(strPathName) == TRUE) { SetModifiedFlag(FALSE); // start off with unmodified return ; } 并在CPictureTestView.cpp文件中的OnDraw(CDC* pDC)函數中,加入如下代碼: CPictureTestDoc* pDoc = GetDocument(); CDib *pDib=pDoc->GetPDib();//返回m_dib的指針 CSize sizeFileDib = pDib->GetDimensions();//獲取DIB的尺寸 pDib->Draw(pDC, CPoint(0, 0), sizeFileDib); //顯示DIB 在OnInitialUpdate()函數中設置滾動窗口: CDib *pDib=pDoc->GetPDib();//獲取DIB的指針 if(pDib!=NULL) SetScrollSizes(MM_TEXT, pDib->GetDimensions());//根據DIB尺寸設置視窗大小 最后,添加圖像采集命令菜單,其響應函數為: void CPictureTestView::OnTestStart() {   CPictureTestDoc * pDoc = GetDocument();   pDoc->;pictureGrab ();//抓圖   pDoc->;pictureRead();//把圖像讀入內存   OnInitialUpdate();//設置滾動窗口 } 編譯通過后,單擊圖像采集命令,即可實時獲取圖像。
[align=center]圖1 圖像采集實例 Fig.1 The example of image acquisition[/align] 2.4 相機設置 在圖像采集時,我們往往需要對相機的參數如圖像格式、分辨率、幀頻等進行設定,同時,為了獲取高品質圖像,我們還需要做白平衡調節。當然,這些參數的設定我們可以在相機初始化時由代碼實現,但是,在實際應用中,為了達到最佳效果,我們需要多次調試才能達成,如果采用修改代碼的方法,調試過程會很麻煩。數碼相機一般都有設置菜單,我們要做的就是,通過代碼來調用相機的設置菜單,設置好參數后,參數會自動保存并加載。這樣,調試的時候會方便很多。創建相機設置菜單命令,其響應函數如下: void CPictureTestDoc::OnTestCameraset() { pgrcamguiToggleSettingsWindowState( m_guicontext, AfxGetApp()->m_pMainWnd->GetSafeHwnd() );//相機設置對話框 }
[align=center]圖2 相機參數設置界面 Fig.2 Fig. 4.2 Interface for setting the parameter of the camera[/align] 3 結 論 本文實現的圖像采集系統可通過1394接口對數碼機進行格式/模式/幀率的設置,光學參數的設定,采集畫面的實時顯示,而且能夠對攝像機進行自動控制,系統穩定可靠,利用它可以完成一些復雜項目中的實時連續的圖像采集過程,如高速公路車輛和車牌的自動識別管理系統、工業生產中的產品外包裝檢測系統等,具有很大的實用性 致 謝 感謝我的導師徐志祥副教授在本論文的撰寫過程中給予的指導。 參 考 文 獻 [1] 閆守成,全厚德,李擎.Windows環境下的數字圖像采集技術研究.微計算機信息,2006,2(1):252-254. [2] 畢美華,劉文文. 基于VC++6.0的IEEE1394 CCD應用程序開發. 現代顯示, 2009,3:38-42. [3] 劉義先,宋申民,陳興林,強文義.基于IEEE1394總線的圖像采集處理系統實現.控制工程,2006,13:110-115. [4] 陳健.Visual C/C++ 編程精選集錦-在Visual C++中實現設備無關位圖類CDib.北京:科學出版社,2003. Programming of Image Acquisition with Industrial Camera Based on 1394 Bus LI Xiao-feng ,XU Zhi-xiang (School of Mechanical Engineering, Dalian University of Technology, Dalian 116024,China) Abstract: Through comparisons of two image acquisition methods at present, the advantages of combining digital camera with PC to grab image are pointed out. Meanwhile, the paper reveals that IEEE1394 bus has superior performances in image acquisition after analyzing the functions and characteristics of IEEE1394 standard. For this, the programming method and skill to grab image by using device with 1394 digital interface are introduced through concrete examples. Key words: IEEE1394; VC++; DIB; image acquisition

標簽:

點贊

分享到:

上一篇:變頻調速節能量的計算方法

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

相關資訊

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 清丰县| 五原县| 渑池县| 福贡县| 绥德县| 海晏县| 唐海县| 永年县| 都安| 湘潭市| 邵武市| 杭州市| 吉木萨尔县| 潼关县| 内黄县| 仁布县| 萝北县| 洪雅县| 江阴市| 平南县| 惠州市| 莲花县| 林州市| 介休市| 竹北市| 海丰县| 承德市| 广南县| 灌南县| 永寿县| 扎兰屯市| 神池县| 田林县| 县级市| 石渠县| 平安县| 丁青县| 平昌县| 郧西县| 吴江市| 略阳县|