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

news/2024/11/8 17:05:08/

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

  • 为什么写这篇博文?
  • 正文

为什么写这篇博文?

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

正文

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

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

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

  General Settings:Parent = [1x1 videoinput]Selected = onSourceName = input1Tag = [0x0 string]Type = videosourceDevice Specific Properties:Brightness = 0Contrast = 0Exposure = -5ExposureMode = autoFrameRate = 30.0000Gain = 8GainMode = 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 = 2DiskLogger = []DiskLoggerFrameCount = 0EventLog = [1×0 struct]FrameGrabInterval = 1FramesAcquired = 0FramesAvailable = 0FramesPerTrigger = 10Logging = offLoggingMode = memoryName = RGB8_1280x1024-winvideo-2NumberOfBands = 1Previewing = offROIPosition = [0 0 1280 1024]Running = offTag = Timeout = 10Type = videoinputUserData = []VideoFormat = RGB8_1280x1024VideoResolution = [1280 1024]Color Space Settings:BayerSensorAlignment = grbgReturnedColorSpace = grayscaleCallback Function Settings:ErrorFcn = @imaqcallbackFramesAcquiredFcn = []FramesAcquiredFcnCount = 0StartFcn = []StopFcn = []TimerFcn = []TimerPeriod = 1TriggerFcn = []Trigger Settings:InitialTriggerTime = []TriggerCondition = noneTriggerFrameDelay = 0TriggerRepeat = 0TriggersExecuted = 0TriggerSource = noneTriggerType = immediateAcquisition Sources:SelectedSourceName = input1Source = [1×1 videosource]

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

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

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

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


http://www.ppmy.cn/news/538767.html

相关文章

相机曝光时间与增益

曝光和增益的一些基本概念 曝光时间:快门速度,简单来讲就是按下快门的时间,时间越长,光子到CCD\CMOS表面的光子总和越多,采集的图像就会越亮;如果曝光过度,则照片过亮,失去图像细节;如果曝光不足,则照片过暗…

RecycleView的Item曝光事件、曝光时间、阅读进度上报

2020-10-22 更新 在日常使用过程中,发现在onScroll中进行上报会大大增加滑动时的性能消耗(由于在onScroll在滑动时过于频繁,而每次findFirstVisibleItemPosition都从0开始遍历一次子元素直至显示的view)。因此建议把上报的起始位…

matlab 工业相机 曝光时间_工业相机的曝光、曝光时间、快门、增益

这几个概念在网上资料比较少,讲得都比较模糊。 勇哥先上一张图,后面再介绍具体的概念。 什么是曝光? 尽管摄影自诞生以来,无数人都在探索相机这个工具究竟能发挥那些作用。但一个最基本的作用,就是把我们眼睛看到的通过摄影来记录下来。 我们的人眼其实和拥有测光系统的照…

matlab 工业相机 曝光时间_相机帧率和曝光时间的关系

Exposure and Sensor Readout 相机上的图像采集过程包括两个截然不同的部分。第一部分是曝光。曝光完成后,进行第二部分Readout过程即从传感器的寄存器中读出数据并传送出去(Readout过程)。 关于图像采集过程中,相机操作有两种常见的方法:“non-overlapped”的曝光和“overl…

行曝光时间和帧率

很多人问我曝光时间和帧率的具体关系。虽然他们都知道曝光时间过高会影响帧率。但不知道怎么量化。 之前看有人发表了各种各样的文章,但是我发现他们的文章估计他们自己都不太明白吧。因为涉及到了两种方式。我只遇到过一种方式。 line曝光:过程包括 exposure时间+readout时…

CMOS曝光时间、积分时间

1、基本概念 帧 一帧就是一副图像, H_Blank 行消隐或称水平消隐 假定曝光起始位置在图像的左上角,对于行曝光,曝光从第一个像素开始直至最后一个曝光结束,这时曝光位置要从此行的尾部快速移动到下一行头部,开始下一行…

camera具体曝光时间readout时间出图时间

前言 由于抠延时问题越来越重要,以及很多场景需要降低曝光时间来更好捕捉物体; 所以这里分析下这个具体时间 曝光时间 1. 不管使用前置还是后置ISP方案,一般AE都是ISP自动调节 2. ISP的场景参数,都是自动切换,例如…

机器学习对风险管理的重要性

✏️写作:个人博客,InfoQ,掘金,知乎,CSDN 📧公众号:进击的Matrix 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 机器学…