自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 数字图像处理_轮廓特征

【代码】数字图像处理_轮廓特征。

2023-09-27 09:57:12 101

原创 数字图像处理_几何图形的绘制

预备知识:PNG四通道图像,透明度。

2023-09-27 09:56:57 122

原创 数字图像处理_图像金字塔

下采样:图像长、宽变为原来 1/2.上采样:图像长、宽扩大为原来2倍。

2023-09-27 09:56:41 97

原创 数字图像处理_形态学

总体介绍腐蚀

2023-09-27 09:56:25 56

原创 数字图像处理_阈值分割

可以将图像分为目标和背景。其中背景点数占图像比例为。算法描述:根据图像灰度直方图,人工寻找阈值。整幅图像的平均灰度值为常数,跟阈值无关,且为。算法思想:几何法,适用单峰图像。而目标点数占图像比例为。算法特点:适用双峰图像。遍历灰度值,找出能使。

2023-09-27 09:56:13 22

原创 数字图像处理_图像边缘提取

【代码】数字图像处理_图像边缘提取。

2023-09-27 09:55:58 92

原创 数字图像处理_图像模糊

【代码】数字图像处理_图像模糊。

2023-09-27 09:55:42 80

原创 数字图像处理_图像的几何变换

【代码】数字图像处理_图像的几何变换。

2023-09-27 09:55:25 18

原创 数字图像处理_数字图像的基本知识

逐像素运算就是对图像中的每一个像素点的亮度值,通过一定的函数关系,转换到新的亮度值。其中r为原来的像素值,s为新的像素值。这个转换可以由函数表示:s=f®。3个灰度图 融合成 彩色图。

2023-09-27 09:55:11 49

原创 数字图像处理_python中图像处理的库

【代码】数字图像处理_python中图像处理的库。

2023-09-27 09:54:56 24

原创 opencv_RoboMaster激活大能量机关

【代码】opencv_RoboMaster激活大能量机关。

2023-09-27 09:54:40 139

原创 opencv_光流估计

OpenCV中提供了光流估计的接口,包括稀疏光流估计算法cv2.calcOpticalFlowPyrLK(),和稠密光流估计cv2.calcOpticalFlowFarneback()。光流,顾名思义,光的流动。比如人眼感受到的夜空中划过的流星。在计算机视觉中,定义图像中对象的移动,这个移动可以是相机移动或者物体移动引起的。具体是指,视频图像的一帧中的代表同一对象(物体)像素点移动到下一帧的移动量,使用二维向量表示.根据是否选取图像稀疏点进行光流估计,可以将光流估计分为稀疏光流和稠密光流。

2023-09-27 09:54:22 117

原创 opencv_答题卡识别判卷

np.diff() 沿着指定轴计算第N维的离散差值。

2023-09-27 09:53:54 178

原创 opencv_文档ocr扫描

【代码】opencv_文档ocr扫描。

2023-09-27 09:53:36 25

原创 opencv_目标追踪

BOOSTING Tracker:和Haar cascades(AdaBoost)背后所用的机器学习算法相同,但是距其诞生已有十多年了。当运动是可预测的并且没有遮挡时,效果非常好,但是对于快速跳动或快速移动的物体,模型会失效。GOTURN Tracker:这是OpenCV中唯一一深度学习为基础的目标检测器。MOSSE Tracker:速度真心快,但是不如CSRT和KCF的准确率那么高,如果追求速度选它准没错。KCF Tracker:比BOOSTING和MIL都快,但是在有遮挡的情况下表现不佳。

2023-09-27 09:53:21 26

原创 opencv_人脸检测和车牌识别

参数3:scaleFactor–表示在前后两次相继的扫描中,图像被缩放的比例,1.1即每次缩放10% 用于检测。: 在人脸检测的基础上,保存收集到的人脸信息,将输入人脸与保存的信息进行比对,得到该人脸具体是哪个人。弱分类器:分类器的正确率高于随机分类(50%),强分类器:能满足预期分类并且正确率很高的分类器.: 迭代算法,同一个训练集合下训练多个弱分类器,把弱分类器迭代组合成一个强分类器.: 将多个同类型的分类器联合起来进行推算整合,以得到符合目标的最终分类器的方法.1.大量样本集合,特征值的提取。

