一、工业相机和其他数码相机的区别
工业相机和普通数码相机的区别: ①工业相机是工业用品,需要连续长时间运行,所以在性能可靠性、稳定性、环境稳定、防水、连续运行时间上有明显的优势。工业相机不易损坏,连续工作时间长,可在较差的环境下使用,而一般的数码相机是做不到这些的。 ②工业相机的快门时间特别短,能够清晰地拍摄快速运动的物体。工业相机的最小快门时间可达十几μs。 ③工业相机的拍摄帧率远远高于数码相机,工业相机每秒可以拍摄十到几百张图像,而普通相机只能拍摄两到三张图像。 ④工业相机的图像传感器是逐行扫描的,而数码相机是隔行甚至隔三行扫描的,所以工业相机的成像质量更高更真实。 ⑤工业相机输出的是裸数据raw data,其光谱响应频率与人眼不同往往比较宽,成像质量较高,更适合精细化的图像处理要求。而普通相机的图像是经过压缩的,图像质量较差,不适合用于图像处理。 ⑥工业相机由于拍摄图像多,图像质量高,所以自然要求要比普通相机具有更高的数据传输速率,也就对数据传输接口和传输协议都有特殊要求。 我们再来比一比工业相机和单反相机的区别: 上面的第①、②、⑥依然存在。此外还有: ①工业相机由于要应用无物理环境受限的工业场景,所以其体积要明显小于单反相机。 ②工业相机配套SDK提供的软件功能,由于要满足专业的图像处理算法需要,所以要比用于拍摄生活场景的单反的软件功能更为强大。
二、工业相机的主要性能参数
我们已经知道工业相机主要是用来检验和监控的,所以其主要性能参数就是能更好满足上述应用需求的,其包括: ①芯片类型:彩色还是黑白、面阵还是线阵、CCD还是CMOS ②分辨率:感光芯片上有多少格像元,就是多少分辨率的相机,常用的有30万、130万、200万、500万、1000万、2900万、7100万、1.2亿。 ③像元尺寸:像元是感光芯片上接受光信号的装置,每个图上的一个像素都对应像元,像元的物理尺寸就是像元尺寸,常见的有2.2μm、3.45μm、3.75μm、4.8μm、5.5μm、5.86μm、7.4μm。在同一时间单位的光照射到感光芯片上,像元尺寸越大,其能接受的光子数量越多,图像呈现的亮度越高。 ④像素格式:由于相机可以是彩色或黑白相机,所以就会有不同的像素格式,如Mono和RGB。再加上彩色相机还会有不同的数据压缩方式,又进一步增加了像素格式的类型,如Bayer和YUV等。 ⑤成像位深度:常见的工业相机一般使用8位来表示一个像素,也就是每个像素可以输出0~255共256个色阶。但还有更高级的工业相机,可使用12位或16位来表示一个像素,这样就会有更多的色阶,所拍摄出来图像的细节就更清晰。 ⑥噪点:指感光芯片把光信号变成电信号并输出的过程中产生的不属于物体的部分影像。 ⑦帧率/行率:面阵相机的帧率是指一秒钟能拍多少张图像,线阵相机的行频是指一秒钟相机能扫描多少行。 ⑧曝光时间:感光芯片接收光照射过来的时间,曝光时间设置的越长,图像越亮。但如果运动拍照的话,曝光时间长可能会产生拖影。曝光方式分逐行曝光和帧曝光。 ⑨快门方式:快门有全局快门Global Shutter和滚动快门Rolling Shutter两种。 ⑩触发方式:一般可设置由相机内置程序自动连续获取图像,或由外部软件或硬件信号对相机进行触发,每发出一次触发信号相机采集一帧图像。而由外部信号触发又可进一步分为获取时触发和帧开始时触发两种。通过触发方式来采集图像,可使相机的采集时间得到更精确的控制。 ?传输速率:一般有GigE、USB 3、CoaxPress等传输协议,传输速度从几Mbit/s到几Gbit/s都有。 ?传输信息:除传输相机拍摄图像的裸数据外,还可传输控制命令、相机参数等信息。 其中②和③决定了相机能够拍多大的区域,在该区域能够以多大的密度来提取信息;④、⑤和⑥决定了相机的每个像素能有多大的动态范围;⑦、⑧、⑨和⑩决定了相机能够以多快的速度进行拍摄;?和?则表明了在相机获取了相关信息后,能以多快的速度,将多详细的信息提供给你使用。
三、面阵相机和线阵相机的区别
①面阵相机:是同一个曝光时间周期,输出多行数据的采集设备。 ②线阵相机:单行或多行进行采集的图像采集器。每次只能输出一行或多行图像数据。线阵系统一般需要编码器和触发器才能完成对一幅图像的采集,编码器输出行频,触发器输出帧频。 其优缺点对比为: 如果你需要获取彩色图像,选择面阵相机;如果机械设计能力不足或现场机械设计受限,选择面阵相机;3D视觉应用,选择面阵相机;其他时候选择线阵相机。
四、CCD和CMOS相机的区别
CCD芯片中像素使用完整的芯片表面以捕捉光线,并且无需在芯片表面上安装任何转换电子元件,这使表面拥有更多的像素空间,可以捕捉更多的光线。但正是由于这个特性,CCD读取数据没有CMOS快。因为势阱中的电子数目不受电压和电流波动的影响,完全电荷转移模式使CCD成为最适合于图像传感器应用的结构,其有极高的信噪比。 CMOS芯片中,将光能转化为电信号的电子元件直接集成在芯片表面,因此电子元件能够快速地读取成像数据。 CMOS相比于CCD的优势: ①性价比高。由于CMOS制造工艺属于通用工艺,而CCD制造属于专用工艺,所以CMOS制造成本更低; ②成像速度快。由于其芯片AD转换直驱技术,再配合CMOS可以实现更灵活的区域信号读取技术,使得CMOS具有更高的成像速度; ③高分辨率。由于CMOS在经济上和适用范围上的优势,使得其获得了更多的研发投入,目前已经开发出比CCD更高的分辨率; ④低功耗。CMOS电路可以工作在比CCD更低的电源电压下。此外,X-Y的寻址方案及片上功能实现都有助于降低系统功耗; ⑤没有漏光smear现象。当长波光照射到硅基上并穿透时,CCD进入饱和区后,电荷存储势阱将填满电子,过剩的电子会向外溢出。溢出的电子将进入相邻像素以及垂直CCD转移通道中。垂直CCD中残留的漏光电荷使得垂直方向转移的正常信号电荷都加上了漏光电荷,导致漏光从上而下均匀出现。这种现象是CCD独有的,称为漏光smear。由于漏光量与电子快门速度无关,电子快门会导致漏光劣化。 CCD相比于CMOS的优势: ①更高的动态范围。与CMOS传感器相比,CCD传感器对光更加敏感,这是因为CCD有更大的填充因子,这就导致CCD在光电转换的精度方面更有优势,从而更适于高清晰成像或位深度大于8的成像应用。 ②更高的信噪比。因为势阱中的电子数目不受电压和电流波动的影响,完全电荷转移模式使CCD成为最适合于图像传感器应用的结构,可获得更高的信噪比。因此与CMOS传感器相比,CCD传感器更适合低对比度的场合。 ③更小的不均匀性。由于CMOS的每个像素都有放大器,因此有不同的增益和补偿,所以更难获得整体的均匀一致性。 如果需要超高分辨率,选用CMOS;如果需要高清晰度,选用CCD;如果需要对低对比度场景进行成像,选用CCD;其他场合都选用CMOS。
五、全局快门和滚动快门的区别
全局快门Global Shutter和卷帘快门Rolling Shutter是常见的相机曝光方式。全局快门的方式比较简单,光圈打开后,整个图像芯片同时曝光,因此曝光时间与机械的开关速度有关,所以存在理论上的最小曝光时间。卷帘快门是当光圈打开后,还存在具有一定间隔的卷帘来控制传感器的曝光时间,如下图所示,卷帘方式是从左到右的。因此曝光时间的长短完全取决于卷帘的开口大小与卷帘的运动速度。也就是说,卷帘运动越快,卷帘间距越小,其曝光时间越小,因此卷帘快门能够具有更小的曝光时间。 全局快门与卷帘快门的优缺点: ①全局快门的优点是所有的像素点同时曝光,其缺点是曝光时间存在物理极限; ②卷帘快门的优点是具有更小的曝光时间,其缺点是由于是逐行而不是同时曝光取像,如果图像是运动的,则存在明显的拖影,因此不适合拍摄运动的物体。 曝光时间短的应用(如<500μs)适合使用全局快门,而曝光时间长的应用,选择卷帘快门可以有更低的噪声和帧速。在实际应用中,一般只要是拍摄运动物体,都使用全局快门,只有在拍摄静止物体时,才使用滚动快门。CCD和CMOS相机都可配备全局快门。
六、高分辨率带来的问题
像素的灵敏度和满阱容量随像素尺寸线性减小。一方面,小像素的分辨能力具有一定的衍射限制。因为衍射点随着F值的减少而增加,而低的F值会造成光入射到像素上的角度较大从而引起更多的阴影和串扰,因此,可以采取的F值的范围是相当有限的,且需要配合更强的照明和更短的曝光时间使用。另外,随着更小像素所带来的更大景深,还原小像素图像传感器得到的图像往往是泛焦的。而为了补偿由于像素减小而带来的一些畸变,对于透镜系统的设计要求也更为复杂。在减小像素尺寸的同时,为了保持图像的质量,需要弥补此前提到的小像素的负面影响,这将需要后端处理器发挥更大的作用。另外由于芯片面积的增加,导致每片晶圆上图像传感器芯片的数量下降,从而图像传感器的成本较高。每片晶圆上良好成像芯片的产量也可能受到影响,从另一方面也提高了传感器的成本。 所以在实际选用时,在成像分辨率满足要求的条件下,尽可能选择低分辨率、大像元尺寸的相机。
七、工业相机的软件操作
由于我接触过的所有工业相机中,Basler提供的软件操作功能是最丰富的,这里使用Basler的acA1300-30gc + pylon Viewer 6.3.0来进行说明。 软件的整体菜单包括4部分: ①相机参数 ②流参数 ③事件采集器参数 ④图像格式转换 Basler把相机常用操作分为8类: ①优化图像质量 ②保存相机设置以便将来使用 ③在不断变化的光照条件下保持图像质量一致 ④控制亮度 ⑤控制帧速率 ⑥更改分辨率 ⑦检查相机是否丢失图像数据 ⑧配置相机的触发行为 这里按照上述分类,并结合所关注的工业相机主要性能参数来加以展示说明。 ①优化图像质量 <1>Analog Controls栏,包含用于控制图像数据的模拟特征的参数。 Gain Auto,设置“自动增益”自动功能的操作模式。自动增益功能可在设置的限制内自动调节增益,直到达到目标亮度值为止。取值:Off、Once、Continuous。 Gain Selector,设置要调整的增益类型。对“增益”参数所做的所有更改将应用于所选增益类型。取值:All。 Gain(Raw),当前所选增益的值(原始值)。取值:int。该功能可让增加相机输出图像的亮度。增加增益会增大图像的所有像素值。但该参数原始值与实际增益值不同,实际增益值以dB表示。当Gain(Raw)<32时,Gain=20 * log10 (1 + ((Gain(Raw) * 2) / 64));当Gain(Raw)≥32时,Gain = 20 * log10 (1 + ((Gain(Raw) * 2) / 64))。 Black Level Selector,设置可以配置哪个传感器数据通道。对“黑电平”参数所做的所有更改将应用于所选传感器数据通道。取值:All。 Black Level(Raw),要应用于当前所选传感器数据通道的黑电平值(原始值)。取值:int。 Black Level功能会更改图像的整体亮度。调整相机的黑电平会导致相机输出的像素灰度值发生偏移,对于彩色相机,当使用8位像素格式时,Black Level的值每增加4,对应的图像灰度值增加1(10bit的最后2bit被截断);当使用12位像素格式时,Black Level的值每增加1,对应的图像灰度值增加1。例如通过增加黑电平12将图像中每个像素的灰度值增加3。Basler建议在使用任何色彩增强功能(Balance White、Color Transformation或Gamma)之前将黑电平设置为0。应用色彩增强后,可根据需要更改黑电平。但增加黑电平会降低颜色精确度。由于暗电流可能会对图像质量产生负面影响,有些相机可以通过自动调整黑电平来对此进行补偿。在工业相机实际应用中,黑电平用于调整图像中的黑色部分(使黑色的显示效果更逼真),现在已基本不再使用。 Gamma Enable,启用干校正。取值:bool Gamma Selector,设置要应用的伽马值类型。取值:sRGB、User。使用User时,可以根据需要设置Gamma校正值。使用sRGB时,相机自动将Gamma校正值设定为约0.4,该值针对sRGB显示器上的图像显示进行了优化。 Gamma,要应用的伽马校正。伽马校正允许您针对显示器上的显示优化所采集图像的亮度。取值:float。通过调整该值可以优化所采集图像的亮度,以便在显示器上显示。相机根据以下公式(以彩色相机和红色像素值R为例)将Gamma校正值γ应用于每个像素的亮度值: 该参数值的取值范围约为0~4。Gamma = 1整体亮度保持不变;Gamma < 1 整体亮度增加;Gamma > 1整体亮度降低。 Digital Shift,要应用的数字移位。数字移位允许您倍增图像中的像素值。这会增加图像的亮度,如果此参数设为0,则禁用数字移位。取值:int。该功能可将图像的像素值相乘,这会增加图像的亮度。如果您的相机不支持该功能,则可以使用Gain功能达到类似的效果。将数字移位因数配置为n会导致所有像素值逻辑左移n。如果结果像素值大于当前像素格式可能达到的最大值(例如,对于12位像素格式为4095),则将该值设置为最大值。 <2>Image Format Controls,包含的参数用于配置所采集图像的大小和所传输像素数据的格式。 Pixel Format,设置相机传输的像素数据的格式。可用的像素格式取决于相机型号以及相机是黑白或彩色。取值:Mono 8、Bayer BG 8、Bayer BG 12、YUV 422 Packed、YUV 422(YUYV) Packed、Bayer BG 12 Packed。 相机上面的图像传感器只能感受光强而无法感知光的波长,然而光的颜色却是由波长决定的,因此图像传感器是无法记录颜色的。虽然可以在相机的内部内置三个图像传感器来分别记录红、绿、蓝三元色,然后将这三种颜色合并得到最终的彩色图像,但是这样做的成本太高。因此,柯达提出的解决方案是:使用一个图像传感器,在图像传感器的前面,放置一个滤光层,滤光层的滤光点与图像传感器的像素一一对应,每个滤光点只能通过红、绿、蓝三种光其中之一,通过规律性的排列不同颜色的滤光点,我们就能在传感器上面有规律的获得不同颜色的光强值,也就是R、G、B的灰度值。 但是这样得到的图像其实仅是灰度图,它并不能表达呈现真实世界的图像,如下图: 如果想要呈现真实的色彩世界,就需要用相邻的像素值通过插值,来补充完整整个图像的所有R、G、B值,这个过程叫做Bayer插值,如下图: 出于成本、生产技术等因素,目前能获得的大部分相机,包括工业相机和数码相机,其原始raw数据都是有Bayer插值得到的。相机给出的各种像素格式,只是在相机内部通过对应的图像转换处理,来形成对应的格式。
- Mono(单色)格式:如果相机使用某种Mono像素格式,则每个像素输出8、10或12位数据。如果彩色相机使用某种单色像素格式,则每个像素的值首先会转换为YCbCr颜色模型,此模型的Y分量表示亮度值,并且等效于从单色传感器中的一个像素得出的值。当设置为Mono格式时,它将输出单色图像。
- Bayer格式:彩色相机均配有拜耳彩色滤光片,并可以根据拜耳像素格式输出彩色图像。如果彩色相机使用其中一种拜耳像素格式,则相机为每个像素输出8、10或12位数据。相机对每个像素进行过滤以仅记录红色、绿色和蓝色中的一种颜色。像素数据不会以任何方式进行处理或插补。此类像素数据称为“原始raw”输出,因为其对应的是感光芯片直接获取的光电转换值。
- YUV格式:彩色相机还可以基于YUV(或YCrCb)格式的像素数据输出彩色图像。如果彩色相机使用此格式,则采集到的图像中的每个像素值在离开传感器并通过相机时都会经历一个转换过程。此过程为每个像素值生成YUV颜色信息。
- RGB和BGR格式:当彩色相机使用RGB 8或BGR 8像素格式时,相机将为所采集帧中的每个像素输出8位红色数据、8位绿色数据和8位蓝色数据。像素格式因颜色数据的输出顺序(红、绿、蓝或蓝、绿、红)而异。
注意:由于感光芯片的raw数据是不会变的,各种格式其实就是将图像色彩空间转换从上位机软件移到了相机内置的FPGA中。因此可根据采集帧率和算法性能选择合适的像素格式,以减小处理瓶颈。 Pixel Size。指示图像中的像素值的深度(以bit/pixel为单位)。潜在值取决于像素格式设置。取值:8Bits/Pixel、12Bits/Pixel、16Bits/Pixel。 例如,示例相机的些芯片的真实分辨率只有10位,如果使用12Bits/Pixel格式,则其最上面2位是填充0,而如果使用8Bits/Pixel,则通过将输入数据最低几位截断来获得输出值。 Pixel Color Filter,指示相机的拜耳滤镜校准到所采集图像中的像素。取值:Bayer BG对所采集图像中的像素进行了BG/GR校准、No Filter相机没有拜耳滤镜。 Processed Raw Enable,启用色彩改进原始图像数据的输出。如果启用,色彩转换和色彩调节将应用到拜耳像素格式。取值:bool。 Dynamic Range Min,可以从相机传输的最小可能像素值。只读。 Dynamic Range Max,可以从相机传输的最大可能像素值。只读。 ReverseX,启用图像的水平镜像。所采集图像中的每条线的像素将会沿着线的中心进行交换。使用此功能时仍可以使用ROI功能。ROI相对于传感器的位置保持不变。取值:bool。 Test Image Selector,设置要显示的测试图像。其可让你检查相机的基本功能及其传输图像的能力。测试图像可用于维护目的和故障诊断,它们是由相机本身生成的。因此,相机的光学元件或成像传感器未参与其创建过程。取值:Test Image Off相机不显示测试图像、Test Image 1相机使用测试图像1图案来生成测试图像、Test Image 2相机使用测试图像2图案来生成测试图像、Test Image 3相机使用测试图像3图案来生成测试图像、Test Image 4相机使用测试图像4图案来生成测试图像、Test Image 5相机使用测试图像5图案来生成测试图像、Test Image 6相机使用测试图像6图案来生成测试图像。 测试图像1:固定的对角灰色渐变(8位),由固定的对角灰色渐变组成,范围从0~255。最适合将相机配置为单色8位输出的情况。 测试图像2:移动的对角灰色渐变(8位),包括移动的对角灰色渐变。触发新图像采集时,图像向左移动一个像素。 测试图像3:移动的对角灰色渐变,包括移动的对角灰色渐变。在大多数相机上,是12位模式。 测试图像4:移动的对角灰色渐变功能测试(8位),包括移动的对角灰色渐变。此外,它还显示了启用的任何数字处理功能(例如,亮度查找表)的效果。 测试图像5:移动的对角灰色渐变功能测试,包括移动的对角灰色渐变。此外,它还显示了启用的任何数字处理功能(例如,亮度查找表)的效果。在大多数相机上,这是12位模式。 测试图像6:移动的对角颜色渐变。如果可用,则此测试图像由移动的对角颜色渐变构成。触发新图像采集时,图像向左移动一个像素。 相机的模拟功能(如Gain、Black Level和Exposure Time)对测试图像没有影响;而数字功能(如Lut)仅影响测试图像4和5。如果要检查使用数字功能的效果,可使用测试图像4或5。 <3>Color Improvements Control,包含用于改进色彩外观的参数。 LightSource Selector,设置将其执行色彩转换的光源类型。取值:Off不执行特定光源的色彩转换、Custom可自定义色彩转换矩阵、Daylight 5000 Kelvin色彩转换矩阵针对500K日光时的图像采集进行了优化、Tungsten色彩转换矩阵针对白炽灯(3100K)时的图像采集进行了优化、Daylight 6500 Kelvin色彩转换矩阵针对6500K日光时的图像采集进行了优化。在不同光源类型选项下的采图效果如下图: 该参数可让你纠正部分光源引起的色彩偏移,根据其特定的色温,用于图像采集的光源会导致图像中的色彩偏移,可以通过选择相关的光源预设来纠正这些色彩偏移。选择光源预设时,相机会自动调整以下色彩增强功能的设置:Balance White、Color Adjustment、Color Transformation。 相机采集到的图像可能出现偏色,即特定颜色的色调。其原因是不同的光源具有不同的色温,荧光灯会给图像增加偏蓝的色调,而钨丝白炽灯则会增加偏黄的色调。白平衡使你可以通过应用数字增益校正调整红、绿、蓝色的强度,来校正这些色彩偏移,使得白色物体在采集到的图像中呈现白色。 Balance White Reset,重置所有白平衡调整。取值:bool。该功能会重置所有白平衡调整,如果您的调节未达到理想效果,并且想快速返回到原始设置,则此功能特别有用。 Balance White Auto,设置“自动白平衡”自动功能的操作模式。取值:Off自动功能处于禁用状态、Once白平衡会自动进行调整,以达到指定的目标值。当达到目标值时,自动功能将自动设为Off,并且新的参数值将应用到后续图像、Continuous在采集图像时持续调整白平衡。调整过程将继续,直到操作模式设为Once或Off为止。该过程分为两步: 1)相机会比较红、绿和蓝像素的平均灰度值。它确定具有最高平均灰度值的颜色(即亮度最高的颜色),并将该颜色的BalanceRatioAbs参数值设置为1。 2)相机会自动调节其他两种颜色的BalanceRatioAbs参数值,直到红、绿和蓝的平均灰度值相同为止。一种颜色的BalanceRatioAbs参数设置为1,其他两种颜色的该参数设置为1~15.98之间。 例如:图像中的绿色像素具有最高的平均灰度值,如果启用Balance White Auto功能,相机将绿色的BalanceRatioAbs参数值设为1。然后,相机自动调整红色和蓝色的BalanceRatioAbs参数值,直到红色、绿色和蓝色的平均灰度值相同为止。如绿色=1、红色=1.08789、蓝色=2.19678。 Balance Ratio Selector,设置在执行手动白平衡时可调整的色彩通道。对“平衡率”参数所做的所有更改将应用于所选色彩通道。取值:Red平衡率应用于红色通道、Green平衡率应用于绿色通道、Blue平衡率应用于蓝色通道。 Balance Ratio(Abs),要应用到当前所选通道的平衡率值。取值:float。当该参数=1时:颜色强度保持不变;参数>1:相对于其他两种颜色,颜色强度增大;参数<1: 相对于其他两种颜色,颜色强度减小,相机不允许这样设置。例如如果将一种颜色的平衡率设置为1.2,则该颜色的强度将增加20%。 一些色彩增强功能,如LightSource Selector或Color Transformation会影响白平衡设置,应在使用这些功能后再手动重新调整白平衡。 Balance Ratio(Raw),要应用到当前所选通道的平衡率值,取值:int。 色彩转换功能可分为调整色调Hue和调整饱和度Saturation,调整色调可偏移图像的色彩,这对于校正较小的不良色移或创建伪彩色图像很有用。调整饱和度可更改色彩的鲜艳程度(强度)。增加饱和度有助于使颜色更容易区分。 其工作原理为:将RGB颜色立方体投影到平面上,从而形成颜色六边形: 原色(红、绿、蓝)和辅助色(黄、青、品红)位于此颜色六边形的六个角上。可以调整每种颜色的色相和饱和度,这会影响图像中所有以被调颜色为主的区域。例如,调整红色会影响图像中红色为主导成分的颜色。下图显示了改变红色的色相和饱和度如何影响图像的颜 色: 如果降低色调会将所有红色(即以红色为主导成分的颜色)朝着黄色的方向调整;增加色调会使所有红色朝着洋红色的方向调整。降低饱和度会降低所有红色的鲜艳程度;如果降至最小值,所有红色将被灰色替代。增加饱和度会增加所有红色的鲜艳程度,如果增加至最大值,所有红色将替换为100%红色。 Color Transformation Selector,设置要执行哪种类型的色彩转换。取值:RGB to RGB执行从RGB到RGB的色彩转换。 Color Transformation Value Selector,设置哪个元素将输入到色彩转换矩阵中。视相机型号而定,可能会预设色彩转换矩阵中的某些元素。并且无法更改。取值:Gain00可在位置行0和列0输入所需的色彩转换值、Gain01可在位置行0和列1输入所需的色彩转换值、Gain02可在位置行0和列2输入所需的色彩转换值、Gain10可在位置行1和列0输入所需的色彩转换值、Gain11可在位置行1和列1输入所需的色彩转换值、Gain12可在位置行1和列2输入所需的色彩转换值、Gain20可在位置行2和列0输入所需的色彩转换值、Gain21可在位置行2和列1输入所需的色彩转换值、Gain22可在位置行2和列2输入所需的色彩转换值。转换矩阵已预先填充有色彩转换值,它们与先前选择的光源预设相关、与单位向量相对应或根据先前使用色彩转换功能的情况得出。 Color Transformation Value,色彩转换矩阵中所选元素的转换值。取值:float。 Color Transformation Value(Raw),色彩转换矩阵中所选元素的转换值(原始值)。取值:int。彩转换使用转换矩阵为每个像素传递修改后的红色、绿色和蓝色像素数据,通过将包含R、G和B像素值的31矩阵与包含色彩转换值的33矩阵相乘以执行转换: 注意:转换矩阵只应用于颜色微调。应在完全熟悉矩阵色彩转换时才使用此功能。要在转换矩阵中输入正确的值,通过试错法几乎是不可能实现的。 Color Transformation Matrix Factor,色彩矩阵对色彩值的影响程度。如果设为0,则矩阵实际上会被禁用。取值:float。Basler不建议对该参数进行修改。 Color Transformation Matrix Factor(Raw),色彩矩阵对色彩值的影响程度(原始值)。如果设为0,则矩阵实际上会被禁用。取值:int。 Color Adjustment Enable,启用色彩调节。取值:bool。 Color Adjustment Rest,使您能够恢复以前的色彩调节设置。取值:bool。 Color Adjustment Selector,设置要调整您的图像中的哪种色彩。取值:Red可以调整具有红色主导成分的色彩、Yellow可以调整具有黄色主导成分的色彩、Green可以调整具有绿色主导成分的色彩。 Color Adjustment Hue,要应用到当前所选色彩通道的色相调整值。取值:float。 Color Adjustment Hue(Raw),要应用到当前所选色彩通道的色相调整值(原始值)。取值:int。调整色调偏移会改变图像的颜色,这对于纠正色彩偏移或创建伪彩图像等很有用。参数值指RGB颜色立方体的旋转,默认值为0(即无色彩偏移)。 Color Adjustment Saturation,要应用到当前所选色彩通道的饱和度调节值。取值:float。 Color Adjustment Saturation(Raw),要应用到当前所选色彩通道的饱和度调节值。取值:int。
②保存相机设置以便将来使用 <1>Configuration Sets,包含用于创建用户设置(也称为配置集)的参数。出厂设置组或用户定义设置组可以保存在这些设置中,并在后续阶段或在其他相机上重新加载。 Configuration Set Selector,设置要加载、保存或配置的用户设置或出厂设置。取值:Default Configuration Set可以加载“默认用户设置”出厂设置。此用户设置对相机进行配置,以便在普通条件下的许多常见应用中提供良好的相机性能、User Set 1可以保存、加载或配置用户设置1、User Set 2可以保存、加载或配置用户设置2、User Set 3可以保存、加载或配置用户设置3。 User Set Load,将所选设置加载到相机的易失存储器中,使其成为活动配置集。加载所选的设置后,该设置中的参数将控制相机。取值:bool。 User Set Save,将当前活动设置保存为所选用户设置。取值:bool。 Default Startup Set,设置要用作启动设置的用户设置或出厂设置。在每次相机开机或重置时,将加载默认启动设置并将其作为活动设置。取值: Default User Set默认用户设置出厂设置被设为默认启动设置、User Set 1用户设置1被设为默认启动设置、User Set 2用户设置2被设为默认启动设置、User Set 3用户设置3被设为默认启动设置。 Default Set Selector,设置哪个出厂设置将成为默认启动设置。取值:Standad标准出厂设置设为默认启动设置、High Gain高增益出厂设备设为默认启动设置、Auto Function自动功能出厂设置设为默认启动设置、Color色彩出厂设置设为默认启动设置。 ③在不断变化的光照条件下保持图像质量一致 <1>Analog Controls栏,前面已述; <2>Color Improvements Control,前面已述; <3>Acquistion Controls,包含用于控制图像采集和触发的参数。 AcquisitionFrameCount,每个“采集开始”触发要采集的帧数。取值:int。 Trigger Selector,设置要配置的触发类型。对触发设置所做的所有更改将应用于所选触发。取值:Acquisition Start配置采集开始触发、Frame Start配置帧开始触发。一般使用FrameStart。 Trigger Mode,设置当前所选触发的模式。取值:Off关闭当前选定的触发、On打开当前选定的触发。 Generate Software Trigger,生成软件触发信号。如果Trigger Source参数设为Trigger Software,将使用软件触发信号。取值:bool。(该设置对于Acquisition Start和Frame Start均适用)。 Trigger Source,设置所选触发的源信号。取值:Trigger Software所选触发的源信号设为软件触发、Line 1所选触发的源信号设为线1。 Trigger Activation,设置将激活所选触发的信号转换的类型。取值:Rising Edge通过源信号的上升沿激活所选触发、Falling Edge通过源信号的下降沿激活所选触发。 Trigger Delay(Abs),触发延迟时间(以μs为单位)。在收到触发之后和有效激活触发之前应用延迟。取值:float。 Exposure Mode,设置曝光模式。取值:Timed曝光模式设为计时,在此模式下,每个帧采集的曝光时间取决于相机的Exposure Time(Abs)参数的值、Trigger Width曝光模式设为触发宽度,在此模式下,每个帧采集的曝光时间直接由ExFSTrig信号控制。 Exposure Auto,设置自动曝光自动功能的操作模式。自动功能在设定的限制内自动调节曝光时间,直到达到目标亮度值为止。取值:Off自动曝光时间调节处于禁用状态、Once曝光时间会自动进行调整,以达到指定的目标值。当达到目标值时,自动功能将自动设为Off,并且新的参数值将应用到后续图像、Continuous在采集图像时持续调整曝光时间。调整过程将持续,直到参数设为Once或Off为止。 Exposure Time(Abs),相机的曝光时间(以μs为单位)。取值:float。 Exposure Time(Raw),相机的曝光时间(原始值)。实际曝光时间等于当前Exposure Time(Abs)值乘以当前Exposure Time的值。取值:int。 Readout Time(Abs),其可让你确定从传感器读出图像数据所需的时间(但提供时间估计非常粗略),只读。每个图像采集过程包括两个部分:
- 成像传感器像素的曝光,即曝光时间。
- 来自传感器的像素值的读出,即传感器读出时间。
如果想估计图像采集过程的哪一部分限制了相机的帧速率,该参数很有用。可将曝光时间与传感器读出时间进行比较: - 如果传感器的读出时间比曝光时间长得多,请考虑调整影响传感器读出时间的相机功能,例如,Binning、Decimation或者Image ROI。
- 如果传感器的读出时间比曝光时间短得多,应考虑缩短曝光时间。
Exposure Overlap Time Max(Abs),在Trigger Width曝光模式下,传感器曝光与传感器读出的最大重叠(以μs为单位)。取值:float。 Exposure Overlap Time Max(Raw),在Trigger Width曝光模式下,传感器曝光与传感器读出的最大重叠(原始值)。取值:int。 Enable Acquisition Frame Rate,允许将相机的帧采集速率设为指定的值。取值:bool。 Acquisition Frame Rate(Abs),相机的帧采集速率(帧/秒)。取值:float。 Resulting Frame Rate(Abs),当前相机设置下的最大帧采集速率(以帧/秒为单位)。只读 Acquisition Status Selector,设置您要检查其状态的信号。可通过读取Acquisition Status参数值来检查它的状态。取值:Acquisition Trigger Wait对勾确定相机当前是否在等待触发采集一个或多个帧、Acquistion Active对勾确定相机当前是否在采集一个或多个帧、Acquisition Transfer对勾确定相机当前是否在传输一个或多个帧的采集、Frame Trigger Wait对勾确定相机当前是否在等待帧触发、Frame Active对勾确定相机当前是否在捕捉帧、Frame Transfer对勾确定相机当前是否在传输帧、Exposure Active对勾确定相机当前是否在曝光帧。 Acquisition Status,指示相机是否正在等待触发信号。仅当相机配置为软件触发时,您才应使用此功能。如果相机配置为硬件触发,请改为监测相机的Trigger Wait信号。只读,Acquisition Status Selector参数对应的只读状态值。 <4>Auto Function Parameters,包含用于配置自动功能的参数。 Target Gray Value,自动增益和自动曝光自动功能的目标亮度。取值:int。 Gain (raw)Lower Limit,激活自动增益自动功能时,增益参数的下限(原始值)。取值:int。 Gain (raw)Upper Limit,激活自动增益自动功能时,增益参数的上限(原始值)。取值:int。 Exposure Time(Abs) Lower Limit,激活自动曝光自动功能时,曝光时间参数的下限。取值:float。 Exposure Time(Abs) Upper Limit,激活自动曝光自动功能时,曝光时间参数的上限。取值:float。 Auto Function Profile,设置当相机做出自动调整时,如何平衡增益和曝光时间。取值:Gain at minimum增益尽可能保持最低。在自动调节期间,增益尽可能保持最低、Exposure Time at minimum曝光时间尽可能保持最低。在自动调节期间,曝光时间尽可能保持最短。 A.F. AOI Selector,设置可以配置的自动功能AOI。取值:AOI 1可以配置自动功能AOI 1、AOI 2可以配置自动功能AOI 2。 Width,自动功能AOI的宽度(以像素为单位)。取值:int。 Height,自动功能AOI的高度(以像素为单位)。取值:int。 Offset X,自动功能AOI相对于传感器左侧的水平偏移(以像素为单位)。取值:int。 Offset Y,自动功能AOI相对于传感器顶部的垂直偏移(以像素为单位)。取值:int。 Intensity,将自动增益和自动曝光自动功能分配给当前所选的自动功能AOI。对于此参数,自动增益和自动曝光被视为名为强度的单个自动功能。取值:bool。 White Balance,将自动白平衡自动功能分配给当前所选的自动功能AOI。取值:bool。
④控制亮度 <1>Analog Controls栏,前面已述; <2>Image Format Controls栏,前面已述; <3>Acquistion Controls栏,前面已述; <4>Auto Function Parameters栏,前面已述。
⑤控制帧速率 <1>Image Format Controls栏,前面已述; <2>AOI Controls,包含用于指定兴趣区大小和位置的参数。 Width,相机的兴趣区的宽度(以像素为单位)。视相机型号而定,可以按不同的增量设置该参数。取值:int。 Height,相机的兴趣区的高度(以像素为单位)。视相机型号而定,可以按不同的增量设置该参数。取值:int。 X Offset,兴趣区相对于传感器左侧的水平偏移(以像素为单位)。取值:int。 Y Offset,兴趣区相对于传感器顶部的垂直偏移(以像素为单位)。取值:int。 Center X,水平居中放置图像。取值:bool。 Center Y,垂直居中放置图像。取值:bool。 <3>Acquistion Controls栏,前面已述; <4>Transport Layer,包含与传输层相关的参数。 PayloadSize,有效负载大小(以字节为单位)。这是在有效负载中发送的字节总数。只读 Packet Size,所选流通道上的数据包大小(以字节为单位)。不包含前导数据和尾随数据。(最后一个数据包可能更小,因为数据包大小不一定是流通道的块大小的倍数)。取值:int。 Inter-Packet Delay,所选数据流通道上的每个数据包的传输之间的延迟。以tick为单位测量延迟。取值:int。 Frame Transmission Delay,选定流通道上的帧传输延迟(以tick为单位)。此值设置传输所采集图像之前的延迟。取值:int。 Bandwidth Reserve,要预留并分配给相机的以太网带宽百分比(用于重新发送数据包和在相机与主机之间传输控制数据)。此设置表示为Bandwidth Assigned参数的百分比。例如,如果Bandwidth Assigned参数指示为相机分配了30MB/s的带宽且Bandwidth Reserve参数设为5%,则带宽预留将为1.5MB/s。取值:int(一般设为10%)。 Bandwidth Reserve Accumulation,带宽预留参数的乘数。该乘数用于建立额外的带宽预留池,如果需要重新发送超大的数据包,可以使用该预留池。取值:int(一般设为10%)。 Bandwidth Assigned,相机用于传输图像和块功能数据以及处理重新发送和控制数据传输的基本带宽(以Byte/s为单位)。只读,默认值125 000 000。 Device Max Throughput,相机可以生成的最大数据量(Byte/s)。在理想条件下(即无须带宽和无数据包重新发送),相机可以通过当前设置生成的最大数据量(Byte/s)。只读,与Bandwidth Assigned相关,默认值84 096 417。 Device Current Throughput,在当前的AOI、块功能和像素格式设置下,相机将用于传输图像数据和块数据的实际带宽(Byte/s)。只读,与Bandwidth Assigned、Bandwidth Reserve、Bandwidth Reserve Accumulation参数有关。 Frame Jitter Max,由于突发的重新发送,下一帧传输可能延长的最大时间量(单位为tick)。如果Bandwidth Reserve Accumulation参数设为较高的值,相机可能会遇到突然出现大量数据重新发送行为的时段。这种突发的重新发送将会延迟开始传输下一张采集的图像。只读。 Version Major,此相机支持的GigE Vision规范的主要版本号。只读,默认值为1。 Version Minor,此相机支持的GigE Vision规范的次要版本号。只读,默认值为1。 Device Mode Big Endian,指示引导程序注册是否为大端格式。取值:bool,默认值为true Character Set,引导程序注册的所有字符串使用的字符集。只读,默认值为1 = UTF8。 Interface Selector,设置要配置的物理网络接口。对网络接口设置所做的所有更改将应用于所选接口。只读,默认值为Network Interface 0可以配置网络接口0。 MAC Address,所选网络接口的MAC地址。只读,默认值为string。 Auto IP Supported,指示选定的网络接口是否支持自动IP寻址(也称为LLA)。取值:bool。 DHCP Supported,指示选定的网络接口是否支持DHCP IP寻址。取值:bool。 Fixed IP Supported,指示选定的网络接口是否支持固定IP寻址(也称为持久IP寻址)。取值:bool。 Current IP Configuration,所选网络接口的当前IP配置,例如固定IP、DHCP或自动IP。 Current IP Address,所选网络接口的当前IP地址。 Current Subnet Mask,所选网络接口的当前子网掩码。 Current Default Gateway,所选网络接口的当前默认网关。 Fixed IP Address,所选网络接口的固定IP地址(如果相机支持并且已启用固定IP寻址)。 Fixed Subnet Mask,所选网络接口的固定子网掩码(如果相机支持并且已启用固定IP寻址)。 Fixed Default Gateway,所选网络接口的固定默认网关(如果相机支持并且已启用固定IP寻址)。 Link Speed,所选网络接口的连接速度(Mbit/s)。只读,默认值为1000。 Link Master,指示所选网络接口是否为时钟主端口。取值:bool,默认值为false。 Link Full-Duplex,指示所选网络接口是否在全双工模式下运行。取值:bool,默认值为true。 Link Crossover,指示所选网络接口的媒体相关接口交叉(MDIX)的状态。取值:bool,默认值为false。 First URL,GenICam XML文件的第一个URL参考。只读。 Second URL,GenICam XML文件的第二个URL参考。只读。 Number of Interfaces,相机的网络接口的数量。只读,默认值为1。 Message Channel Count,相机支持的消息通道数。只读,默认值为1。 Stream Channel Count,相机支持的流通道数。只读,默认值为1。 Opt. Event Data Commands Supported,指示是否支持EVENTDATA_CMD和EVENTDATA_ACK。取值:bool,默认值为false。 Opt. Event Commands Supported,指示是否支持EVENT_CMD和EVENT_ACK。取值:bool,默认值为true。 Opt. Packet Resend Commands Supported,指示是否支持PACKETRESEND_CMD。取值:bool,默认值为true。 Opt. Writemen Commands Supported,指示是否支持WRITEMEM_CMD和WRITEMEM_ACK。取值:bool,默认值为true。 Optional Concat. Commands Supported,指示HiFi支持单个消息中的多个操作。取值:bool,默认值为true。 Heartbeat Timeout,检测信号超时(以ms为单位)。取值:int。 Timestamp Tick Frequency,1秒内的时间戳时钟tick数。只读,默认值为125 000 000。 Timestamp Control Latch,锁定相机的当前时间戳值。取值:bool。 Timestamp Control Reset,重置相机的时间戳值。取值:bool。 Timestamp Control Latch Reset,重置时间戳控制锁。取值:bool。 Timestamp Value,时间戳的已锁定值。(必须首先使用Timestamp Control Latch命令锁定时间戳)。只读。 Control Channel Privilege,设置控制通道特权。取值:CCP Exclusive控制通道特权设为“独占”。具有独占访问权限的应用程序是此相机的主应用程序。它可以读取或写入相机。其他应用程序无法读取或写入相机、CCP Control控制通道特权设为“控制”。具有控制访问权限的应用程序是相机的主应用程序。它可以读取或写入相机。不允许其他应用程序读取相机、CCP Exclusive Control控制通道特权设为“独占控制”。 Interface Index,要使用的网络接口的索引。只读。 Host Port,所选流通道的目标端口。只读。 GevSCPSDoNotFragment,禁用流通道上的数据包的IP分片。此位被复制到每个流数据包的IP标头的“不分片”位中。取值:bool,默认值为true。 GevSCPSBigEndian,指示此流的多字节像素数据的字节序。True等于大端。默认值为false。 <5>流参数 Driver Type,设置流采集器要使用的驱动程序类型。取值:Windows Filter Driver使用了pylon GigE Vision Filter Driver、Socket driver使用套接字驱动程序(没看出区别)。 Maximum Number of Buffers,可同时用于采集图像的最大缓冲区数量。取值:int,默认值为10。 Maximum Buffer Size,用于采集图像的缓冲区的最大大小(以Byte为单位)。采集应用程序必须在开始采集之前设置此参数。取值:int。 Enable Resends,启用数据包重新发送机制。pylon GigE Vision Filter Driver和GigE Vision Performance Driver使用不同的数据包重新发送机制。取值:bool,默认值为true。 Packet Timeout,一帧内两个数据包之间的超时时间(以ms为单位)。每次收到数据包时都会重置超时。如果超时过期,例如在给定的时间段内未收到任何数据包,则数据包重新发送机制将生效。取值:int。 Auto Packet Size,启用数据包大小协商,以查找可能的最大数据包大小。使用大数据包可减少传输图像的负担。最大数据包大小取决于网络硬件及其配置。取值:bool。 Probe Packet Size,确定最大可能数据包大小。使用大数据包可减少传输图像的负担。是否可传输大数据包取决于使用的网络硬件及其配置。取值:bool。 Maximum Number Of Resends Per Packet,每个丢失数据包的最大重新发送请求数。仅在使用pylon GigE Vision Performance Driver时可用。取值:int,默认值为4。 Frame Retention,接收帧中所有数据包的最长时间(以ms为单位)。计时器在收到第一个数据包开始计时,如果传输未在指定时间内完成,则相应帧将以失败状态发送。取值:int,默认值为200。 Firewall Traversal Interval,防火墙遍历间隔时间(以ms为单位)。其应用到流通道。如果设置为0,则该特性被关闭。取值:int,默认值为10 000。 Receive Thread Priority Override,启用为接收传入流数据包的线程分配自定义优先级。仅在使用套接字驱动程序时可用。要分配优先级,需使用Receive Thread Priority参数。取值:bool。 Receive Thread Priority,接收线程的线程优先级。仅在使用套接字驱动程序时可用。要分配优先级,必须将Receive Thread Priority Override参数设为true。只读,默认值为15。 Socket Buffer Size,套接字缓冲区大小(以KB为单位)。仅在使用套接字驱动程序时可用。取值:int,默认值为32 768。
⑥更改分辨率 <1>AOI Controls栏,前面已述。
⑦检查相机是否丢失图像数据 <1>流参数栏,前面已述; <2>Statistic,包含用于显示统计数据的参数。 Total Buffer Count,GigE相机:收到的帧数。其他相机:已处理的缓冲区数。只读。 Failed Buffer Count,GigE相机:至少有一个故障数据包的缓冲区数。如果数据包的状态不是成功,则该数据包会被视为失败。其他相机:返回错误状态的缓冲区数。只读。 Buffer Underrun Count,由于队列中没有缓冲区而丢失的帧数。只读。 Total Packet Count,收到的数据包数。只读。 Failed Packet Count,失败的数据包数,即状态不是成功的数据包数。只读。 Resend Request Count,已发送的发出数据包重新发送命令数。只读。 Resend Packet Count,数据包重新发送命令请求的数据包数。只读。
⑧配置相机的触发行为 <1>Acquistion Controls栏,前面已述; <2>Digital I/O Controls,包含用于配置相机数字I/O线的参数。 Line Selector,设置要配置的I/O线。对线设置所做的所有更改将应用于所选线。取值:Line 1可以配置线1、Output Line 1可以配置输出线路1。 Line Mode,设置所选线的模式。这可控制是否使用物理线来输入或输出信号。取值:Input所选物理线可用于输入电子信号、Output所选物理线可用于输出电子信号。 Line Logic,指示当前所选线的线逻辑。取值:Positive当前选定的线的线逻辑为正、Negative当前选定的线的线逻辑为负(Input对应正逻辑、Output对应负逻辑,不能改)。 Line Format,指示当前所选线的电气配置。取值:Opto-coupled线进行光耦合。 Line Source,设置当前所选线的源信号。当前所选线必须为输出线路。取值:Exposure Active当前所选线的源信号设为ExposureActive、Frame Trigger Wait当前所选线的源信号设为FrameTriggerWait、Timer Active当前所选线的源信号设为TimerActive、User Output当前所选线的源信号设为UserOutput、Acquisition Trigger Wait当前所选线的源信号设为AcquisitionTriggerWait、Flash Window当前所选线的源信号设为FlashWindow。 Line Inverter,为当前所选输入线路或输出线路启用信号逆变器功能。取值:bool。 Line Debouncer Time Abs,线消抖时间(μs)。线消抖使您可以通过指定最小信号长度来过滤无效的硬件信号。取值:float。 Line Status,指示所选线的当前逻辑状态。只读。 Line Status All,指示轮询时所有可用线信号的当前逻辑状态的单一位字段。只读。 User Output Selector,设置要配置的用户可设置输出信号。对用户可设置输出信号设置所做的所有更改将应用于所选的用户可设置输出信号。取值:User Settable Output 1可以配置用户可设置的输出信号1。 User Output Value,启用所选的用户可设置输出线路。取值:bool。 User Output Value All,在一次访问中设置所有用户可设置输出信号的状态的单一位字段。只读。
基于以上相机调节方式,我们参照《大恒相机图像质量调节说明书》给出的相机参数设置步骤来给出相机设置的具体示例。整体上分为以下4步: ①带宽调节; ②亮度调节; ③颜色调节; ④明暗对比调节。 ①带宽调节 通过设置最大可用带宽,以及最小的图像传输流量需求(不是必选的),来获得最优的图像传输效果。因为使用越少的Packet传输图像,图像出现丢帧的概率越低,花费在数据拼接的时间也越短。 <1>将Bandwidth Reserve和Bandwidth Reserve Accumulation设置为10%(保留一定的带宽冗余,以更好适应现场的网速波动),Auto Packet Size设为true,使其自动探测并设置最大可用带宽。 <2>根据自己的实际视野需求调整AOI Controls栏的Width和Height来确定视野,并通过勾选Center X和Center Y使选定视野位于传感器正中间,以便于后续对由机械安装造成的误差进行微调补偿。 实际需要视野由以下因素决定:
- 最大部件尺寸
- 部件在平移和方向上的最大变化
- 作为对部件尺寸的偏移量的边距
- 相机传感器的纵横比。
如下图所示,标有1的黑色部分显示最大零件尺寸。由于定位,零件可能超过灰色零件所示的最大变化,标记为2。框架3导致由最大零件尺寸加上最大定位公差确定的尺寸。标记4是由零件和图像之间的边距的额外需求定义的。对于图像处理,可能需要在零件和图像边缘之间提供空间。此外,为了维护和安装摄像机,在定位上允许一定的公差是很方便的。标记4是所需的视野。但是,计算出的视野需要根据相机的传感器分辨率进行调整。大多数区域相机提供4:3的纵横比。因此,对于每个方向,视野可以计算为: FOV = 最大零件尺寸 + 定位公差 + 余量 + 适应相机传感器的纵横比 根据实际需要的像素位深度(一般使用8bit即可,OpenCV好处理),设置Image Format Controls栏的Pixel Format参数为Mono或Bayer BG 8或12,从而获得最小的传输流量。 ②亮度调节 通过光圈、快门、增益的组合使用来调节亮度: <1>在高亮环境下,优先使用光圈调节,较小的光圈可以提高锐利度、增加景深。 <2>当光圈最大时,亮度仍然不够,则通过调节快门来控制亮度。在监控场景中,拍摄移动、特别是快速移动的被摄体时,通常需要比较快的快门速度才能冻结住画面,否则会有拖尾。 <3>在较暗的环境中,光圈、快门已经调到极限,则需要通过增益来提升亮度。但提升增益的同时,噪声相应增加。 亮度调节的流程如下图: 先将相关参数全部恢复到初始值,即Analog Controls栏的Gain(Raw)、Black Level(Raw)和Digital Shift参数设置为0,Gamma Enable设置为false,Color Improvements Control栏的LightSource Selector、Balance White Auto、Color Adjustment Enable设置为Off,Color Adjustment Hue(Raw)为0,Color Adjustment Saturation(Raw)为128。 然后将Acquistion Controls栏的Enable Acquisition Frame Rate设置为true,将Acquisition Frame Rate(Abs)设置为目标帧率;将Exposure Auto设置为false,将Exposure Time(Abs)设置为目标帧率对应的间隔时间。 打开图像直方图,查看目前设置的取图效果。然后根据上述流程图,判断是要调节曝光时间,还是调节增益。如果需要调节曝光时间,则调整Exposure Time(Abs)参数;如果需要调节增益,则调整Analog Controls栏的Gain(Raw)参数。 由于希望最终的亮度尽量与真实光通量呈线性关系,所以尽量不使用Gamma校正和查找表。 由于即使在理想情况下,感光芯片本身也在高亮度值处表现出非线性,所以一种亮度调节良好的评价标准是:充分利用每个像元的位深度来提高整幅图像的细节区分度,即亮度累积直方图的97~98%处为动态范围-1(对应8位深度即254)。另一种亮度调节良好的评价标准是:如果整体直方图近似呈高斯分布,则亮度累积直方图的50%处为动态范围/2(对应8位深度即128)。 ③颜色调节 颜色调节的流程如下图: 先调节白平衡,Image Format Controls栏的Processed Raw Enable参数设为true,Color Improvements Control栏的Balance White Auto参数设为true。如果上述调整后,感觉取图颜色与现实差别较大,可尝试通过修改LightSource Selector参数来进行修正。如果该操作后还不理想,建议将Auto Function Parameters栏的White Balance参数设为true,Analog Controls栏的Gain Auto设为Once或Continuous,让相机自己进行调节,一般就能获得较好的效果。还可通过将Gamma Enable参数设为true,Gamma Selector参数设为sRGB来进一步改善显示效果。 上述流程图中颜色转换步骤,由于涉及到手动Balance Ratio(Raw)或Color Transformation Value(Raw)参数的输入,其需要专业的色彩校正参考和手段,这里不建议使用。 最后是饱和度调节等色彩微调,可通过Color Improvements Control栏的Color Adjustment Hue(Raw)和Color Adjustment Saturation(Raw)参数。如果要强调图像中的黑色部分,可调整Analog Controls栏的Black Level(Raw)参数进行调节。 颜色调节具有主观性,感觉取图颜色和真实颜色基本一致即可。 ④明暗对比调节 由于在Basler该款相机中,没有对比度和锐化相关的调节参数。如果确定需要增强图像的明暗对比度,只能通过使用Gamma校正和查找表来进行调节。效果如下图:
八、采集图像的连续精确获取
在实际应用中,大多时候需要以等间隔时间,连续稳定的从相机获取图像。常用的有两种方式:软件触发和硬件触发。 ①软件触发:即使用Latest Image Only Grab Strategy策略。这个策略下只有最新到的图像保存在输出队列中,如果一份旧图像还没被读取新图像就又来了,那么旧图像就被舍弃,这样可以保证读取到图像永远都是读取时刻最新的。参考Python代码为:
camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice())
camera.StartGrabbing(pylon.GrabStrategy_LatestImageOnly)
converter = pylon.ImageFormatConverter()
converter.OutputPixelFormat = pylon.PixelType_BGR8packed
converter.OutputBitAlignment = pylon.OutputBitAlignment_MsbAligned
while camera.IsGrabbing():
grabResult = camera.RetrieveResult(1000, pylon.TimeoutHandling_ThrowException)
if grabResult.GrabSucceeded():
image = converter.Convert(grabResult)
img = image.GetArray()
...
grabResult.Release()
camera.StopGrabbing()
使用Intel Core i5-8265U+8GB RAM+Win 10+pypylon,设置Basler相机参数为固定20FPS+20ms曝光时间+Bayer BG8。使用Python的time模块获取Windows系统时间,将连续的10000帧图像保存(前5000张)到硬盘,并统计相关时间,采样时间间隔均值为50.40ms,标准差为11.80ms。 使用相同的配置,通过回调函数方式连续获取图像的采样时间间隔均值为50.02ms,标准差为3.41ms。 参考Python代码为:
time_sys = []
converter = pylon.ImageFormatConverter()
converter.OutputPixelFormat = pylon.PixelType_BGR8packed
converter.OutputBitAlignment = pylon.OutputBitAlignment_MsbAligned
class SampleImageEventHandler(pylon.ImageEventHandler):
def OnImageGrabbed(self, camera, grabResult):
time_sys.append(time.time())
image = converter.Convert(grabResult)
img = image.GetArray()
...
camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice())
camera.RegisterImageEventHandler(SampleImageEventHandler(), pylon.RegistrationMode_Append, pylon.Cleanup_Delete)
camera.Open()
camera.StartGrabbing(pylon.GrabStrategy_LatestImageOnly)
while camera.IsGrabbing():
grabResult = camera.RetrieveResult(1000, pylon.TimeoutHandling_ThrowException)
camera.StopGrabbing()
camera.Close()
可以看到,由于主动使用辅助线程来进行相机数据获取,其时间间隔稳定性比不使用回调函数略好。 ②硬件触发:可使用ms以下级精度的恒温晶振(但其每天会发生1sec的漂移),也可使用具有卫星授时的精确时钟(秒级时间同步)。参考Python代码为(这里用软件触发模拟硬件触发):
time_sys = []
converter = pylon.ImageFormatConverter()
converter.OutputPixelFormat = pylon.PixelType_BGR8packed
converter.OutputBitAlignment = pylon.OutputBitAlignment_MsbAligned
class SampleImageEventHandler(pylon.ImageEventHandler):
def OnImageGrabbed(self, camera, grabResult):
time_sys.append(time.time())
image = converter.Convert(grabResult)
img = image.GetArray()
...
camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice())
camera.RegisterImageEventHandler(SampleImageEventHandler(), pylon.RegistrationMode_Append, pylon.Cleanup_Delete)
camera.Open()
camera.AcquisitionMode.SetValue('Continuous')
camera.TriggerSelector.SetValue('FrameStart')
camera.TriggerMode.SetValue('On')
camera.AcquisitionFrameRateEnable.SetValue(False)
camera.TriggerSource.SetValue('Software')
camera.ExposureMode.SetValue('Timed')
camera.ExposureTimeAbs.SetValue(20000.0)
camera.StartGrabbing(pylon.GrabStrategy_OneByOne, pylon.GrabLoop_ProvidedByInstantCamera)
camera.AcquisitionStart.Execute(True)
for k in range(50000):
time.sleep(50/1000)
camera.ExecuteSoftwareTrigger()
camera.AcquisitionStop.Execute(True)
camera.StopGrabbing()
camera.Close()
九、其他
关于相机的供电,Basler推荐使用PoE供电。也就是说,如果需要同时连接多台相机,比较好的方式是使用能提供PoE供电的网络交互机,如下图: 由于是多台相机连接到一台交换机,再通过一根网线与工控机连接。所以该交换机必须具有足够的缓冲容量,使其可以保存来自相机的输入数据。还要注意相机传输的Pixel Format设置。网络交换机需要能提供巨型帧,这样最大数据包可达到16 kB。 Basler GigE相机和推荐的网络适配器都可以处理巨型帧。为了最大程度地提高网络效率,应将相机配置为所用网络可以处理的最大数据包大小。同时最好关闭防火墙,来最大化数据传输速率。 Basler相机在使用过程中会逐渐升温,虽然一小时后,外壳温度趋于稳定并不再升高。但为了确保良好的图像质量,Basler建议不要在高温下操作相机,可以相机配上风扇或散热片来缓解温升。Basler相机温度的最佳测量点如下图: 参考资料: 《Handbook of Machine and Computer Vision——The Guide for Developers and Users》,Alexander Hornberg,Wiley 《机器视觉算法与应用》,清华大学出版社 《数字光学测量技术和应用》,国防工业出版社 《数码相机中的图像传感器和信号处理》,清华大学出版社 《智能CMOS图像传感器与应用》,清华大学出版社 《海康机器视觉认证工程师官方资料》 《大恒相机图像质量调节说明书》 Basler官网文档,https://zh.docs.baslerweb.com/ https://blog.csdn.net/weixin_45023620/article/details/122289702 https://blog.csdn.net/qq_23107577/article/details/113258116
|