OpenMV学前相关知识

1.图像处理知识

1.1什么是像素和分辨率

感光元件是有很多个感光点构成的,比如有640*480个点,每个点就是一个像素,把每个点的像素收集整理起来,就是一副图片,那么这张图片的分辨率就是640*480:

1.2什么是帧率

帧率(FPS)就是每秒钟处理的图片数量,如果超过20帧,人眼就基本分辨不出卡顿。当然,如果用在机器上,帧率是越高越好的,OpenMV的最大帧率对比:
注:没有标注均为不传输图像给IDE,因为这个过程很耗费时间。

1.3颜色

RGB三原色

三原色的原理不是物理原因,而是由于人的生理原因造成的。人的眼睛内有几种辨别颜色的锥形感光细胞,分别对黄绿色、绿色和蓝紫色(或称紫罗兰色)的光最敏感(波长分别为564、534和420纳米)。所以RGB经常用于显示器上,用来显示图片。

LAB亮度对比度

Lab颜色空间中,L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色,负端代表兰色。不像RGB和CMYK色彩空间,Lab颜色被设计来接近人类视觉。

因此L分量可以调整亮度对,修改a和b分量的输出色阶来做精确的颜色平衡。

注意:在OpenMV的查找色块的算法中,运用的就是这个LAB模式!

1.4镜头畸变和焦距 

镜头的畸变,因为光学原理,在感光芯片上不同的位置,与镜头的距离不同的,简单说就是近大远小,所以在边缘会出现鱼眼效果(桶型畸变)。为了解决这个问题,可以在代码中使用算法来矫正畸变,注:OpenMV中使用image.lens_corr(1.8)来矫正2.8mm焦距的镜头。

镜头焦距:是指镜头光学后主点到焦点的距离,是镜头的重要性能指标。镜头焦距的长短决定着拍摄的成像大小,视场角大小,景深大小和画面的透视强弱。当对同一距离远的同一个被摄目标拍摄时,镜头焦距长的所成的象大,镜头焦距短的所成的象小。注意焦距越长,视角越小。

2.OpenMV图像基本处理方法

2.1感光元件 

sensor模块,用于设置感光元件的参数。

举个例子:

import sensor#引入感光元件的模块

# 设置摄像头
sensor.reset()#初始化感光元件
sensor.set_pixformat(sensor.RGB565)#设置为彩色
sensor.set_framesize(sensor.QVGA)#设置图像的大小
sensor.skip_frames()#跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。

# 一直拍照
while(True):
    img = sensor.snapshot()#拍摄一张照片,img为一个image对象

2.1.1初始化

  • sensor.reset() 初始化感光元件

2.1.2设置彩色/黑白

  • sensor.set_pixformat() 设置像素模式。
    • sensor.GRAYSCALE: 灰度,每个像素8bit。
    • sensor.RGB565: 彩色,每个像素16bit。

比如将图像设置为黑白:

sensor.set_pixformat(sensor.GRAYSCALE)#设置为黑白

2.1.3设置图像分辨率(图像大小) 

  • sensor.set_framesize() 设置图像的大小
    • sensor.QQCIF: 88x72
    • sensor.QCIF: 176x144
    • sensor.CIF: 352x288
    • sensor.QQSIF: 88x60
    • sensor.QSIF: 176x120
    • sensor.SIF: 352x240
    • sensor.QQQQVGA: 40x30
    • sensor.QQQVGA: 80x60
    • sensor.QQVGA: 160x120
    • sensor.QVGA: 320x240
    • sensor.VGA: 640x480
    • sensor.HQQQVGA: 80x40
    • sensor.HQQVGA: 160x80
    • sensor.HQVGA: 240x160
    • sensor.B64X32: 64x32 (用于帧差异 image.find_displacement())
    • sensor.B64X64: 64x64 用于帧差异 image.find_displacement())
    • sensor.B128X64: 128x64 (用于帧差异 image.find_displacement())
    • sensor.B128X128: 128x128 (用于帧差异 image.find_displacement())
    • sensor.LCD: 128x160 (用于LCD扩展板)
    • sensor.QQVGA2: 128x160 (用于LCD扩展板)
    • sensor.WVGA: 720x480 (用于 MT9V034)
    • sensor.WVGA2:752x480 (用于 MT9V034)
    • sensor.SVGA: 800x600 (仅用于 OV5640 感光元件)
    • sensor.XGA: 1024x768 (仅用于 OV5640 感光元件)
    • sensor.SXGA: 1280x1024 (仅用于 OV5640 感光元件)
    • sensor.UXGA: 1600x1200 (仅用于 OV5640 感光元件)
    • sensor.HD: 1280x720 (仅用于 OV5640 感光元件)
    • sensor.FHD: 1920x1080 (仅用于 OV5640 感光元件)
    • sensor.QHD: 2560x1440 (仅用于 OV5640 感光元件)
    • sensor.QXGA: 2048x1536 (仅用于 OV5640 感光元件)
    • sensor.WQXGA: 2560x1600 (仅用于 OV5640 感光元件)
    • sensor.WQXGA2: 2592x1944 (仅用于 OV5640 感光元件)

比如设置图像像素为 :320x240

sensor.set_framesize(sensor.QVGA)#设置图像的大小

 不设置参数时返回像素大小

2.1.4跳过一些图片

sensor.skip_frames([ntime])

使用 n 个快照,让相机图像在改变相机设置后稳定下来。 n 作为普通参数传输, 例如: skip_frames(10) 跳过 10 帧。您应在改变相机设置后调用该函数。

或者,您可通过关键字参数 time 来跳过几毫秒的帧数,例如: kip_frames(time = 2000) ,跳过2000毫秒的帧。

若 n 和 time 皆未指定,该方法跳过300毫秒的帧。

若二者皆指定,该方法会跳过 n 数量的帧,但将在 time 毫秒后超时。

2.1.5返回相机ID

sensor.get_id()

2.1.6图像方向设置

水平镜像

sensor.set_hmirror(enable)

打开(True)或关闭(False)水平镜像模式。默认关闭。

垂直翻转

sensor.set_vflip(enable)

打开(True)或关闭(False)垂直翻转模式。默认关闭。

自动旋转

sensor.set_auto_rotation(enable)

打开自动旋转模式(True)或关闭(False)。默认为关闭。

2.1.7自动增益,白平衡,曝光,对比度,设置亮度等

  • sensor.set_auto_gain() 自动增益开启(True)或者关闭(False)。在使用颜色追踪时,需要关闭自动增益。

  • sensor.set_auto_whitebal() 自动白平衡开启(True)或者关闭(False)。在使用颜色追踪时,需要关闭自动白平衡。

  • sensor.set_auto_exposure(enable[\, exposure_us])

    • enable 打开(True)或关闭(False)自动曝光。默认打开。
    • 如果 enable 为False, 则可以用 exposure_us 设置一个固定的曝光时间(以微秒为单位)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值