2023-09-26 11:32:02 119

原创 opencv_图像分割与修复

我们绘制灰度图像的梯度图, 可以得到近似下图的梯度走势.梯度低的地方我们可以认为是低洼区或者山谷, 梯度高的地方可以认为是山峰. 我们往山谷中注水, 为了防止山谷中的水溢出汇合我们可以在汇合的地方筑起堤坝, 可将堤坝看做是对图像分割后形成的边界. 这就是分水岭算法的基本原理.在处理结束之后,mask中会保存结果。它以图像上任一点p为圆心, 半径为sp, 色彩幅值为sr进行不断迭代.经过迭代,将收敛点的像素值代替原来的像素值,从而去除了局部相似的纹理,同时保留了边缘等差异较大的特征。

2023-09-26 11:29:17 68

原创 强化学习_DPPO算法实现Pendulum-v1

但这时候,A并不会立即停止,通常 A 是一个多次的循环,这时候 A 会重新开始,并执行到A_event.wait()的位置,由于这时候,信号为 False。我们把 A_event 的信号设置为 True, B_event 信号设置为 False : A_event.set(),nBevent.clear(), 这样,当进程start之后,A进程运行会继续,B进程会在 B_event.wait()被阻塞,等待A进程运行。worker,在全局网络的〝指导”下,和环境互动,并且把数据保存起来提供给全局网络学习。

2023-09-26 11:21:25 422

原创 强化学习_PPO算法实现Pendulum-v1

也就是说,我们产生数据的策略,和要更新的目标策略不是同一个策略。也可以是我们先假定策略分布函数服从一个特殊的分布,比如正太分布,我们的神经网络可以直接输出 mu 和sigma, 就能获得整个策略的概率密度函数了。答案是不行,但大家可以从如上图看到,如果用行动策略 B[0.1,0.9]产出的数据,对目标策略P进行更新,动作1会被更新 1次,而动作2会更新9次。PPO 应用了 importance sampling,使得我们用行为策略获取的数据,能够更新目标策略,把 AC 从在线策略,变成离线策略。

2023-09-26 11:17:38 542

原创 强化学习_DDPG算法实现Pendulum-v1

其实这里特别好理解,critic像一个老师,actor像一个学生,老师给打分的方式要固定一些,学生才知道该学什么和怎么学才能得到更高分,反过来说,老师如果打分方式总变,那么学生就会很迷茫,学的时候就会各种策略去试,心态也会不好,学起来不稳定,这里对应就是 actor 收敛慢,参数更新来回震荡。以这个值作为更新的目标。这里给actor 目标网络输出的action 增加noise,是为了给后面增加难度,如果能在有输入干扰的情况下,也能给出正确的分值,那么我们的critic 就有更好的 泛化能力。

2023-09-26 11:10:56 352

原创 强化学习_A3C算法实现Pendulum-v1

正如我们之前说到,这个“力” 并不是开关,是有大小之别,因此,这是一个连续型控制的问题。我们的任务就调整输入的“力”的大小,让杆子一直树立起来。全局网络 并不直接参加和环境的互动,工人与环境 有直接的互动,并把学习到的东西,汇报给全局网络。互动后,再把梯度提交,获取新的参数…图中的杆围绕A 点转动,我们的任务是,让智能体学会给杆子施加一定的“力”,让杆子立起来。需要强调的是,worker 向全局网络汇总的是梯度,而不是自己探索出来的数据。这里的“力” 用了带箭头的圆环表示,圆环越大,表示用的“力”越大。

2023-09-26 11:07:11 1016

原创 强化学习_Actor Critic算法实现CartPole-v0

Actor通过Critic 给出的分数,去学习:如果 Critic 给的分数高,那么 Actor 会调整这个动作的输出概率;这使得 PG方法 的效率被限制。这里Q值定义正好就是action 之后获得的奖励期望有多大,Baseline是Q的求平均,也就是Q的期望,那么Q的期望正好是V。再进一步,reward 会向前传播,让智能体濒死状态之前状态时,不选择会进入濒死状态的动作,努力避免进入濒死状态。所以我们希望用 TD 代替 MC,可以不用回湖,每一步立马估算出来G值,可以把 AC 理解成PG的TD版本。

