基于1394总线的工业相机图像采集方案设计

发布于:2024-07-17 编辑:匿名 来源:网络

0简介  目前以CCD技术为核心的图像采集设备可分为两类:  1)由CCD相机、图像采集卡组成图像采集系统利用图像采集卡将CCD传来的模拟图像信号转换为数字图像信号并传输至计算机进行处理;   2)CCD摄像机本身的数字设备直接将数字图像信号通过端口传输到计算机。

  前者作为经典的图像采集系统,在图像采集应用中一直处于主导地位[1]。

但性能较好的采集卡价格昂贵,而且由于需求不同,往往需要对采集卡进行二次开发。

并且大多数采集卡厂家都封装了自己的功能和链接库,因此在二次开发时对开发人员的专业素质要求较高。

近年来,随着CCD相机技术的不断进步,以数码相机为代表的第二类图像采集设备以其使用方便、采集速度快、分辨率高、性价比高等优点受到了广泛关注,并已被应用于一些领域。

取得了很好的应用效果。

  对于第二类图像采集设备,由于CCD相机直接提供数字信号,可以获得高质量的图像,但同时也对图像数据的传输速率提出了更高的要求。

一般来说,CCD输出可以遵循RS-、RS-和IEEE等数字输出接口标准。

其中RS-的数据传输速率较低,无法满足传输大量图像数据的要求; RS-在传输数据时必须添加图像采集卡,增加了整个系统的成本。

IEEE不仅可以提供高速数据速率,克服RS-数据传输速率低的缺点,而且在连接CCD时不需要外部图像采集卡[2]。

  IEEE,也称为FireWire,是苹果公司于2016年发布的高速串行总线标准。

该标准于2007年被电气和电子工程师协会(IEEE)采用,简称IEEE。

1999年IEEE的数据传输速率为 //Mbps。

后来其改进版本IEEEb的数据传输速率可以达到Mbps、1.6Gbps和3.2Gbps。

因此,IEEE总线是迄今为止最快的串行总线[3]。

IEEE总线具有以下特点: (1)数字接口:数据以数字形式传输,无需数模转换,从而降低了设备的复杂度,保证了信号质量; (2)即插即用; (3)速度快,支持同步和异步数据传输模式; (4)物理尺寸小,制造成本低,易于安装; (5)便宜。

基于这些特点,它被广泛应用于多媒体领域,尤其是数码相机领域。

  目前接触最多的是图像采集卡的编程控制,而对于使用第二类图像采集设备进行图像采集的编程方法却很少介绍。

因此,本文重点讨论在VC++平台下使用第二类基于接口的图像采集设备进行图像采集的编程过程。

  1 图像采集系统的硬件组成及开发平台  本文中图像采集的硬件组成:工业数码相机、B卡和PC。

将系统所需的B卡安装在PC主机空闲的PCI插槽中,通过接口将摄像机与PC连接并安装驱动程序。

这样,系统所需的硬件环境就完成了。

  使用的系统平台为Windows,开发环境为Microsoft VC+.0。

  2 图像采集的实现  图像采集系统的编写,主要内容包括:人机交互界面、接收并保存来自CCD相机的图像信号、在采集界面上显示图像以及控制相机。

下面将对其进行一一解释。

  2.1 建立采集界面   采集界面可以以对话框的形式创建,也可以以文档结构的形式创建。

本文使用后者:  1)生成一个MFC AppWizard(exe)多文档应用程序框架(应用程序名称:PictureTest)。

  2)连接相机的动态链接库(因为需要控制相机拍照,所以会用到相机的库函数)。

找到相机安装的目录文件,将include文件夹的文件路径添加到Project->Setting->C/C++->;preprocessor->Additional includedirectories的编辑框中;将lib文件夹的文件路径添加到Project->Setting->Link->Input->Additionallibrarypath编辑框,并在...->Input->Object/librarymodules编辑中输入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图像捕获  在一些自动化系统中,捕获代码可能会在多个地方使用,所以为了增强可读性程序的,reduce编程代码中,我们编写了一个功能函数来完成捕获和保存功能,这样在需要的时候,可以直接调用该函数。

