阈值

学霸笔记

霸气de小男生 提交于 2020-01-16 18:42:58
北邮摄像头 一、摄像头基本原理 我们的像素是多少 不需要太大的像素,不然会降低接受图像速度 提高帧数,降低像素 中断处理 PCLK像素值、HREF行、VSYNC场:一场一zhen 1、用到的就是行中断和场中断 行\场中断:需要用到外部引脚中断,同步 DMA传输:一般:外设到CPU到内存;DMA:由DMA控制器直接向外设取数据,此时CPU就只需要等待DMA完成接受的信号 中断处理:行中断来了,存到一个数组里,行到达像素高度,行中断清零,场中断,盯着 Field_Over_Flag=1 当然,直接接受场中断就更好了 2、图像采集优化 没记 二、摄像头图像处理 1.1、图像二值化 根据环境在出发前设定固定阈值:小于阈值直接设成白色(0) 通过OLED打印,通过按键对于图像二值化阈值进行调整 大津法,遍历阈值,发现方差最大 2、赛道边线提取 2.1 图像校正 获取摄像头视野角度,水平倾角,高度 计算实际图像与获取图像的XY坐标对应关系 对于缺失值进行 加权来计算缺失点计算量太大,只需要关键点(比如:赛道边缘什么) 2.2 赛道中心提取 2.2.1 常规赛道 捕捉赛道左侧右侧边缘坐标 计算梯度幅度和方向;保留局部梯度最大的点,已得到细化的边缘 2.2.2 特殊赛道 环岛识别检测、十字交叉路口 找出关键特征 三、摄像头代码框架 1、main.c 关闭总中断,防止初始化失败,初始化结束,就开中断

目标检测之IoU、precision、recall、AP、mAP详解

喜欢而已 提交于 2020-01-16 01:06:58
目录 1. 目标检测概述 2. IoU 3.precision(精度)和recall(召回率) 4. AP和mAP 5.实际计算方法 1. 目标检测概述 目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小,是计算机视觉领域的核心问题之一。以下图为例,图中需要识别3类物体:car(车)、bicycle(自行车)、dog(狗),通过特定的目标检测算法希望最终把每类物体检测出来,每类物体用一个矩形框框出来并且输出对应的类别。 因此,目标检测可以简单的理解为用个框把物体框出来并告诉我这个框里是什么。 在目标检测领域需要衡量每个检测算法的好坏,因此定义了很多指标,例如常见的IoU、precision、recall、AP、mAP等, 各个算法经过检测后得到每个物体的检测框和置信度,然后根据该值来计算上述指标值,从而方便大家一起来评估各个算法的优劣。 每个指标各不相同,下面详细阐述每个指标的概念和计算方法。 2. IoU IoU全程为Intersection Over Union ,意思是“并集里面的交集”。它的计算可以简单的用下图表示: 一个物体它会有一个真值框,英文称为ground truth,也就是我们实际为它标注的真实矩形框(一般情况下该矩形框是物体的最小外接矩形框,手工标注)。在评价一个算法的时候首先用该算法对图片进行检测,得到该物体的预测框

验证码识别之二值化

独自空忆成欢 提交于 2020-01-14 12:58:45
前言 二值化顾名思义就是将数变成两种值,一般非0即1。而在验证码处理中,如果直接使用灰度图,那么每个像素的值会在0-255,这样肯定会增加计算时间,而二值化后每个像素的值只是0和1。 在前面的简单验证码识别中,我的二值化代码是这样写的: a = (a > 180) * 255 ,至于这里为什么不乘1而乘255,因为我要显示图片看看效果。如果只是用于算法识别的话,乘1会更好。但是,这里的180也就是二值化的阈值是如何得到的,开始是通过一个一个试然后看效果哪个好就选哪个,因为我们一般只识别某个网站的验证码,这样只要测试几次得到结果后便可用于这个网站其他的验证码。 这样测试有点浪费时间,虽然是一次性的,但是你手动测出的验证码不一定是最合适的。所以我们需要算法去自动计算出验证码的阈值,算法有很多,这里我们使用迭代法和最大类间方差法,通过这两个算法计算出来的阈值基本差不多。 迭代法 求出图像中的最小灰度值和最大灰度值,分别记为Gmin和Gmax,则阈值初值T0=(Gmin+Gmax)/2; 根据阈值T0将图像分割成前景和背景两部分,求出两部分的平均灰度值m1和m2,平均灰度值=总灰度值/像素个数 求出新阈值T1=(m1+m2)/2 如果T0=T1,则结束,否则将T1的值赋予T0,从第2步重新计算。 算法实现如下: import numpy as np from PIL import