2023-09-26 11:02:24 162

原创 强化学习_PG算法实现CartPole-v1

environment 环境也具有随机性,采取同样的 action,每次看到的 observation 也会不一样。传统的做法是使用 Q_table 查表的方式或 Q网络 通过 critic 评判来反过来选择 action,这里 PG 是直接使用 actor 输出各动作的概率值。所以我们要去最大化的不是某一次的 R,而是最大化 它的期望值。每坚持一帧,智能体能获得 1 reward,如果能获得 200reward, 那么游戏结束。Cart Pole 的状态是连续型的状态,所以我们可以用几个状态特征来表示。

2023-09-26 10:53:03 621

原创 强化学习_DQN算法的改进

如果原来有 3个action,那么就有 3个输出,改成每个action 有 5 个输出,总共 15 个输出,而且每个action 对应的 bins 值加和为 1,这样可以得到不同的action 分布,来求方差,或许就能避免风险。Dueling DQN: 在网络更新的时候,由于有A 值之和必须为 0 的限制,所以网络会优先更新S 值。S值是 Q值的平均数,S值的调整相当于一次性 把 state 下的所有 Q 值都更新了一遍。A 值是有所限制的,A 值的平均数为0。S 值与 A 值的和,就是原来的Q值。

2023-09-26 10:41:28 131

原创 强化学习_DoubleDQN算法实现Pendulum-v1

如果只有一个 Q网络,往往会夸大 Q值。那就用两个 Q 网络,因为两个Q网络的参数有差别,所以对于同一个动作的评估也会有少许不同。我们选取评估出来较小的值来计算目标。这样就能避免 Q 网络夸大 Q值的情况发生了。DQN 有一个显著的问题,就是 DQN 估计的 Q值往往会偏大。

2023-09-26 10:31:21 89

原创 强化学习_DQN算法

在Q-learning 中,我们有一个Qtable,记录着在每一个状态下,各个动作的Q值。训练之后我们继续进行游戏,继续把新产生的数据添加到回放缓存里,每次都随机抽出一个 batch 大小的数据训练智能体,这样,以前产生的数据同样也能用来训练数据。另外一个叫 targetQ 网络,targetQ 自己并不会更新,也就是它在更新的过程中是固定的,用于计算更新目标。我们把(每一步的S,选择的a,进入新的状态s’,获得的奖励r,新状态是否为终止状态)作为一条条数据。一个是原来的Q 网络,用于估算 Q(S);

2023-09-26 10:27:22 118

原创 强化学习_Q-Learning算法

既然我们的目标是选取最大收益,所以,我们肯定会选择一个能够获得最大 Q值的动作。Qlearning 公式 和 SARSA 相比,就差那么一个max。所以,我们应该用所有动作的Q值的最大值替代 V(St+1)

2023-09-26 10:23:12 9

原创 强化学习_SARSA算法

【代码】SARSA算法。

2023-09-26 10:20:10 16

原创 强化学习_估计状态V值

V值等于所有G值的平均,为了方便,我们对平均进行一些优化。时序差分(temporal-difference)方法又称TD 方法。新平均 = 旧平均 + 步长 *(新加入元素-旧平均)TD 算法对 蒙地卡罗(MC) 进行了改进。

2023-09-26 10:16:30 55

原创 强化学习_基本概念

比如state/observation 一样,agent 对于 action 的选择也可能不同,这种不同动作之间的选择,我们称为智能体的策略。第二个不确定性,是环境的随机性,这是智能体无法控制的,比如 action 一样但反馈回来新的 state/observation 或reward 也可能有所不同。因为智能体的目标是获取尽可能多的奖动,所以智能体在当前状态,只需要选择价值高的动作就可以了。只不过V值衡量的是状态节点的价值,而 Q 值衡量的是动作节点的价值。我们称我们能做的动作的集合,称为动作空间。

2023-09-26 10:14:09 118

原创 opencv_信用卡数字匹配

