一、图像处理基础知识
1.摄像头:光学信号转换成电信号。计算机视觉中,最简单的模型是小孔成像模型。
小孔成像是一种理想模型,实际镜头会存在场曲和畸变等,但可以通过在标定过程中引入畸变参数解决,仍可广泛使用。
2.像素和分辨率
3.帧率:每秒钟处理的图片数量,>20人眼分辨不出卡顿。
4.颜色:不同波长的电磁波
通过RGB. CMYK HSB LAB色域来描述
RGB:三原色原理不是物理原因而是人的生理原因造成(锥形感光细胞)
LAB:L(亮度)、A(+:红色,-:绿色)、B(+:黄色,-:蓝色)用来接近人类视觉
L用来调整亮度对,a和b用来输出色阶来做精确的颜色平衡(查找色块算法)
HSB/HSV:H(Hue色相)、S(Saturation饱和度)、B(Brightness明度)
HSL:L(亮度)
CMYK:C(蓝色)、M(红色)、Y(黄色)、K(黑色)
CMYK和RGB的区别:
(1)CMYK是减色模式,而RGB是加色模式
(2)CMYK需要外界光源才能看到,印刷品颜色;RGB是屏幕显示发光的色彩模式,在黑暗房间也能看到
5.光源的选择(光源对整个画面的颜色变化有很大影响)
6.镜头的焦距和镜头畸变
焦距决定了拍摄的成像大小,视场角大小,景深大小和画面的透视强弱。焦距长成像大(视角越小),焦距短成像小
镜头畸变:用代码矫正镜头或直接使用无畸变镜头(加入了额外的矫正透镜部分)
在感光芯片上的不同位置,与镜头距离不同近大远小,在边缘出现鱼眼效果(桶形畸变)
标配镜头――桶形畸变
广角镜头――同样的区域取景范围大了
无畸变镜头
长焦镜头――锁定原来图像中的某一具体物体
7.镜头的滤片
滤掉红外光(根据需要滤掉不同波长的光),红外光在正常分析颜色图片的时候会使图像泛白影响分析。(只能通过650nm以内的)
二、OpenMV图像处理的基本方法
1. 感光元件
sensor模块,用于设置感光元件的参数。
sensor常用函数:
import sensor # 引入感光元件部分 # 设置摄像头 sensor.reset() # 初始化感光元件 sensor.set_pixformat(sensor.RGB565)# 设置像素模式 sensor.GRAYSCALE:灰度,每个像素8bit, sensor.RGB565:彩色。每个像素16bit sensor.set_framesize(sensor.QVGA)# 设置图像大小 s<strong style="color:transparent">本文来源gaodai#ma#com搞@@代~&码网^</strong>ensor.skip_frames(n)# n是跳过的帧数,等待感光元件稳定 # 拍摄 while(True): img = sensor.snapshot();# 拍摄一张照片,img为一个image对象 # 自动增益/白平衡/曝光 sensor.set_auto_gain() # True开启;False关闭,使用颜色追踪时,需关闭 sensor.set_auto_whitebal() # True开启;False关闭,使用颜色追踪时,需关闭 sensor.set_auto_exposure(enable[\,exposure_us]) # enable True打开/False关闭 # 如果关闭可以自己设置一个曝光值us为单位 # 设置窗口ROI sensor.set_windowing(roi) #roi的格式是(x, y, w, h)的tupple. sensor.set_framesize(sensor.VGA) sensor.set_windowing((640,80))#选择出自己想要的元素 # 设置翻转 sensor.set_hmirror(True)# 水平方向翻转 sensor.set_vflip((True)# 垂直方向翻转
sensor图像大小常用数据
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 感光元件)