使用python实现canny算法

╄→гoц情女王★ 提交于 2020-01-13 07:08:45
1. Canny算法概述 Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法。更为重要的是 Canny 创立了边缘检测计算理论(Computational theory of edge detection)解释这项技术如何工作。 通常情况下边缘检测的目的是在保留原有图像属性的情况下,显著减少图像的数据规模。有多种算法可以进行边缘检测,虽然Canny算法年代久远,但可以说它是边缘检测的一种标准算法,而且仍在研究中广泛使用。 2.最优边缘准则 Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是: (1)最优检测:算法能够尽可能多地标识出图像中的实际边缘,漏检真实边缘的概率和误检非边缘的概率都尽可能小; (2)最优定位准则:检测到的边缘点的位置距离实际边缘点的位置最近,或者是由于噪声影响引起检测出的边缘偏离物体的真实边缘的程度最小; (3)检测点与边缘点一一对应:算子检测的边缘点与实际边缘点应该是一一对应。 为了满足这些要求 Canny 使用了变分法(calculus of variations),这是一种寻找优化特定功能的函数的方法。最优检测使用四个指数函数项表示,但是它非常近似于高斯函数的一阶导数。 2. Canny算法实现步骤 第一步:灰度化 第二步:高斯滤波 任何边缘检测算法都不可能在未经处理的原始数据上很好地工作

php使用百度API实现人脸识别

ⅰ亾dé卋堺 提交于 2020-01-11 23:46:05
1.注册百度开发者账号。 https://login.bce.baidu.com/?account= 注册登录成功后,进入控制台,在左边的导航栏找到产品-》人工智能-》人脸识别: 创建应用。创建应用成功后拿到应用的API Key和Secret Key 2.接口调用-获取access token 调用人脸识别接口前需要获取access token,示例代码: function execCurl($url, $param) { if (empty($url) || empty($param)) { return array('result' => false, 'err_msg' => 'url or param is null'); } $curl = curl_init();//初始化curl curl_setopt($curl, CURLOPT_URL, $url);//抓取指定网页 curl_setopt($curl, CURLOPT_HEADER, 0);//设置header curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_setopt($curl, CURLOPT_POST, 1);//post提交方式 curl_setopt($curl, CURLOPT_POSTFIELDS,

图像处理与分析

