数字图像基本理论_待续

1.灰度值:每个像素的光强大小表示,这个数值叫灰度值(亮度值  像素值  强度值) 数值越大光能量越大

2.位深度:每个像素的灰度值所占的位数(8位、24位)  黑白图像(灰度图像 一般8位)  彩色图像(24位一般)

3.彩色图像:RGB三分量(Red 红  Green 绿 Blue 蓝) 如果是24   位数则是:0--2的24次方-1   如果是8位  0到2的8次方减1(0--255)
4.通道数:每个像素灰度值所占的字节数  (单通道  多通道)
5.像素:组成图像的基本元素   宽*高 
             计算机处理的是数字图像
             在Halcon中图像坐标系的原点在左上角(行,列)
             光经过镜头发生了:采样  量化
 读入图像   显示图像   保存图像
 read_image:读入图像  数据由硬盘走向内存 
 dev_display:显示图像  数据由内存走向显卡
 write_image:保存图像(写入图像)数据由内存走向硬盘

6.飞拍防止拖影(运动模糊)条件

1. 曝光时间*速度小于等于一个精度  或者 曝光时间*速度*放大倍率小于等于一个像元大小
2. 全局曝光(避免卷帘曝光)

同步采集(容易丢帧  但是都是实时图)          

异步采集(不容易丢帧  但是容易采集到之前的图))

7.畸变

径向畸变(装配引起)   切向畸变(桶形畸变(小于0),枕形畸变(大于0)

畸变矫正:1.光学设计 采用小畸变镜头、远心镜头

                2.算法矫正

算法矫正流程:

1.先求相机初始内参

2.求理想内参  模式  相机内参  畸变系数  输出理想内参
change_radial_distortion_cam_par ('adaptive', CameraParam, 0, CamParamOut)

3.矫正图像 

求map映射: 输出map映射  相机初始内参  理想内参  插值算法
gen_radial_distortion_map (Map, CameraParam, CamParamOut, 'bilinear')

map映射矫正: 输入图像  map映射 输出矫正后的图像
map_image (Image, Map, ImageMapped)

4.重新求内外参(用矫正后的图像)

5.采集测量,进行矫正用新的内外参进行测量

一、光学,相机,镜头的一些基础

 做项目流程:
    1)需求分析-功能 性能  2)方案评估--算法  硬件方案(相机选型 镜头选型  光源选型-搭建)  软件方案       
    3)整体逻辑框架设计(硬件设计  软件设计-技术框架(分层设计)) 4)详细设计-模块设计
    5)编码  6)调试测试  7)交付验收  8)打包维护升级
 1)镜头-成像系统(光学设计+工艺+装配)
        1]参数以及原理---FA(Factory  Automan-工业自动化头)头   CCTV(Closed Circuit  Television- 闭路监控电视头)头
            1.焦距  (无穷远成像 焦平面和像平面重合)
                  定义-光心到焦点沿着光轴方向的距离成为焦距
                  焦距越大---视野越小   放大倍率大  畸变小   焦距越小--视野越大  放大倍率小 畸变大
           2  光圈--控制通光量大小
                  
           3 光圈数-F数
                 光圈数=焦距f/通光孔径D=f/D
                 相对孔径=D/f  -----------相对孔径越大  镜头分辨率越高
           4 分辨率      
                 镜头分辨率大于等于相机的分辨率
                 每毫米能分辨的线对数--镜头分辨率
          5  景深
               定义:物体成清晰像的情况下在物空间沿着光轴移动的距离称为景深
                         焦距越小 景深越大  焦距越大  景深越小
                         光圈越大  景深越小  光圈越小 景深越大
                         拍摄工作距离越大 景深越大  拍摄距离越小 景深越小
                         焦深
         6 靶面尺寸
               镜头的靶面尺寸大于等于相机 否则产生四个黑角
        7  机械接口
                    C    CS     F
             C接口镜头对接C接口相机    CS接口的镜头对接CS接口的相机
             C接口的镜头也可以对接CS接口的相机(加接圈)           但是  CS接口的镜头不能对接C接口的相机
        8  后截距
                镜头最后一个面到传感器中心沿着光轴的距离
        9  放大倍率
              放大倍率=像高/物高=传感器尺寸/视野大小             X1.5
        10 像差-----清晰度   形状(畸变)
             球差  彗差  像散  场曲  色差   
             畸变
            评价成像质量--MTF曲线(光学传递函数)
       2】镜头的选型
               依据:相似三角形
              视野(FOV)/传感器尺寸(Y)=工作距离(WD)/焦距(f)
              焦距=工作距离*传感器尺寸/视野大小

       3】了解一些光学器件
            反射棱镜   滤镜   偏振镜(防止反光)

      4】远心镜头
              物方远心   像方远心  双远心