在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。

因此,在编写图像处理程序时,需要设计专门用于处理DIB的可重用类CDib[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)  | 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->;图片抓取(); // 捕获图片  pDoc->;图片读取(); // 将图像读入内存   OnInitialUpdate();//设置滚动窗口   }  编译通过后,点击图像获取命令即可实时获取图像。

  图1 图像采集示例  图1 图像采集示例  2.4 相机设置  在采集图像时,我们经常需要设置相机的参数,如图像格式、分辨率、帧率等进行设置,同时为了获得高质量的图像,我们还需要进行白平衡的调整。

基于1394总线的工业相机图像采集方案设计

当然,我们可以在相机初始化时通过代码来设置这些参数。

但在实际应用中,为了达到最好的效果,我们需要多次调试才能实现。

如果我们修改代码,调试过程会非常麻烦。

数码相机通常有一个设置菜单。

我们要做的就是通过代码调用相机的设置菜单。

设置参数后,参数将自动保存和加载。

这将使调试变得更加容易。

使用以下响应函数创建相机设置菜单命令:   void CPictureTestDoc::OnTestCameraset()   {  pgrcamguiToggleSettingsWindowState(  m_guicontext, AfxGetApp()->m_pMainWnd->GetSafeHwnd() );//相机设置对话框  }  图2 相机参数设置界面  图2 图4.2 相机参数设置界面  3 结论  本文实现的图像采集系统可以设置数字图像的格式/模式/帧率机器通过该界面,设置光学参数,实时显示采集画面,并能自动控制相机。

,系统稳定可靠。

可以用来完成一些复杂项目中的实时连续图像采集过程,如公路车辆和车牌的自动识别与管理系统、工业生产中的产品包装检测系统等,具有很大的实用性。

基于1394总线的工业相机图像采集方案设计

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • “油管”怎么说?看看苹果、谷歌和网易有道如何翻译对话

    “油管”怎么说?看看苹果、谷歌和网易有道如何翻译对话

    2010年,中国宇航员刘培强在领航者国际空间站上睁开了眼睛。 这是他在这里工作的最后一天。 刘培强戴上同声传译耳机,下了床。 一位来自俄罗斯的宇航员递给他一瓶伏特Plus,并说:“退休快乐,伙计!”。 刘培强用中文回应了同事的善意,而同事则用俄语与他交谈,并偷偷地将

    06-21

  • 特斯拉的全新“全自动驾驶”系统完全放弃了雷达,是“颠覆分子”还是“杀人犯”?

    特斯拉的全新“全自动驾驶”系统完全放弃了雷达,是“颠覆分子”还是“杀人犯”?

    马斯克长期以来一直在宣传他的FSD(Full Self Driving,全自动辅助驾驶系统)。 他在2009年表示,“期待已久”的新版FSD系统将于8月推出。 正如您可能已经猜到的那样,新系统最终未能按预期实现。 2009年,马斯克又做了同样的事情,为粉丝画了一个“大蛋糕”,颇有“狼来了”

    06-21

  • eFreight获招商创投2000万元B轮融资

    eFreight获招商创投2000万元B轮融资

    投资界8月20日消息,据相关媒体报道,跨境物流信息服务商eFre??ight获中国1万元B轮战略投资招商创投。   翌飞锐特是跨境航空物流解决方案服务商。 依托work@efreigh平台,为中国货运代理提供“电子货运”相关解决方案,实现与国际行业标准全面接轨。   自成立以来,基于互

    06-18

  • 见新势力NO.13 -车迈超电专访创始人孙泽锋

    见新势力NO.13 -车迈超电专访创始人孙泽锋

    随着新能源汽车持续受到广泛关注,新车型、新市场、新认知下车企如何提升销量以及用户如何选择购买?一辆理想的智能电动汽车已成为新能源、智能时代的汽车营销难题。 第13期《看见新力量》采访了阿里巴巴众神之战&宝马“互联网+汽车”赛道全球总决赛的获胜者——车迈科技&超级

    06-18

  • 老零食哥收拾过冬的行囊

    老零食哥收拾过冬的行囊

    良品铺子最近很忙。 首先,11月27日,良品铺子发布公告,宣布实施品牌成立17年来首次大规模降价。 畅销产品平均降价22%,最高降幅达到45%。 随后又与零食店赵一鸣零食发生公开争吵,并卷入诉讼。 种种迹象表明,曾经以“高端零食”为傲的良品铺子似乎不得不放下现状,做出一些

    06-18

  • 马斯克的公司对虐待猴子的行为做出了回应,动物实验什么时候结束?

    马斯克的公司对虐待猴子的行为做出了回应,动物实验什么时候结束?

    四月,一只名叫佩格的猴子敏捷地走到电脑前,用意念打起了经典的乒乓球游戏。 屏幕上的乒乓球由他的大脑控制,来回移动。 ,激战。 目前尚不清楚佩格是否还活着。 这只猴子来自马斯克的脑机接口公司Neuralink。 植入其大脑中的思想控制芯片将使人类在未来实现“数字永生”。

    06-21

  • 创业者们想成为中国版雪花的梦想破灭了吗?

    创业者们想成为中国版雪花的梦想破灭了吗?

    “甲骨文在中国的营收怎么会比不上阿里云呢?”年中,IDC的一位分析师突然收到一封投诉信:Oracle质疑他们最新发布的《年中国关系型数据库市场研究报告》,称报告的数据存在偏差。 IDC在这份报告中得出的结论是,长期占据中国市场第一宝座的甲骨文失去了位置,阿里云占据了头

    06-18

  • 12个月内第四轮,小熊U租完成数亿元B轮融资

    12个月内第四轮,小熊U租完成数亿元B轮融资

    据投资界5月16日消息,IT办公设备运营商小熊U租宣布完成数百笔融资数百万元B轮融资。 本轮由国家中小企业发展基金、东方富海领投,老股东大辰创投、前海长城跟投。 这是国家中小企业发展基金(深圳南山有限合伙)最大的单一投资项目。 据小熊U租赁创始人及CEO胡祚雄介绍,本

    06-18

  • 公安部:2021年一季度新增机动车登记966万辆,创同期历史新高

    公安部:2021年一季度新增机动车登记966万辆,创同期历史新高

    据公安部统计,截至今年3月,机动车保有量全国保有量3.78亿辆,其中汽车2.87亿辆;机动车驾驶人人口为4.63亿,其中汽车司机为4.25亿。 今年一季度,全国新登记机动车1万辆,创同期历史新高。 数万名新获得执照的司机。

    06-18

  • 斯微生物完成12亿元人民币融资,招商健康、红杉中国、晶林投资、药明康德联合领投

    斯微生物完成12亿元人民币融资,招商健康、红杉中国、晶林投资、药明康德联合领投

    投资界(ID:pedaily)6月3日消息,近日,斯微(上海)生物科技有限公司宣布正式完成新一轮12亿元融资。 本轮融资由招商健康、红杉资本中国基金、晶林投资、药明康德以及奥博资本、易方达资本、中信证券投资等专业医疗健康投资机构联合领投。 曾任财务顾问。 本轮融资将主要用

    06-17

  • 全球客户服务管理软件介绍及其对中国企业走出去的积极作用

    全球客户服务管理软件介绍及其对中国企业走出去的积极作用

    .wp-block-column h3{margin-left:0} 随着全球化进程的加快和市场竞争的日益激烈,客户服务成为关键企业成功的重要因素之一。 为了提供高效、优质的客户服务,许多企业开始采用全球客户服务管理软件。 本文将介绍全球客户服务管理软件的概念、功能及其对中国企业走出去的积极

    06-18

  • 德国女性健康科技公司Inne获880万美元A轮融资

    德国女性健康科技公司Inne获880万美元A轮融资

    据投资界11月4日消息,德国女性健康科技公司Inne获得1万美元A轮融资,领投方为Blossom Capital、Monkfish Equity 和一些天使投资人 Ginseng 投了。 德国女性健康科技公司Inne计划明年推出一款家用唾液检测设备,追踪女性每天的激素水平,识别月经周期并预测这一天怀孕的概率

    06-18