总体思路就是取出信用卡中每一个数字作为去和模板中的10个数字进行模板匹配操作.先对模板处理, 获取每个数字的模板及其对应的数字标识.再对信用卡处理, 通过一系列预处理操作, 取出信用卡数字区域.然后再取出每一个数字去和模板中的10个数字进行匹配.

2023-09-20 10:05:40 53

原创 opencv_模板匹配和Ostu算法

模板匹配和卷积原理很像,模板在原图像上从原点开始滑动,计算模板与(图像被模板覆盖的地方)的差别程度,这个差别程度的计算方法在opencv里有6种,然后将每次计算的结果放入一个矩阵里,作为结果输出。假如原图形是AxB大小,而模板是axb大小,则输出结果的矩阵是(A-a+1)x(B-b+1)matchTemplate(image, templ, method[, result[, mask]]) 进行模板匹配。当阈值范围无法人工确定时, 可以使用Otsu的方法通过计算确定阈值.

2023-09-20 10:05:24 30

原创 opencv_虚拟计算器

【代码】opencv_虚拟计算器。

2023-09-20 10:05:04 51 1

原创 opencv_图像查找和图像拼接

若srcPoints和dstPoints是以像素为单位的,则该参数通常设置在1到10的范围内。请注意,输入掩码矩阵是不需要设置的。:可以简单的理解为它用来描述物体在世界坐标系和像素坐标系之间的位置映射关系。基本的原理是通过特征匹配得到匹配结果, 作为输入, 得到单应性矩阵, 再经过透视变换就能够找到最终的图像。dstPoints: 目标平面中点的坐标矩阵,可以是CV_32FC2类型,也可以是vector。srcPoints: 源平面中点的坐标矩阵,可以是CV_32FC2类型,也可以是vector。

2023-09-20 10:04:43 214

原创 opencv_特征检测和匹配

特征匹配记录下目标图像与待匹配图像的特征点(KeyPoint),并根据特征点集合(即特征描述子)构造特征量(descriptor),对这个特征量进行比较、筛选,最终得到一个匹配点的映射集合。关键点描述子: 记录了关键点周围对其有共享的像素点的一组向量值, 其不受仿射变换, 光照变换等影响.描述子的作用就是进行特征匹配, 在后面进行特征匹配的时候会用上.图像特征就是值有意义的图像区域, 具有独特性, 易于识别性, 比较角点, 斑点以及高密度区.我们获取到图像特征点和描述子之后, 可以将两幅图像进行特征匹配.

2023-09-20 10:04:26 100

原创 opencv_车辆统计项目

背景减除算法(Background Subtraction)通过这一方法我们能够从视频中分离出运动的物体(前景),去除静止物体(背景)从而达到目标检测的目的。知识补充 – 背景减除。

2023-09-20 10:04:07 106

原创 opencv_图像直方图

直方图均衡化是通过拉伸像素强度的分布范围,使得在0~255灰阶上的分布更加均衡,提高了图像的对比度,达到改善图像主观视觉效果的目的。对比度较低的图像适合使用直方图均衡化方法来增强图像细节。横坐标的左侧为纯黑、较暗的区域,而右侧为较亮、纯白的区域。因此,一张较暗图片的图像直方图中的数据多集中于左侧和中间部分,而整体明亮、只有少量阴影的图像则相反。range :统计灰度值的范围, 一般为[0, 255]横坐标: 图像中各个像素点的灰度级。histSize: BINS的数量。:需要统计的特征的数目。

2023-09-20 10:03:50 16

原创 opencv_图像金字塔

金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。常见两类图像金字塔高斯金字塔 ( Gaussian pyramid): 用来向下/降采样,主要的图像金字塔拉普拉斯金字塔(Laplacian pyramid): 用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。

2023-09-20 10:03:31 6

原创 opencv_图像轮廓

图像轮廓是具有相同颜色或灰度的连续点的曲线.为了检测的准确性,需要先对图像进行二值化或Canny操作。画轮廓时会修改输入的图像, 如果之后想继续使用原始图像,应该将原始图像储存到其他变量中。

2023-09-20 10:03:13 10

原创 opencv_形态学

什么是形态学指一系列处理图像形状特征的图像处理技术膨胀和腐蚀开运算闭运算顶帽黑帽。

2023-09-20 10:02:51 16

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除