2)相机-光电转换系统(设计电路原理图+PCB制板+焊接-》测试装配--》驱动程序--》demo软件 SDK-dll库)
         面阵              线阵----传感器的形状
     面阵:
        1】参数
               1.曝光时间
                     将光信号转为电信号的时间
                     曝光方式:全局曝光(帧曝光)  逐行曝光(卷帘曝光 滚动曝光)
                     飞拍条件:1 卷帘曝光   2 曝光时间*速度小于等于一个精度
               2 帧率
                     每秒采集的张数----fps              25fps
                     高速相机
               3  靶面尺寸
                     镜头的靶面尺寸大于等于相机的靶面尺寸,否则会产生四个黑角         

               4 机械接口
                      C镜头---C接口相机   CS接口镜头---CS接口相机
                     C镜头---接圈----CS接口相机
                     CS镜头--不能对接----C接口相机
               5  后背焦
                   相机的接口端口面到传感器中心沿着光轴距离

              6  增益
                      电流放大
                 RGB

              7 白平衡
                        平衡三个分量

               8  电信号--数字相机
                 USB(2.0  3.0)   GIGE以太网(百兆  千兆  万兆)   CameraLink  1394
               9  传感器类型  CCD    CMOS           
                      CCD 电荷耦合器件---电荷信号
                      CMOS 互补金属氧化物半导体--电压信号
      2】相机选型
               根据精度    2个丝--0.02mm
               视野/精度一般乘以3到5倍        算法要求高
             平场矫正--像元不均匀
  线阵相机:
      传感器一行像元 (4K  4*1024)     行频-(每秒采集行数   20kHz  每秒20000行/s)
      大视野  圆柱
      
3)光源
         四个角度:光源的种类  光源的大小和工作距离   光源的颜色  光源的角度
         依据:反射定律
   种类:  环形25 高角度 打大面积 低角度 打划痕,毛刺,瑕疵   同轴--高反,金属   点   线   条光源  碗状光源(球面积分光源(适合
曲面)) 背光源  开口面光源  无影灯
   打指纹--低角度
   颜色:同色打白  异色打黑           
   角度:反射定律  反射到镜头里去--亮
   大小:光源大小一般是视野两倍大小

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Java中,泛型是一种强类型机制,它可以让你在编译时检查类型错误,从而提高代码的安全性和可读性。在使用泛型时,我们经常会遇到父类和子类的泛型转换问题。 首先,我们需要明确一点:子类泛型不能转换成父类泛型。这是因为Java中的泛型是不协变的。例如,如果有一个类A和它的子类B,那么List<A>和List<B>之间是不存在继承关系的。 下面我们来看一个例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 } } ``` 在这个例子中,我们定义了Animal类和它的子类Dog。然后我们定义了两个List,分别是List<Animal>和List<Dog>。如果将List<Dog>赋值给List<Animal>,会出现编译错误。这是因为List<Animal>和List<Dog>之间不存在继承关系。 那么,如果我们想要让子类泛型转换成父类泛型,应该怎么办呢?这时我们可以使用通配符来解决问题。通配符可以表示任意类型,包括父类和子类。例如,我们可以将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 下面我们来看一个使用通配符的例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 List<? extends Animal> list3 = new ArrayList<>(); list3 = list2; // 正确 } } ``` 在这个例子中,我们定义了List<? extends Animal>来表示任意继承自Animal的类型。然后我们将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 总结一下,Java中的泛型是不协变的,子类泛型不能转换成父类泛型。如果需要实现子类泛型转换成父类泛型,可以使用通配符来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值