-
基础图形函数之三点定圆
public PointF CalculateCicular(PointF px1, PointF px2, PointF px3){float x1, y1, x2, y2, x3, y3;float a, b, c, g, e, f, X, Y;x1 = px1.X;y1 = px1.Y;x2 = px2.X;y2 = px2.Y;x3 = px3.X;y3 = px3.Y;a = 2 * (x1 – x2);b = 2 * (y1 – y2);c = 2 * (x1 – x3); d = 2 […]
-
[转]相机像素尺寸(像元大小)和成像系统分辨率之间的关系 转载
相机像素尺寸(像元大小)和成像系统分辨率之间的关系 在显微成像系统中,常常会用分辨率来评价其成像能力的好坏。这里的分辨率通常是指光学系统的极限分辨率以及成像探测器的图像分辨率。最终图像所呈现出的实际分辨率,取决于二者的综合影响。过高的光学分辨率如果没有足够精细的图像分辨率来体现,则实际分辨率会降低到图像分辨率以下;如果相机解析能力过高但光学系统的分辨率低,同样也看不清物体的精细结构。所以在选择相机的时候,我们也不妨根据自己这套系统需要达到的分辨率来综合考虑一下(实操性的结论部分请直接移动到文章最下方)。 1. 光学系统的分辨率 光学系统的分辨率,是指“物”在经过光学系统后的“像”在细节上能被分辨的最小距离。一般我们会用光学系统所能分辨的两个像点的最小距离来表示,大于这个距离的两个像点就能被识别为两个点,而小于这个距离的两个点经过光系统后就会被识别为一个点。而对于黑白图样(荧光样品其实也是一种黑白图样)来说,这个分辨能力也可以用单位距离里内能够分辨的黑白线对数来表示,间隔越宽的黑白条纹越容易分别(想象一下细胞的Lamellipodia和Filopodia的差别)。 图一 从”物”到”像”的失真 存在这个分辨率的原因是因为光学系统的衍射和像差导致从“物”到“像”的过程中会发生“失真”。这种失真是空间上高频信号丢失所导致的(光学系统可以看作是一个空间上的低通滤波器,只能允许一定带宽范围内的空间频率信号通过),通俗的理解就是削弱了由“黑”到“白”过渡的锐度和对比度,使其变得平滑和模糊。下图所示,黑白条纹的真实灰度可以用一个方波信号表示。在经过光学系统之后,如图像 A 和下方波形所示,原始信号被“平滑”,方波的每一个峰都展宽成一个贝塞尔峰,黑白相交处的信号变化斜率下降到一个固定水平(这个斜率的下降就是以该系统带宽所做的滤波效果)。当我们将原始条纹变的密集(增加空间频率),该系统仍以固定带宽进行滤波,这样这些被展宽的峰就会互相交叠,损失重叠部分的对比度从而产生图像B的效果。如果我们换一个带宽更宽的系统 2,其信号的高频部分会被更好的保留,表现为黑白交界处的信号变化斜率更大,对比度也越接近真实情况,如图像 B’。 回归到我们熟悉的生物荧光成像,上述分辨率的概念通过瑞利判据与样品的发射光波长和光学系统的数值孔径相联系起来。即在传统宽场荧光下,光学系统的极限分辨率 d = 0.6λ/NA,波长越短,NA值越大,分辨率越高(可以理解为对空间高频信号的保留越充分)。 2. 相机的图像分辨率 说完了光学系统的分辨率之后我们来看看相机的图像分辨率。图像分辨率比较好理解,就是单位距离内的像用多少个像素来显示。以我们的ORCA-Flash4.0为例,芯片的像元大小为 6.5 μm,在 40X物镜的放大倍率下,1 μm的物经光学系统放大为 40 μm的像,这样的像会由 40/6.5 = 6.15 个像素来显示,所以图像分辨率为 6.15 pixel/μm。反推回实际物体,则图像中的一个像素点表示的实际距离为 1/6.15 = 162 nm (其实就是像元尺寸/放大倍数)。根据这个原理,我们可以得出像元尺寸越小,其图像分辨率越高。 3. 相机采样与光学分辨率的匹配关系 那么要使整个系统达到光学上的极限分辨率,我们要如何选择成像系统使其图像分辨率相匹配呢? 这里还需要借助上图中黑白条纹的例子。图中不管是图像 A,B还是 B‘,其图像在x方向上的灰度都可以用图像下方的波形图来展示。相机的芯片则会在该方向上以像元尺寸为单位距离均匀对曲线作积分,得到每个像素的数值。这个过程就是对一个连续信号的离散采样。因为芯片上的像素以固定的距离排列,所以这个采样在空间上的采样周期 l 对应的就是像元尺寸(更准确的说是两像素中心点的间距,因为需要考虑芯片的填充因子),其频率就是单位距离内像素点的个数。上述黑白条纹图样的空间频率就是白色/黑色条纹重复出现的频率,而其条纹间距就是他们在空间上的周期 d。频率越高,这个周期 d 就越短。根据Nyquist采样定理(可参考:https://www.zhihu.com/question/24490634),我们需要以连续信号最高频率的2倍作为离散采样的频率,才能刚好还原连续信号的特征。因此我们所需要的芯片采样周期 l,就应该小于等于条纹间距 d 的一半。同样类推到相距很近的两个物点也是如此。如此这样一来我们就能够将光学极限分辨率和像元尺寸联系在一起了。对于生物成像系统,光学上的极限分辨率就是荧光信号变化的最大频率所对应的空间周期 d = 0.6λ/NA,因此像元尺寸 l = […]
-
[转]gamma值
广义的GAMMA值 Gamma值的广义定义就是输入值和输出值的Gamma幂指数关系,用来补偿人眼对自然亮度的非线性感知。 Gamma为了解决人眼对自然亮度非线性感知的问题,其二是因为记录存储的有限性。 人眼感觉黑->白范围“有限”,灯泡可以无限,但感觉会趋于一个有限制值; 分析:此时输入是灯泡的强度,输出是人眼的感觉,大自然中,感觉的差别阈限随原来刺激量的变化而变化,这是著名的韦伯定律。 当物理亮度达到白色的20%左右的时候,人的心目中已经感受到中灰色(即0.5处)的概念。而剩下的一半高光区的灰阶,需要用白色80%的物理能量才能照亮成白色。根据输入和输出的关系,可确定此时的Gamma大约在1.8~2.5,而现在大多数用2.2。 所以,GAMMA值的应用非常多,如图像的拍摄中的相机的GAMMA、图像显示中的显示器的GAMMA、图像输出中的打印机、印刷机等GAMMA等,不同设备的GAMMA描述的都是此设备的信号值对应的亮暗关系,而且,这些关系都是非线性的。 显示器的GAMMA值 显示器的Gamma值表示了输入信号的颜色值以及发光的亮度之间的关系,也就是输出时从黑到白的亮度过渡。同样,其也是非线性关系的。使用不同的Gamma值:1.0(线性响应),1.8~2.2(较暗的图像),3.0(过暗的图像)显示同一幅图像: 可见,较低的Gamma值(1.0)有一个较亮,较平稳的显示;而较高的Gamma值(2.2)有更高对比度的较暗的显示。现在显示器一般用8位深的RGB来记录数字图像,所以最大的数据存储量就是28 * 28 * 28 = 16,777,216,如果使用线性的方式进行存储自然中的亮度,那可能根本不够用。所以拍摄的图像先用GAMMA进行压缩,保留了大部分的中间和暗调细节,再通过GAMMA释放(校正)并显示,展示给人眼看见,保证了人眼在显示器上感觉和自然中相同。 什么是GAMMA值为1.0线性响应? 对于采集设备,如相机或者扫描仪,Gamma为1.0的时候,图像不存在压缩和释放,直接将原自然高动态亮度1:1输出为高动态显示信号,如果不对图像进行GAMMA校正,整体图像会显得更亮,会失去更多的中间调和暗调,同时图像文件的大小也会更大。如我们熟知的RAW工作流程就是一种线性GAMMA流程。 显示器的GAMMA值标准是多少? GAMMA值没有标准,如果要正确的找到GAMMA的标准,只能通过每台显示器的调整GAMMA更适合人眼的感觉,即感觉白-黑之间的渐变平滑,而且中间灰处于0.5中间的位置。 一般而言,显示器的GAMMA值会在1.8~2.5之间。由于最初的CRT显示器的GAMMA采用2.2,所以现在大部分显示器还是沿用2.2作为推荐的GAMMA值,但Mac中使用1.8。没有对与错,最正确的方法则是通过灰介自己找到最佳的GAMMA值。 未使用GAMMA校正和使用1.8GAMMA校正的图像对比 打印机、印刷机GAMMA值? 流程中的所有设备都有它们自己独有的Gamma特性,这也是为什么用Gamma查找表(LUTs)来生成显示器的Gamma以匹配其它设备的Gamma。如专业的扫描仪的Gamma值一直都是1.0,这样可以在扫描过程中得到最大的线性响应,而便宜的扫描仪则使用较高的Gamma值来避免多余的暗调噪声。 对于胶印,GAMMA是CMYK比例和人眼的亮度刺激关系,也就是密度值大小,所以我们通常使用“网点扩大”或者“TVI”,而不是“Gamma”,但是两者同理。它是设备的阶调响应以及中间调的主要影响因素,这点与Gamma类似。印刷机的网点扩大有点像1.7,1.8的Gamma。但是实际的值取决于印刷机、纸张、油墨等。相关的因素比显示器的GAMMA校正多很多。 印刷机GAMMA与显示器的GAMMA的比较 事实上,如果观察一幅印刷图像,你实际会看到低亮度和高光部分的压缩,因此,在曲线图上,印刷图像的色调曲线或Gamma曲线会呈现S形。 显示器的Gamma曲线在端点只会沿着一个方向伸展,这取决于显示器的模拟状况。这就是为什么显示器上的图像一直比印刷图像呈现出更大的对比度的原因。
-
[转]线阵相机扫描速度
一.变量的定义 首先设定以下变量:(1)线阵相机的每线像素数(单位:pixel):Hc(2)目标物的宽幅(单位:m):Lo(3)目标物运行速率(单位:m/s):Vo(4)线阵相机线扫描速率(单位:Hz,即 线/s):Vc(5)扫描一帧图像目标物运行的时间(单位:s):To(6)扫描一帧图像线阵相机的扫描时间(单位:s):Tc(7)横向精度(每个像素代表的实际宽度):PH(8)纵向精度(每个像素扫描的实际长度):PL 横向的扫描精度为:线阵相机的每线像素数/目标物的宽幅 即ph= Hc/( Lo); 纵向扫描精度为: [线阵相机线扫描速率(单位:Hz,即 线/s)*扫描一帧图像线阵相机的扫描时间(单位:s)]/ [目标物运行速率(单位:m/s)*扫描一帧图像目标物运行的时间(单位:s)] PL=(Vc×Tc)/( 1pixel×Vo× To)(To=Tc)=(Vc)/( 1pixel×Vo) 要想成像条件好,需要横向分辨率和纵向分辨率相等 Lo/Hc=Vo/Vc 二,线扫速度的计算 根据“横向和纵向的分辨率相等”的原则,得到公式如下:Lo/Hc=Vo/Vc则相机的线扫描速率为:Vc =(Hc ×Vo)/( Lo),其中Hc是线阵相机的每线像素数, Lo目标物的宽幅,Vo目标物运行速率; 三,线阵相机的关键参数 resolution: 像素数, 传感器上有多少个像元。 MAX DATA RATE(应该叫相机时钟吧): 意思是相机每秒可以采取最大的数据量 Linerate 行频: 意思是每秒钟相机最大可以采取多少行影像 比如线扫相机中一行的像素为8192,每秒可以获得的最大数据量是160Mhz 则行频为:160000000/8192=19000 line/sec 也可以理解为: 四,实例说明 电子铜带宽度450mm,生产线速度120米/分=120000mm/60s=2000mm/s,需要检测的最小缺陷是0.2mm; 横向的分辨率的计算选择线扫相机的分辨率:450/Hc=0.2mm/pixel——->Hc=450/0.2=2250,但是真正的相机拍照,直接达到这和精度是有难度的,所以选型一般是Hc=450/0.2*2=4500,按照相机的分辨率的规律,可以选择4096像素的线扫相机; 纵向的选择(关键参数是线扫相机的行频): 根据上面的选型可以得到横向的分辨率:450mm/4096pixel=0.11mm/pixel 如果需要行和列的分辨率相等,则需要(2000mm/s)/(0.11mm/pixel)=18181line, 这样就可以推算出行频(意思是每秒钟相机最大可以采取多少行影像)满足18181line; 综上所述,相机的选型可以为行向分辨率4098,行频为19000的线扫相机即可;
-
线阵相机选型参数计算
1).计算分辨率:幅宽除以最小检测精度得出每行需要的像素。 2).检测精度:幅宽除以像素得出实际检测精度。 3).扫描行数:每秒运动速度长度除以精度得出每秒扫描行数。 根据以上计算结果选择线阵相机举例如下: 如幅宽为1600 毫米、精度1 毫米、运动速度22000mm/s 相机:1600/1=1600 像素。 最少2000像素,选定为2k 相机。 实际精度: 1600/2048=0.8 22000mm/0.8mm=27.5KHz 应选定相机为2048 像素28kHz 相机。 线阵相机有哪些特点? 1).线阵相机使用的线扫描传感器通常只有一行感光单元(少数彩色线阵使用三行感光单元的传感器) 2).线阵相机每次只采集一行图像; 3).线阵相机每次只输出一行图像; 4).与传统的面阵相机相比,面阵扫描每次采集若干行的图像并以帧方式输出。 为什么要在机器视觉检测中使用线阵相机? 1).线阵相机有更高的分辨率;线阵相机每行像素一般为1024,2048,4096,8012;而一般的面阵相机仅为640,768,1280,大于2048的面阵很少见。 2).线阵相机的采集速度更快;不同型号的线阵相机采集速度从每秒5000 行-60000 行不等,用户可以选择每几行或者每十几行即构成一帧图像进行处理一次,因此可以达到很高的帧率。 3).线阵相机可以不间断的连续采集和处理;线阵相机可以对直线运动的物体(直线导轨,滚筒上的纸张,织物,印刷品,传送带上的物体等)进行连续采集。 4).线阵相机有更简单合理的构造。与面阵相机相比,线阵相机不会浪费分辨率采集到无用数据。
-
线阵相机调帧率_对工业相机帧率的相关知识
工业相机是机器视觉系统的重要组成部分之一,在机器视觉系统中有着非常重要的作用。工业相机已经被广泛应用于工业生产线在线检测、智能交通,机器视觉,科研,军事科学,航天航空等众多领域。工业相机的主要参数包括:分辨率、帧率、像素、像元尺寸、光谱响应特性等。下面我们来对工业相机帧率的相关知识进行讲解: 帧率(Framerate)是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(FramesperSecond),简称:FPS或“赫兹”(Hz)。 由于人类眼睛的特殊生理结构,如果所看画面之帧率高于16fps的时候,就会认为是连贯的,此现象称之为视觉暂留。这也就是为什么电影胶片是一格一格拍摄出来,然后快速播放的。 每秒的帧数(fps)或者说帧率表示图形处理器处理场时每秒钟能够更新的次数。高的帧率可以得到更流畅、更逼真的动画。一般来说30fps就是可以接受的,但是将性能提升至60fps则可以明显提升交互感和逼真感,但是一般来说超过75fps一般就不容易察觉到有明显的流畅度提升了。如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能以这么快的速度更新,这样超过刷新率的帧率就浪费掉了。 最大帧率(FrameRate)/行频(LineRate):即相机采集传输图像的速率,对于面阵相机一般为每秒采集的帧数(Frames/Sec.),对于线阵相机为每秒采集的行数(Hz)。 相机帧率和曝光时间的关系: 有人问,为什么我们在使用工业相机的时候,将相机的曝光时间增加以后,相机的帧率就下降,而且下降得很厉害,相机的帧率和曝光的关系是怎样,如果想要获得固定的帧率,相机的曝光时间应该怎么设置?因此写下本文,解答了朋友的问题,也使用Sentech相机来做过相关的测试,帧率和曝光时间跟本文中所述一致。详细原理见下文所示: 曝光和传感器读数 相机上的图像采集过程包括两个截然不同的部分。第一部分是曝光。曝光完成后,进行第二部分Readout过程即从传感器的寄存器中读出数据并传送出去(Readout过程)。 关于图像采集过程中,相机操作有两种常见的方法:“non-overlapped”的曝光和“overlapped”的曝光。在非重叠(“non-overlapped”)模式中,每个图像采集的周期中,相机在下一个图像采集开始前,均要完成曝光/读出整个过程。如图1所示。 Fig.1Non-overlappedExposure 虽然非重叠(“non-overlapped”)的模式,可适合于许多情况下,但它并不是最有效的方式。为了提高相机的帧率,允许在下一帧图像开始曝光时候,将前一帧获得的图像数据读出并传送出去。相机“重叠”(“overlapped”)曝光的方式见图2所示。 从图2中我们可以看到,相机读出数据和下一帧曝光开始出现重叠的情况,在同一个时刻内,相机执行两个操作,导致在同样的单位时间内,在“overlapped”曝光模式下,可以采集到更多的图片,即相机的帧率更高。 Fig.2overlappedExposure 从上边两个图中,我们可以知道在“non-overlapped”的曝光和“overlapped”的曝光模式底下,一帧图像的周期存在着这样的关系:”overlapped”的曝光模式下:FramePeriod≤ExposureTime+ReadoutTime “non-overlapped”的曝光模式下:FramePeriod>ExposureTime+ReadoutTime 以STC-A202A为例: 图1Spec 从Spec中可知,其PixelFrequency为:36.8181MHz,所以1Clock的时间为1/36.8181Mhz=27.3836ns,接下来我们看相机的Timingchart,首先先看HorizontalTiming,见图2所示: 图2HorizontalTiming 从图2中,我们从中可读到的信息为,1CLK=27.1605nseconds,和我们从spec上得到的PixelFrequency算出来的时间差不多。扫描1Horizontal需要1920CLK,即1H=27.1605*1920=52148.16ns=52.14816us 接下来看相机VerticalTiming见图3所示: 图3VerticalTiming 从图3中,我们可读出的信息为,1H=52.1482useconds,和我们通过图2计算出来horizontalScanning的时间一致,而在一帧图像中,需要扫描1252H,其中EffectivePixels为1220H,即1帧图像中,EffectivePixelsReadout的时间为1220*52.1482=63620.804us=63.620804ms,一个VD信号,所用的时间为:1252*52.1482=67793.5464us=67.7935464ms。按照我们前边的理论,一个cycletime内,一帧图像的时间为:FramePeriod=ExposureTime+ReadoutTime 而我们知道STC-A202A的帧率为:15fps,即1FramePeriod=1/15=66.7ms。 所以在“non-overlapped”exposure模式下,ExposureTime=FramePeriod–ReadoutTime=66.7ms-63.6ms=3.1ms,在此模式下,若是超过3.1ms的曝光时间,其帧率就会比标准帧率15fps低。 假如1颗相机ReadoutTime为:66.7ms,即数据传输时间为A,A=66.7ms,曝光时间为B,B=5ms,则一帧图像的时间为C,则C=A+B=66.7ms+5ms=71.7ms,则这颗相机的帧率为:1000/71.7=13.94FPS,则这颗相机的帧率为13.94. 注意:一般情况下,若我们的相机的帧率为15fps,则表示相机ReadOut数据的时间为1000ms/15=66.7ms
-
[转]旋转标定
-
3d相机成像原理
3D成像方法 汇总(原理解析)— 双目视觉、激光三角、结构光、ToF、光场、全息 3D成像方法汇总介绍: 这里要介绍的是真正的3D成像,得到物体三维的图形,是立体的图像。 而不是利用人眼视觉差异的特点,错误感知到的假三维信息。 原理上分类:主要常用有: 1、双目立体视觉法(Stereo Vision) 2、激光三角法(Laser triangulation) 3、结构光3D成像(Structured light 3D imaging) 4、飞行时间法ToF(Time of flight) 5、光场成像法(Light field of imaging) 6、全息投影技术(Front-projected holographic display) 7、补充:戳穿假全息 上面原理之间可能会有交叉。 而激光雷达不是3D成像原理上的一个分类,而是一种具体方法。 激光雷达的3D成像原理有:三角测距法、飞行时间ToF法等。 激光雷达按照实现方式分类有:机械式、混合固态、基于光学相控阵固态 、基于MEMS式混合固态、基于FLASH式固态等。 1、双目立体视觉法: 就和人的两个眼睛一样,各种两个摄像头的手机大都会用这种方法来获得深度信息,从而得到三维图像。但深度受到两个摄像头之间距离的限制。 视差图:双目立体视觉融合两只眼睛获得的图像并观察它们之间的差别,使我们可以获得明显的深度感,建立特征间的对应关系,将同一空间物理点在不同图像中的映像点对应起来,这个差别,我们称作视差(Disparity)图像。对于视差的理解可以自己体验一下:将手指头放在离眼睛不同距离的位置,并轮换睁、闭左右眼,可以发现手指在不同距离的位置,视觉差也不同,且距离越近,视差越大。 提到视差图,就有深度图,深度图像也叫距离影像,是指将从图像采集器到场景中各点的距离(深度)值作为像素值的图像。 深度图与点云的区别,点云:当一束激光照射到物体表面时,所反射的激光会携带方位、距离等信息。若将激光束按照某种轨迹进行扫描,便会边扫描边记录到反射的激光点信息,由于扫描极为精细,则能够得到大量的激光点,因而就可形成激光点云。深度图像经过坐标转换可以计算为点云数据;有规则及必要信息的点云数据可以反算为深度图像。 两者在一定条件下是可以相互转化的。 双目立体视觉由三角法原理进行三维信息的获取,即由两个摄像机的图像平面和被测物体之间构成一个三角形。已知两个摄像机之间的位置关系和物体在左右图像中的坐标,便可以获得两摄像机公共视场内物体的三维尺寸及空间物体特征点的三维坐标。所以,双目视觉系统一般由两个摄像机构成。 深度和视差成反比。 2、激光三角法 单点激光测距原理:(同属于下面结构光原理)单点激光测距原理图如下图。 激光头Laser与摄像头在同一水平线(称为基准线)上,其距离为s,摄像头焦距为f,激光头与基准线的夹角为β。激光头Laser与摄像头在同一水平线(称为基准线)上,其距离为s,摄像头焦距为f,激光头与基准线的夹角为β。假设目标物体Object在点状激光器的照射下,反射回摄像头成像平面的位置为点P。假设目标物体Object在点状激光器的照射下,反射回摄像头成像平面的位置为点P。 由几何知识可作相似三角形,激光头、摄像头与目标物体组成的三角形,相似于摄像头、成像点P与辅助点P′。P与辅助点P′。 设 PP′=x,q、d如图所示,则由相似三角形可得:PP′=x,q、d如图所示,则 由相似三角形可得:f/x=q/s ==> q=fs/x X可分为两部分计算:X=x1+x2= f/tanβ + pixelSize* position 其中pixelSize是像素单位大小, position是成像的像素坐标相对于成像中心的位置。 […]