天大地大妈咪最大 提交于 2020-01-10 03:25:57
基本概念 图像的采样和量化 光照本身是连续的、但是转换成数字形式必然是不连续的 在坐标值(空间)上的数字化即为采样,对幅值的数字化即为量化 量化——每一像素值只能用有限位比特表示,故只能表现有限的精度 可以看作是笛卡儿积 Z 2 Z^2 Z 2 中的一对元素,映射到灰度值集合上的一个映射。 空间分辨率:如dpi每英寸点数;灰度分辨率直接用比特表示 图像插值 最简单的是最近邻方法,其次是双线性,最后是双三次 双线性:可以看作是在一个方格内拟合 f ( x , y ) = a + b x + c y + d x y f(x,y)=a+bx+cy+dxy f ( x , y ) = a + b x + c y + d x y ,比较好的特点是无论固定x还是固定y,关于另一个变量都是线性的。 像素间关系 4领域、8领域、m邻接(m邻接可以消除8邻接的二义性 连通性、区域、边界 距离的度量:非负、自反、交换、三角 常用计算 矩阵与阵列计算 灰度算术 集合和逻辑操作 空间操作(几何空间变换与图像配准 一般来说反向映射比前向映射要好,可以配合插值算法决定每个像素的输出值 把图像当作一个向量,然后乘以矩阵 图像变到某个变换域去(通常通过某个正交变换核 彩色图像 光的三原色为RGB 颜料的三原色为CMYK(青、品红、黄、黑 HSI 色调、饱和度、强度 图像增强 灰度变换 略 直方图处理 直方图

特征检测

孤街醉人 提交于 2020-01-09 23:03:59
计算机视觉课堂笔记 : 包括边缘检测和特征点检测两个部分 边缘检测部分 what--边缘的定义 why--提取边缘的意义 how--提取边缘的方法 what 边缘是图像中亮度突然变化的区域; 图像灰度构成的曲面上的陡峭区域; 像素灰度存在阶跃变化或屋脊状变化的像素的集合。 分类:有梯状,脊状,条状 why 边缘可以表达物体的特征; 边缘特征对于图像的变化(几何变化,灰度变化,光照方向变化)不敏感; 可以为检测物体提供有用信息; 是对图像进行预处理的过程。 how 1.使用微分滤波器 在一阶中叫梯度算子(prewitt,sobel),二阶微分滤波器叫做LoG算子,LoG=高斯平滑+拉普拉斯二阶微分,相当于先将高斯算子进行求取二阶导数再与图像进行卷积。 补充:关于卷积的一个定理,卷积的偏导数等于偏导数的卷积,即 。 ***2.canny算子 参考:J.Canny, "A Computational Approach to Edge Detection",IEEE Trans. on PAMI, 8(6),1986. 算法主要步骤: 梯度计算==》非极大值抑制==》双阈值提取边缘点 2.1梯度计算: 先做高斯平滑 分别对x,y两个方向求取一阶微分 最后求取幅值和相位角 2.2非极大值抑制 对梯度幅值图像M ,仅保留梯度方向上的极大值点。 解释:对M中的每个点进行逐一排查

自适应阈值化-adaptiveThreshold-0

£可爱£侵袭症+ 提交于 2020-01-09 21:50:18
函数 void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C) InputArray src:源图像 OutputArray dst:输出图像,与源图像大小一致 int adaptiveMethod:在一个邻域内计算阈值所采用的算法,有两个取值,分别为 ADAPTIVE_THRESH_MEAN_C 和 ADAPTIVE_THRESH_GAUSSIAN_C 。 ADAPTIVE_THRESH_MEAN_C的计算方法是计算出领域的平均值再减去第七个参数double C的值 ADAPTIVE_THRESH_GAUSSIAN_C的计算方法是计算出领域的高斯均值再减去第七个参数double C的值 int thresholdType:这是阈值类型,只有两个取值,分别为 THRESH_BINARY 和THRESH_BINARY_INV 具体的请看官方的说明,这里不多做解释 int blockSize:adaptiveThreshold的计算单位是像素的邻域块,邻域块取多大,就由这个值作决定 double C:在对参数int adaptiveMethod的说明中

position 属性指定了元素的定位类型

不羁的心 提交于 2020-01-03 18:57:03
position 属性指定了元素的定位类型。 position 属性的五个值: static (静态定位) HTML元素的默认值,即没有定位,元素出现在正常的流中。 静态定位的元素不会受到 top, bottom, left, right影响。 relative (相对定位)相对定位元素的定位是相对其正常位置,移动相对定位元素,但它原本所占的空间不会改变 fixed (绝对定位) 元素的位置相对于浏览器窗口是固定位置。 即使窗口是滚动的它也不会移动 absolute (固定定位)绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html> sticky (粘性定位) position: sticky; 基于用户的滚动位置来定位。 粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。 它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed; ,它会固定在目标位置。 元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。 这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效

【机器学习】(五)神经网络

点点圈 提交于 2020-01-03 09:15:24
神经元模型 神经网络 (neural networks)定义为:神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。 神经网络中最基本的成分是 神经元 (neuron)模型,其中最典型的是“M-P神经元模型”,其由多个输入信号,神经元模型通过将输入信号在加权求和,然后与该神经元阈值比较,通过 激活函数 (activation function)处理后产生结果输出。 理想的激活函数为阶跃函数,但是为避免其不连续不光滑的性质,常用Sigmoid函数代替作为激活函数,由于其将输入值挤压到了(0,1)的输出范围,因此也称 挤压函数 (squashing function) 把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络 感知机与多层网络 感知机 (Perceptron)由两层神经元组成,输入层接收外界输入信号后传递给输出层,输岀层是M-P神经元,亦称阈值 逻辑单元 (threshold logic unit) 感知机能够很简单的实现逻辑与、或、非运算 通过训练集可以对感知机进行训练,训练的过程即对阈值参数、权重参数进行调整的过程,其中η称 学习率 (learning rate) 感知机只拥有单层 功能神经元 (functional neuron),只能解决 线性可分 (linearly separable