精华内容
下载资源
问答
  • 相机曝光增益时间控制代码C语言代码封的库函数
  • 但是,Matlab获取相机参数往往会自动调整增益和曝光,导致亮度值不断在变。 正文 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下...

    MATLAB固定工业相机曝光时间和增益系数

    为什么写这篇博文?

    两个原因。
    Matlab可以控制工业相机很多参数。但是,网络上关于其参数的配置文章较少,更多出现在论坛之中。这是其一。
    在做光学实验时候,常常需要亮度的绝对值。但是,Matlab获取相机参数往往会自动调整增益和曝光,导致亮度值不断在变。

    正文

    首先查看相机有那些可以配置的参数。

    vid = videoinput('winvideo', 2, 'RGB8_1280x1024');
    src = getselectedsource(vid);
    get(src);
    

    在get(src)后,出现可配置参数的列表。

      General Settings:
        Parent = [1x1 videoinput]
        Selected = on
        SourceName = input1
        Tag = [0x0 string]
        Type = videosource
    
      Device Specific Properties:
        Brightness = 0
        Contrast = 0
        Exposure = -5
        ExposureMode = auto
        FrameRate = 30.0000
        Gain = 8
        GainMode = auto
    

    其中’ExposureMode’和’GainMode’分别是曝光模式和增益模式。如果是自动,即auto,Matlab会自动调整曝光。对亮度的绝对值无要求的实验这不是障碍,甚至是优点。但是对于亮度绝对值敏感的实验,这就要命了。
    更改方法如下:

    set(src,'ExposureMode','Manual');
    set(src,'GainMode','Manual');
    

    此时,相机将工作在固定的曝光模式和增益系数下。

    另外,关于getsnapshot()这个函数,有很多细节值得注意。通常,人们习惯如此配置相机。

    set(vid,'FramesPerTrigger',1)
    set(vid,'TriggerRepeat',1)
    

    或者

    vid.FramesPerTrigger = 1;
    vid.TriggerRepeat=1;
    

    以上两个代码段含义相同,是同一种做法的两种代码。

    So far so good,看起来没什么问题。问题在于,紧随其后的是

    img=getsnapshot(vid);
    

    看看官方文档怎么描述“getsnapshot()”的:
    在这里插入图片描述
    翻译一下这段注释:Frame=GETSNAPSHOT(OBJ)立刻返回一帧图像。被返回的此帧数据独立于FramesPerTrigger特性,也不影响FramesAvailable或者FramesAcquired 特性。既然此函数不需要配置相机帧率和Trigger,为什么还要配置呢?答案在于运行时间。

    相机工作在默认状态,参数如下

      General Settings:
        DeviceID = 2
        DiskLogger = []
        DiskLoggerFrameCount = 0
        EventLog = [1×0 struct]
        FrameGrabInterval = 1
        FramesAcquired = 0
        FramesAvailable = 0
        FramesPerTrigger = 10
        Logging = off
        LoggingMode = memory
        Name = RGB8_1280x1024-winvideo-2
        NumberOfBands = 1
        Previewing = off
        ROIPosition = [0 0 1280 1024]
        Running = off
        Tag = 
        Timeout = 10
        Type = videoinput
        UserData = []
        VideoFormat = RGB8_1280x1024
        VideoResolution = [1280 1024]
    
      Color Space Settings:
        BayerSensorAlignment = grbg
        ReturnedColorSpace = grayscale
    
      Callback Function Settings:
        ErrorFcn = @imaqcallback
        FramesAcquiredFcn = []
        FramesAcquiredFcnCount = 0
        StartFcn = []
        StopFcn = []
        TimerFcn = []
        TimerPeriod = 1
        TriggerFcn = []
    
      Trigger Settings:
        InitialTriggerTime = []
        TriggerCondition = none
        TriggerFrameDelay = 0
        TriggerRepeat = 0
        TriggersExecuted = 0
        TriggerSource = none
        TriggerType = immediate
    
      Acquisition Sources:
        SelectedSourceName = input1
        Source = [1×1 videosource]
    

    在默认状态下,我拍摄了诸多激光干涉图样。拍摄正常。从目前实验看来,TriggerRepeat和FramesPerTrigger并没有影响到Getsnapshot()函数的运行结果。但是,尽管不影响运行结果,它会影响运行时间(11代i7,仅这个函数就用时1s)。如果不设置这两个参数,Getsnapshot()函数会变得非常耗时。

    通常,为了追求更少的运行时间,会进行如下配置

    set(vid,'FramesPerTrigger',inf)
    set(vid,'TriggerRepeat',0) % 相机默认即是0,可以不写此行代码。
    

    另外,随着运行时间增加,相机会在电脑存入很多数据,占用RAM。常用flushdata()函数清理。

    展开全文
  • 以下概述以下自动曝光,自动增益,图像深度是什么意思。 一,自动曝光  曝光英文名称为Exposure,曝光模式即计算机采用自然光源的模式,通常分为多种,包括:快门优先、光圈优先、手动曝光、AE锁等模式。照片的...
    前言
    
        在video开发过程中,有很多概念需要知道,了解的。以下概述以下自动曝光,自动增益,图像深度是什么意思。

    一,自动曝光
        曝光英文名称为Exposure,曝光模式即计算机采用自然光源的模式,通常分为多种,包括:快门优先、光圈优先、手动曝光、AE锁等模式。照片的好坏与曝光量有关,也就是说应该通多少的光线使CCD能够得到清晰的图像。曝光量与通光时间(快门速度决定),通光面积(光圈大小决定)有关。

         快门和光圈优先:  
        为了得到正确的曝光量,就需要正确的快门与光圈的组合
    。快门快时,光圈就要大些;快门慢时,光圈就要小些。快门优先是指由机器自动测光系统计算出曝光量的值,然后根据你选定的快门速度自动决定用多大的光圈。光圈优先是指由机器自动测光系统计算出曝光量的值,然后根据你选定的光圈大小自动决定用多少的快门。拍摄的时候,用户应该结合实际环境把使曝光与快门两者调节平衡,相得益彰。

        光圈越大,则单位时间内通过的光线越多,反之则越少。光圈的一般表示方法为字母“F+数值”,例如F5.6、F4等等。这里需要注意的是数值越小,表示光圈越大,比如F4就要比F5.6的光圈大,并且两个相邻的光圈值之间相差两倍,也就是说F4比F5.6所通过的光线要大两倍。相对来说快门的定义就很简单了,也就是允许光通过光圈的时间,表示的方式就是数值,例如1/30秒、1/60秒等,同样两个相邻快门之间也相差两倍。

        光圈和快门的组合就形成了曝光量,在曝光量一定的情况下,这个组合不是惟一的。例如当前测出正常的曝光组合为F5.6、1/30秒,如果将光圈增大一级也就是F4,那么此时的快门值将变为1/60,这样的组合同样也能达到正常的曝光量。不同的组合虽然可以达到相同的曝光量,但是所拍摄出来的图片效果是不相同的。

        快门优先是在手动定义快门的情况下通过相机测光而获取光圈值。举例说明,快门优先多用于拍摄运动的物体上,特别是在体育运动拍摄中最常用。很多朋友在拍摄运动物体时发现,往往拍摄出来的主体是模糊的,这多半就是因为快门的速度不够快。在这种情况下你可以使用快门优先模式,大概确定一个快门值,然后进行拍摄。因为快门快了,进光量可能减少,色彩偏淡,这就需要增加曝光来加强图片亮度。物体的运行一般都是有规律的,那么快门的数值也可以大概估计,例如拍摄行人,快门速度只需要1/125秒就差不多了,而拍摄下落的水滴则需要1/1000秒。

        手动曝光模式:
        手控曝光模式每次拍摄时都需手动完成光圈和快门速度的调节,这样的好处是方便摄影师在制造不同的图片效果。如需要运动轨迹的图片,可以加长曝光时间,把快门加快,曝光增大(很多朋友在拍摄运动物体时发现,往往拍摄出来的主体是模糊的,这多半就是因为快门的速度不够快。如果快门过慢的话,那么结果不是运动轨迹,而是模糊一片);如需要制造暗淡的效果,快门要加快,曝光要减少。虽然这样的自主性很高,但是很不方便,对于抓拍瞬息即逝的景象,时间更不允许。

        AE模式:
         AE全称为Auto Exposure,即自动曝光。模式大约可分为光圈优先AE式,快门速度优先AE式,程式AE式,闪光AE式和深度优先AE式。光圈优先AE式是由拍摄者人为选择拍摄时的光圈大小,由相机根据景物亮度、CCD感光度以及人为选择的光圈等信息自动选择合适曝光所要求的快门时间的自动曝光模式,也即光圈手动、快门时间自动的曝光方式。这种曝光方式主要用在需优先考虑景深的拍摄场合,如拍摄风景、肖像或微距摄影等。


    二,自动增益
        摄像机输出的视频信号必须达到电视传输规定的标准电平,即, 为了能在不同的景物照度条件下都能输出的标准视频信号,必须使放大器的增益能够在较大的范围内进行调节。这种增益调节通常都是通过检测视频信号的平均电平而自动完成的,实现此功能的电路称为自动增益控制电路,简称AGC电路。具有AGC功能的摄像机,在低照度时的灵敏度会有所提高,但此时的噪点也会比较明显。这是由于信号和噪声被同时放大的缘故

    三,图像深度
         图像深度是指存储每个像素所用的位数,也用于量度图像的色彩分辨率。图像深度确定彩色图像的每个像素可能有的颜色数,或者确定 灰度图像的每个像素可能有的灰度级数.它决定了彩色图像中可出现的最多颜色数,或灰度图像中的最大 灰度等级。比如一幅单色图像,若每个像素有8位,则最大灰度数目为2的8次方,即256。一幅彩色图像RGB3个分量的像素位数分别为4,4,2,则最大颜色数目为2的4+4+2次方,即1024,就是说像素的深度为10位,每个像素可以是1024种颜色中的一种。
        例如:一幅画的尺寸是1024*768,深度为16,则它的数据量为1.5M。
        计算如下:1024*768*16bit=(1024*768*16)/8字节=[(1024*768*16)/8]/1024KB=[(1024*768*16)/8]/1024MB


    四,参考文件
    1,http://baike.baidu.com/view/401127.htm?fr=aladdin
    2,http://www.elecfans.com/dianzichangshi/2008122921146.html
    3,http://zhidao.baidu.com/link?url=hvgXDRZrXZEc7magR6N5qnZy-xMxLTz7LL3EbD3imyAPy8amSkqbFPPDDfx0NQW3D9Qm6-mzSHLqwTi3DCLW4_
    展开全文
  • 自动曝光算法

    2014-12-21 23:05:23
    相机的自动曝光算法,在图像处理上有所帮助
  • 我们的人眼其实拥有测光系统的照相机有着类似的工作机制,先对光线的强度进行测定,再计算出合适的曝光参数进行曝光。一个证明就是我们如果在中午看完电影从电影院出来,我们会本能的感觉到外...

    这几个概念在网上资料比较少,讲得都比较模糊。

    勇哥先上一张图,后面再介绍具体的概念。

    216156534_2_2021022302464668

    什么是曝光?

    尽管摄影自诞生以来,无数人都在探索相机这个工具究竟能发挥那些作用。但一个最基本的作用,就是把我们眼睛看到的通过摄影来记录下来。

    我们的人眼其实和拥有测光系统的照相机有着类似的工作机制,先对光线的强度进行测定,再计算出合适的曝光参数进行曝光。一个证明就是我们如果在中午看完电影从电影院出来,我们会本能的感觉到外面的光线非常刺眼,但只要稍微闭一下眼,就立刻适应了。也就是说,我们的眼睛在光线强度突然发生巨大变化的时候,也是需要一些时间去“调整曝光参数”的。

    如果把我们的视觉系统比做照相机的话,大家都应该能理解,我们瞳孔其实就起到了照相机镜头光圈类似的作用,我们的科学家已经证明了我们的瞳孔在看东西的时候一直在运动着的,会根据眼睛所注意到的物体的亮度,放大收缩。这个视野范围约37度到38度,那么如果把我们的视觉系统比做照相机的话,那么这就是一台带测光的自动档照相机。

    好,有了以上的理论基础,我们来解释一个问题:在逆光情况下为什么我们眼睛看的人或者物都是正常亮度,可是相机咔嚓一下就黑了呢?

    原因有以下几个方面,

    第一,基于前面对眼睛的阐述,我们之所以看到很正常,其实我们的眼睛在注意看东西的时候,实际上只有37到38度左右的有效视野范围,比如大太阳下的人,你看人脸,实际上天空你并没注意到,但是你看到天空的时候,你眼睛实际上注意力有调整到了天空,等于又针对了天空进行“测光”,如果人和太阳光比过强,你的眼睛抬头的时候,实际上也是要本能的眯起来的。这就是我们视觉系统在“调整曝光参数”的证明。但即便如此,相机完成这些转换要比我们的视觉系统慢的多,而且必须一张一张的拍。

    也许有同学会问,好像不对啊,37度38度范围如果离开的够远,那么我们眼睛的有效范围也很大,肯定可以同时注意到人和天空了。

    那么这就是第二个原因,我们人眼可以接受的最亮的光强和最暗的光强比——也就是“宽容度”的概念(关于“宽容度”可以点击查看我的另外一篇专栏文章:产品测试|关于华为P9照相功能宽容度测试 - 知乎专栏,)约为50000倍,换算为光圈的档数约15.6档的光圈,也就是2的15.6次方。而我们目前的照相机宽容度,可以查到的数据最高约为14档,2的14次方换算一下也就是16000倍多一些,50000倍和16000倍相比差距还是很可观的。

    什么是快门

    工业相机一般都具备电子快门特性,电子快门不需任何机械部件。相机采用电子脉冲长度控制相机传感器对光的积分时间。由于相机感光时间越长,信号电荷累积也越多,输出信号的幅值也越大。相机输出的仅是电子快门开启时的传感器累积的光电荷信号,其余时间里的光电荷信号则被泄放。电子快门的特点是无运转噪声、速度档次多、速度快,适合分析快速运动过程,但存在图像的不连续、间断跳跃感。

    目前,相机的最短电子快门时间一般为百万分之一秒, 较高的电子快门速度对于观察运动图像会产生一个“动作冻结”效应,从而大大地增加了相机的动态分辨率。同时,当电子快门速度提高时,在传感器积分时间内,聚焦在传感器上的光通量减少,将会降低相机的灵敏度。因而高速的电子快门需要有充足的光照才能保证图像正常的灰度。

    常见的电子快门的方式有全局快门(Global shutter)和卷帘快门(rolling shutter)两种,全局快门是曝光时,传感器上所有像素在同一时刻开启曝光并在同一时刻曝光结束,将物体某时刻的状态成像,对运动物体而言类似将运动物体冻结了,所以适合拍摄高速运动的物体。卷帘快门是逐行顺序开启曝光,不同行间曝光的开启时刻有个很小的延迟,所以不适合运动物体的拍摄。

    如果相机的曝光时间过长,就会使速度快的运动物体变模糊。工业相机的电子快门可以使曝光时间得到控制和调节,这种调节是非机械式的,快门控制具有很大的灵活性,给视觉系统带来了极大的好处。电子快门的曝光时间的变化,仅仅改变了相机光敏像元对外来光的感光积分时间,但不会改变相机内在的视频读出周期。对于运动物体来说,快门时间越短,所获取的图像越精确,即越不模糊,但过短的曝光时间会需要光照强度大大提高,给光照技术带来很大的困难,所以应选择合适的快门时间。

    工业相机工作过程中曝光(Exposure)是图像传感器进行感光的过程。在曝光过程中,CCD/CMOS收集光子并转换成电荷;曝光结束后,CCD/CMOS通过一定的方式将电荷移出。从光曝光对照片质量的影响很大,如果曝光过度,则照片过亮,失去图像细节;如果曝光不足,则照片过暗,同样会失去图像细节。控制曝光就是控制总的光通量,也就是曝光过程中到达CCD/CMOS表面的光子的总和。

    影响曝光的因素

    有三个:光圈。

    光圈控制光线进入的通路的大小,光圈越大,则单位时间的光通量越大,光圈越小,则单位时间的光通量越小。

    曝光时间。也就是快门速度。

    在数码相机中,可以采用电子快门,也可以采用传统的机械快门。

    快门速度和光圈大小是互补的,比如,为了加更多的光可以进来。

    增益。经过双采样之后的模拟信号的放大增益。

    由于在对图像信号进行放大的过程中同时也会放大噪声信号,因此通常把放大器增益设为最小,曝光和增益是直接控制传感器(CCD/CMOS)上读出来的数据,是要优先调节的,以调节曝光时间为主。

    在不过曝的前提下,增加曝光时间可以增加信噪比,使图像清晰。当然,对于很弱的信号,曝光也不能无限增加,因为随着曝光时间的增加,噪音也会积累, 曝光补偿就是增加拍摄时的曝光量。

    增益一般只是在信号弱,但不想增加曝光时间的情况下使用,一般相机增益都产生很大噪音。工业相机在不同增益时图像的成像质量不一样,增益越小,噪点越小;增益越大,噪点越多,特别是在暗处。

    数码相机的ISO就是这里说的增益,增大ISO,是增加感光器件对光的灵敏度。高感光度对低光照灵敏,同时对噪杂信号也灵敏,信噪比小,所以高感光度噪点也多(可利用图片软件的降噪功能减轻或去除)。

    调节亮度增益说白了就是改变ISO,改变CMOS传感器的感光性能,但是会影响到画质。调节曝光补偿则是为了改变快门速度,不改变ISO不会影响画质。

    工业相机不同增益时图像的成像质量不一样,增益越小,噪点越小;增益越大,噪点越多,特别是暗处。增益在工业相机中叫增益,在民用数码相机、单反中,有一个更常用的名字叫ISO。

    ISO越大,则增益越大,图像的噪声也越多。而评价各厂商的相机产品时,往往后评价其在高增益条件下的成像质量如何。

    增益一般只是在信号弱,但不想增加曝光时间的情况下使用。一般相机增益都产生很大噪音的,所以几乎不怎么用。

    其中曝光和增益是直接控制传感器(CCD/CMOS)上读出来的数据,是要优先调节的,以调节曝光时间为主。

    不过曝的前提下,增加曝光时间可以增加信噪比,使图像清晰。软件上有个选项可以把过曝的区域显示出来。当然,对于很弱的信号,曝光也不能无限增加,因为随着曝光时间增加,噪音也会积累。所谓冷CCD就是靠降温减少噪音,从而可以长时间曝光拍摄弱信号。

    转自:勇哥的机器视觉216156534_3_20210223024646193End216156534_3_20210223024646193

    展开全文
  • = 2//设置相机的曝光时间 = 3//设置相机的增益 = 4//相机的频率 = 5//图片的宽度 = 6//图片的高度 = 7//灯的触发信号 */ static void SetupCamera ( Pylon::CInstantCamera& camera, int index) { ...

    参考:http://blog.csdn.net/liyuanbhu/article/details/74841591

    参考:http://blog.csdn.net/cocoasprite/article/details/60955012

    一、

    在设置相机参数之前,先要获取相机对象。Pylon::CTlFactory 具有一个 CreateDevice() 方法可以用来生成一个相机对象,并返回一个指向 IPylonDevice 的指针。下面的代码用来获取枚举出来的第一个相机对应的对象。

    
     
    1. Pylon::CTlFactory& TlFactory = CTlFactory::GetInstance();
    2. DeviceInfoList_t lstDevices;
    3. TlFactory.EnumerateDevices( lstDevices );
    4. IPylonDevice * pDevice;
    5. if(!lstDevices.empty())
    6. {
    7. pDevice = TlFactory.CreateDevice(lstDevices[ 0]);
    8. }
    上面的代码还可以简化为:

    
     
    1. Pylon::CTlFactory& TlFactory = CTlFactory::GetInstance();
    2. IPylonDevice * pDevice = TlFactory.CreateFirstDevice();
    上面 CreateFirstDevice 函数是用来生成枚举到的第一个相机的接口。我们知道传输层还分 GigE、USB等许多中,如果我们希望直接生成 GigE 接口的第一个相机接口,可以先获得GigE 传输层的接口,然后调用接口中的CreateFirstDevice函数,具体可以参考下面的代码片段:

    
     
    1. Pylon::CTlFactory& TlFactory = CTlFactory::GetInstance();
    2. Pylon::IGigETransportLayer* pTl = static_cast<Pylon::IGigETransportLayer*> (TlFactory.CreateTl( "BaslerGigE"));
    3. IPylonDevice * pDevice = pTl->CreateFirstDevice();
    上一篇博客介绍了相机的参数是用 GenApi Node Maps 数据结构来体现的。这个 Node Maps 的接口类型为 GenApi::INodeMap,可以通过 IPylonDevice 的 GetTLNodeMap() 函数和 GetNodeMap() 函数来获得。顾名思义 GetTLNodeMap() 是用来获得传输层参数的,GetNodeMap() 对应的是相机本身的参数。下面是代码示例。

    
     
    1. Pylon::CTlFactory& TlFactory = CTlFactory::GetInstance();
    2. IPylonDevice * pDevice = TlFactory.CreateFirstDevice();
    3. GenApi::INodeMap* NodeMap = pDevice->GetNodeMap();
    4. GenApi::INodeMap* TLNodeMap = pDevice->GetTLNodeMap();
    那么一个相机都有哪些参数,这些参数的名称是什么呢?这就需要参考 GenICam Standard Feature Naming Convention (SFNC)了。Basler 的 USB3 的相机遵守 SFNC 2.0 标准,GigE 和 Firewire 相机只支持 1.x 版本的 SFNC。SFNC 2.0 和 SFNC 1.x 还是有不少差异的。比如相机的增益,在 SFNC 2.0 标准中是浮点型参量,名称为 “Gain”, 在 1.x 中是整数型参量,名称为 “GainRaw”。下面举个例子,我们要获取 “Gain” 这个参量的范围,并且将这个参量的值设为最大最小值的平均值。那我们的代码可以这样写:

    
     
    1. Pylon::CTlFactory& TlFactory = CTlFactory::GetInstance();
    2. IPylonDevice * pDevice = TlFactory.CreateFirstDevice();
    3. GenApi::INodeMap* NodeMap = pDevice->GetNodeMap();
    4. GenApi::INode *pNode = pNodeMap->GetNode( "Gain");
    5. GenApi:: CFloatPtr gain(pNode);
    6. float gainMin = gain->GetMin();
    7. float gainMax = gain->GetMax();
    8. qDebug() << "current gain = " << gain->GetValue();
    9. gain->SetValue(gainMin + (gainMax - gainMin) / 2.0);
    这里我们要注意几个地方,首先如果我们的相机不支持 Gain 这个参数,那么 pNode 将是空指针。后面的操作就会报错。第二,Gain 这个参数不一定可读可写,如果不可读 gain->GetMin() 就会报错。如果不可写,那么 gain->SetValue() 就会报错。所以我们应该用 GenApi::IsReadable() 和 GenApi::IsWritable() 来测试这个 INode 接口是否可以读写。另外还有一点需要特别注意,相机的参数都是在相机被打开后才可以读写的。如果我们知道相机是哪个传输层的,还可以有更简单的访问方式。比如我们的相机是 GigE 接口的,那么可以从 pDevice 构造一个 CBaslerGigEInstantCamera 对象,然后通过这个对象访问相机的各个属性。比如下面的代码:

    
     
    1. Pylon::CTlFactory& TlFactory = CTlFactory::GetInstance();
    2. Pylon::IGigETransportLayer* pTl = static_cast<Pylon::IGigETransportLayer*> (TlFactory.CreateTl( "BaslerGigE"));
    3. IPylonDevice * pDevice = pTl->CreateFirstDevice();
    4. CBaslerGigEInstantCamera camera(pDevice);
    5. camera.Open();
    6. qDebug() << GenApi::IsReadable(camera.GainRaw);
    7. qDebug() << "GainRaw = " << camera.GainRaw.GetValue();
    8. qDebug() << "GainRaw.GetMax() = " << camera.GainRaw.GetMax();
    9. qDebug() << GenApi::IsWritable(camera.GainRaw);
    10. camera.GainRaw = camera.GainRaw.GetMax();
    11. camera.GainRaw.SetValue(camera.GainRaw.GetMin());
    12. camera.Close();
    二、具体例子

    
     
    1. /*index = 0//设置相机的内触发
    2. = 1//设置相机的外触发
    3. = 2//设置相机的曝光时间
    4. = 3//设置相机的增益
    5. = 4//相机的频率
    6. = 5//图片的宽度
    7. = 6//图片的高度
    8. = 7//灯的触发信号
    9. */
    10. static void SetupCamera( Pylon::CInstantCamera& camera, int index)
    11. {
    12. int i = 0;
    13. try
    14. {
    15. using namespace GenApi;
    16. INodeMap &cameraNodeMap = camera.GetNodeMap();
    17. if(index == 0)
    18. {
    19. CEnumerationPtr ptrTriggerSel = cameraNodeMap.GetNode ( "TriggerSelector");
    20. ptrTriggerSel->FromString( "FrameStart");
    21. CEnumerationPtr ptrTrigger = cameraNodeMap.GetNode ( "TriggerMode");
    22. ptrTrigger->SetIntValue( 0);
    23. }
    24. else if(index == 1)
    25. {
    26. CEnumerationPtr ptrTriggerSel = cameraNodeMap.GetNode ( "TriggerSelector");
    27. ptrTriggerSel->FromString( "FrameStart");
    28. CEnumerationPtr ptrTrigger = cameraNodeMap.GetNode ( "TriggerMode");
    29. ptrTrigger->SetIntValue( 1);
    30. CEnumerationPtr ptrTriggerSource = cameraNodeMap.GetNode ( "TriggerSource");
    31. ptrTriggerSource->FromString( "Line1");
    32. }
    33. else if(index == 2)
    34. {
    35. const CFloatPtr exposureTime = cameraNodeMap.GetNode( "ExposureTimeAbs");
    36. exposureTime->SetValue(theApp.m_iExposeTime);
    37. }
    38. else if(index == 3)
    39. {
    40. const CIntegerPtr cameraGen = cameraNodeMap.GetNode( "GainRaw");
    41. cameraGen->SetValue(theApp.m_iGain);
    42. }
    43. else if(index == 4)
    44. {
    45. const CBooleanPtr frameRate = cameraNodeMap.GetNode( "AcquisitionFrameRateEnable");
    46. frameRate->SetValue(TRUE);
    47. const CFloatPtr frameRateABS = cameraNodeMap.GetNode( "AcquisitionFrameRateAbs");
    48. frameRateABS->SetValue(theApp.m_iHZ);
    49. }
    50. else if(index == 5)
    51. {
    52. const CIntegerPtr widthPic = cameraNodeMap.GetNode( "Width");
    53. widthPic->SetValue(theApp.m_Width);
    54. }
    55. else if(index == 6)
    56. {
    57. const CIntegerPtr heightPic = cameraNodeMap.GetNode( "Height");
    58. heightPic->SetValue(theApp.m_Height);
    59. }
    60. else if(index == 7)
    61. {
    62. CEnumerationPtr ptrLineSource = cameraNodeMap.GetNode ( "LineSource");
    63. ptrLineSource->SetIntValue( 2);
    64. }
    展开全文
  • 基于CPLD/FPGA器件的自动增益控制的探讨
  • 相机自动曝光(AE)策略

    千次阅读 2020-06-06 10:55:35
    1. 灰度直方图自动曝光 计算每帧图像感兴趣区域的灰度值,自动调节曝光。需要标定灰度值与曝光值的映射。 2. 根据距离调整自动曝光 需要有距离传感器,根据距离值调整自动曝光,需要标定。 ...
  • 自动曝光

    万次阅读 2017-12-11 18:19:28
    一、自动曝光定义 首先需要介绍一下曝光:光线强度乘以光线所作用的时间。定义中的“光线强度”,是指Sensor受光线照射的强度,即照度;定义中的“光线所作用的时间”,是指感光胶片受光线照射的时间,即曝光时间。...
  • 基于这一感光特性,根据当前的曝光时间增益图像强度统计值判断出当前的光照强度,基于光强范围查找表,得到最优曝光时间,从而实现快速自动曝光调节.经过MATLAB算法评估,这种曝光方法在暗光情况下正确曝光...
  • 自动曝光算法学习

    2021-10-13 14:44:13
    自动曝光(Auto Exposure)算法学习
  • 2. 固定自动曝光时间,只调节曝光增益(仅调试验证)。3. 通过减小感兴趣区域权重来减小感兴趣区域曝光对整个图像的影响:三. 驱动层优化1. 调节ISP增益与sensor曝光时间与增益同步生效2. 调节曝光时间步长曝光...
  • 工业相机自动曝光

    千次阅读 2018-06-30 16:14:15
    一、获取ROI区域 采用多点测光对...图1 典型的测光模式二、调节曝光时间 利用图像直方图特征函数粗调曝光时间。 (1)求取图像的灰度直方图H; (2)灰度直方图归一化: norm(i)=H(i)/(n*m) 其中0&...
  • 1、介绍 自动曝光技术可以分成三步骤,分别是亮度获取、亮度分析曝光调节。这一章内容主要介绍一下自动曝光技术中的亮度获取方法。 2、自动曝光技术主要分为 光学
  • 【摄像头】自动曝光总结

    千次阅读 2020-11-03 23:47:27
    曝光英文名称为Exposure,曝光模式即计算机采用自然光源的模式,通常分为多种,包括:快门优先、光圈优先、手动曝光、自动曝光AE等模式。照片的好坏与曝光量有关,也就是说应该通多少的光线使CCD能够得到清晰的图像...
  • ISP PIPLINE AE(自动曝光)

    千次阅读 2019-03-29 00:01:12
    自动曝光可以可以通过调节 模拟增益,数字增益曝光时间,光圈大小来调剂曝光。 曝光在ISP PIPLINE的位置。 (先介绍一个额外的知识点: ) gamma compression(也就是de-gamma(反向的gamma),实际上更亮的...
  • 图像传感器与信号处理——自动曝光算法图像传感器与信号处理——自动曝光算法1. 如何实现自动曝光?2. 基于直方图统计的算法2.1 Automatic Camera Exposure Control,20073. 基于熵的算法4. 基于梯度的算法 图像...
  • 模拟摄像机自动曝光策略

    千次阅读 2015-08-13 16:02:42
    在模拟摄像机中,自动曝光和自动白平衡是基础。自动曝光模块作用是根据环境的亮度变化自适应调整图像的整体曝光亮度,在不同场景下能够将图像的亮度调整到最优状态,通过亮度数据(OPD)进行评估,通过电子快门,AGC...
  • 自动曝光的原理--知乎

    万次阅读 多人点赞 2019-02-28 17:06:36
    自动曝光的原理 积极的悲观主义者 camera tuning 2 人赞了该文章 曝光是摄影中十分重要的一个环节,它决定了一张图片的明暗,如下图所示,第一张图片太暗,而第三种图片太亮。 曝光由什么来决定 使用过...
  • LABVIEW 相机曝光参数修改,及保存。可以用LABVIEW读写NI相机曝光参数。
  • opencv 曝光设置

    千次阅读 2018-11-13 18:27:38
    其它语言通过opencv来使用摄像头的接口的函数参数一致,此文也可作参考。 gocv地址: https://github.com/hybridgroup/gocv 2、曝光设置 opencv通过VideoCapture的Set方法来设置曝光参数等其它摄像头参数。 ...
  • 工业视觉 二 相机的自动曝光

    千次阅读 2018-07-25 10:31:08
    一、自动曝光定义   首先需要介绍一下曝光:光线强度乘以光线所作用的时间。定义中的“光线强度”,是指Sensor受光线照射的强度,即照度;定义中的“光线所作用的时间”,是指感光胶片受光线照射的时间,即曝光...
  • 3A算法—自动曝光(AE)

    千次阅读 2021-03-11 16:33:51
    3A算法—自动曝光(AE) 目录 3A算法—自动曝光(AE) 1、曝光的含义 2、AE算法 1、曝光的含义 ...若要取得一定量的曝光量,光强度和曝光时间成反比关系。 一般的算法通过获取图像的亮度调节相
  • 本讲是Android Camera专题系列的第31讲,我们介绍Android Camera2 API专题的AE自动曝光第1部分,AE自动曝光包括如下10部分内容,第一部分介绍前5讲: AE是什么 3A总开关 AE模式 AE状态 拍照前AE测光 曝光补偿...
  • camera相机亮度测算与曝光

    千次阅读 2021-03-06 17:57:55
    相机在拍摄图片时候首先就是测光,然后根据亮度进行曝光。 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): ...
  • ISP PIPLINE (十四) AE(自动曝光)

    千次阅读 2019-03-29 00:01:00
    自动曝光可以可以通过调节 模拟增益,数字增益曝光时间,光圈大小来调剂曝光。 曝光在ISP PIPLINE的位置。 (先介绍一个额外的知识点: ) gamma compression(也就是de-gamma(反向的gamma),实际上更亮的...
  • 相机曝光增益

    2016-05-23 10:29:00
    其中 曝光 增益 是直接控制传感器(CCD/CMOS)上读出来的数据,是要优先调节的,以调节曝光时间为主。不过曝的前提下,增加曝光时间可以增加信噪比,使图像清晰。软件上有个选项可以把过曝的区域显示出来。当然,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,208
精华内容 483
关键字:

自动曝光时间和增益