
白话机器学习
文章平均质量分 84
在信息化、数字化、智能化飞速发展的今天,人工智能已经成为未来最炙手可热的前沿技术。机器学习作为人工智能的核心其价值不言而喻。本专栏将会通过最浅显易懂的语言,从零开始系统、详细的讲解机器学习的技术细节,为大家提供一个了解、学习机器学习的平台和参考。
白话机器学习
10年IT从业经验,人工智能高级算法工程师、优快云博客专家、阿里云专家、《2023博客之星马龄赛道11-15年》第一名、《2023博客之星,城市赛道》长春TOP1,优快云付费资源项目实践专家
展开
-
基于机器学习的水电站入库流量预测(工业大数据竞赛)
基于机器学习的水电站入库流量预测分析原创 2024-06-23 16:45:26 · 266 阅读 · 0 评论 -
机器学习全过程实战(一)——数据采集与爬取
爬虫:批量化自动化从特定网页获取数据的脚本程序。原创 2024-06-23 16:41:56 · 284 阅读 · 0 评论 -
Python 离群点检测算法 -- LOF详解
我们可以采取更保守的方法,选择一个较高的阈值,这样离群值组中的离群值会更少,但期望更准确。局部邻域中数据点的密度是关键,而 LOF 将不同密度的局部邻域纳入了识别局部离群值的考虑范围。例如,在图(A)中,蓝色或绿色聚类中数据点的 LOF 值都接近 1,尽管这两个聚类的密度不同。一般来说,当 LOF> 1 时,被视为离群点,即数据点与邻居的距离比预期的要远。如果O点不是离群点,则邻近点的平均 LRD 与 O 点的 LRD 大致相等,此时 LOF 几乎等于 1。该数据点与相邻数据点的距离比预期的要远。原创 2024-05-03 22:39:27 · 192 阅读 · 0 评论 -
使用汉普尔过滤器(Hampel Filter)算法进行时间序列的异常点检测
在我的例子中,我会把个异常值画成红点,还会个灰色带,代表算法在每个点使用的阈值。现在,生成合成数据,在其中的 20、40、60、80 位置引入四个离群值(当然,在实际情况中问题不会这么简单,但这是一个很好的例子,可以了解 hampel 如何工作 )。它与上一节讨论的阈值概念有关,即通过调整该参数,我们可以对可能的异常值有或多或少的容忍度。例如,如果我们现在打印 filtered_data ,我们就会得到一个经过清理的 original_data 版本,即没有异常值的版本。原创 2024-02-19 16:17:49 · 620 阅读 · 0 评论 -
10大机器学习算法优缺点对比分析
提升方法是从弱学习算法出发,反复学习,得到一系列的弱分类器(即基本分类器),然后组合这些弱分类器,构成一个强分类器,大多数的提升方法都是改变训练数据集的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列的弱分类器。XGBoosting采用预排序,在迭代之前,对结点的特征做预排序,遍历选择最优分割点,数据量大时,贪心法耗时,LightGBM方法采用histogram算法,占用的内存低,数据分割的复杂度更低。3)在选择核函数时,如果线性拟合不好,一般推荐使用默认的高斯核’rbf’。原创 2024-02-15 09:24:17 · 358 阅读 · 6 评论 -
到底什么是贝叶斯,这一篇就够了!
前言这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子。更严格的公式和计算我会在相应的地方注明参考资料。贝叶斯方法被证明是非常 general 且强大的推理框架,文中你会看到很多有趣的应用。历史托马斯·贝叶斯(Thomas Bayes)同学的详细生平在这里。以下摘一段 wikipedia 上的简介:所谓的贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子原创 2024-02-15 09:22:06 · 200 阅读 · 1 评论 -
26款神经网络可视化工具超全汇总,有趣且有用,建议收藏
Netron支持ONNX、TensorFlow Lite、Core ML、Keras、Caffe、Darknet、MXNet、PaddlePaddle、ncnn、MNN和TensorFlow.js。地址:https://github.com/stared/keras-sequential-ascii/地址:https://keras.io/api/utils/model_plotting_utils/地址:https://conx.readthedocs.io/en/latest/index.html。原创 2024-01-13 10:48:52 · 595 阅读 · 0 评论 -
23个机器学习最佳入门项目(附源代码,建议收藏)
这是最受欢迎的机器学习项目之一。项目构想:客户细分是一种根据客户的购买历史,性别,年龄,兴趣等对客户进行细分的技术。对于这个初学者的项目,我们将使用泰坦尼克号数据集,其中包含幸存者和在泰坦尼克号飞船中死亡的人的真实数据。项目构想:Myers Briggs类型指示器是一种个性类型系统,根据内向,直觉,思维和感知能力将一个人分为16个不同的个性。项目构想:该ML项目背后的构想是建立一个模型,该模型将对用户可以贷款多少进行分类。项目构想:协作过滤是一项很棒的技术,可根据相似用户的反应来过滤出用户可能喜欢的项目。原创 2024-01-11 22:39:35 · 334 阅读 · 0 评论 -
一些时间序列的预处理方法的总结,适合收藏
在所有提到的问题中,处理缺失值是最困难的一个,因为传统的插补(一种通过替换缺失值来保留大部分信息来处理缺失数据的技术)方法在处理时间序列数据时不适用。另外在大多数情况下,日期时间列具有默认的字符串数据类型,在对其应用任何操作之前,必须先将数据时间列转换为日期时间数据类型。取整个序列的均值和标准差是不可取的,因为在这种情况下,边界将是静态的。在这种方法中,上限和下限是根据特定的统计量度创建的,例如均值和标准差、Z 和 T 分数以及分布的百分位数。时间序列是在特定时间间隔内记录的一系列均匀分布的观测值。原创 2024-01-02 16:11:11 · 948 阅读 · 5 评论 -
一文彻底搞懂什么是神经网络中的卷积核
在一个维度为 H x W x D 的输入层上经过大小为 1 x 1 x D 的filters的 1 x 1 卷积,输出通道的维度为 H x W x 1。卷积核大小:卷积核定义了卷积的大小范围,在网络中代表感受野的大小,二维卷积核最常见的就是 3*3 的卷积核。一般情况下,卷积核越大,感受野越大,看到的图片信息越多,所获得的全局特征越好。在卷积神经网络里,卷积核其实就是一个过滤器,但在深度学习里,它不做反转,而是直接执行逐元素的乘法和加法,我们把这个又称为互相关,在深度学习里称为卷积。原创 2024-01-02 15:56:40 · 2406 阅读 · 0 评论 -
万字详解18 种传统统计学中的经典数据分析方法,适合收藏
描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中趋势分析和离中趋势分析和相关分析三大部分。集中趋势分析:集中趋势分析主要靠平均数、中数、众数等统计指标来表示数据的集中趋势。例如被试的平均成绩多少?是正偏分布还是负偏分布?离中趋势分析:离中趋势分析主要靠全距、四分差、平均差、方差(协方差:用来度量两个随机变量关系的统计量)、标准差等统计指标来研究数据的离中趋势。例如,我们想知道两个教学班的语文成绩中,哪个班级内的成绩分原创 2024-01-01 20:23:43 · 1486 阅读 · 0 评论 -
10大机器学习算法优缺点详解,适合初学者快速掌握机器学习的基本框架
提升方法是从弱学习算法出发,反复学习,得到一系列的弱分类器(即基本分类器),然后组合这些弱分类器,构成一个强分类器,大多数的提升方法都是改变训练数据集的概率分布(训练数据的权值分布),针对不同的训练数据分布调用弱学习算法学习一系列的弱分类器。XGBoosting采用预排序,在迭代之前,对结点的特征做预排序,遍历选择最优分割点,数据量大时,贪心法耗时,LightGBM方法采用histogram算法,占用的内存低,数据分割的复杂度更低。3)在选择核函数时,如果线性拟合不好,一般推荐使用默认的高斯核’rbf’。原创 2024-01-01 20:18:50 · 1068 阅读 · 0 评论 -
详解机器学习的70个基础知识点,面试、扫盲,这一篇就够了
因为在训练模型的时候,参数全是根据现有训练集里的数据进行修正、拟合,有可能会出现过拟合的情况,即这个参数仅对训练集里的数据拟合比较准确,这个时候再有一个数据需要利用模型预测结果,准确率可能就会很差。数据集扩增:即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。从一个比较高的角度来认识AUC:仍然以异常用户的识别为例,高的AUC值意味着,模型在能够尽可能多地识别异常用户的情况下,仍然对正常用户有着一个较低的误判率(不会因为为了识别异常用户,而将大量的正常用户给误判为异常。原创 2023-12-31 21:34:09 · 544 阅读 · 4 评论 -
关于Transformer模型的简要概述及应用源码样例,适合初学者扫盲
1、 自注意力机制(Self-Attention Mechanism):Transformer模型的核心是自注意力机制,它允许模型关注输入序列中的任意位置,计算位置间的相关性。具体来说,通过使用query、key和value来描述输入序列中的不同位置之间的关系,计算出每个位置的权重,从而得到每个位置的加权和作为输出。例如,Conformer和Swin Transformer等模型将Transformer与传统的循环神经网络或卷积神经网络相结合,提高了语音识别的准确率。原创 2023-12-29 15:39:25 · 1255 阅读 · 6 评论 -
强化学习科普介绍,适合扫盲(含基本原理及小案例源码-使用Q-learning算法来学习解决一个简单的网格世界问题)
强化学习基于“奖励/惩罚”机制,智能体在与环境交互过程中,通过不断尝试不同的行为,根据环境反馈的奖励或惩罚信息,学习选择能获得最大累积奖励的行为。在每个状态下,智能体根据当前策略选择一个行为,并接收到来自环境的新的状态和奖励信息作为反馈。智能体的目标是最大化长期的累积奖励。在强化学习中,智能体通过接收环境的反馈来更新其策略(policy),以最大化长期的累积奖励。其中,在机器人控制领域的应用最为显著,如波士顿动力公司的Atlas机器人、本田公司的ASIMO机器人等都使用了强化学习算法进行控制。原创 2023-12-28 10:57:39 · 716 阅读 · 4 评论 -
PyTorch快速入门——卷积神经网络学习(基本组成结构及经典模型介绍)
卷积神经网络由一个或多个卷积层和顶端的全连通层(也可以使用1x1的卷积层作为最终的输出)组成一种前馈神经网络。一般的认为,卷积神经网络是由Yann LeCun大神在1989年提出的LeNet中首先被使用,但是由于当时的计算能力不够,并没有得到广泛的应用,到了1998年Yann LeCun及其合作者构建了更加完备的卷积神经网络LeNet-5并在手写数字的识别问题中取得成功,LeNet-5的成功使卷积神经网络的应用得到关注。原创 2023-11-16 08:45:55 · 457 阅读 · 6 评论 -
PyTorch快速入门——神经网络简介(激活函数、前向传播、反向传播)
在生物神经网络中,每个神经元与其他神经元相连,当它兴奋时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个阈值,那么它就会激活,即兴奋起来并向其他神经元发送化学物质。在深度学习中也借鉴了这样的结构,每一个神经元(上面说到的简单单元)接受输入x,通过带权重w的连接进行传递,将总输入信号与神经元的阈值进行比较,最后通过激活函数处理确定是否激活,并将激活后的计算结果y输出,而我们所说的训练,所训练的就是这里面的权重w。原创 2023-11-15 15:50:31 · 162 阅读 · 0 评论 -
PyTorch快速入门——数据的加载和预处理
PyTorch通过torch.utils.data对一般常用的数据加载进行了封装,可以很容易地实现多线程数据预读和批量加载。并且torchvision已经预先实现了常用图像数据集,包括前面使用过的CIFAR-10,ImageNet、COCO、MNIST、LSUN等数据集,可通过torchvision.datasets方便的调用。原创 2023-11-12 20:42:56 · 405 阅读 · 10 评论 -
Pytorch快速入门——Pytroch基础张量
张量的英文是Tensor,它是PyTorch里面基础的运算单位,与Numpy的ndarray相同都表示的是一个多维的矩阵。与ndarray的最大区别就是,PyTorch的Tensor可以在 GPU 上运行,而 numpy 的 ndarray 只能在 CPU 上运行,在GPU上运行大大加快了运算速度。原创 2023-11-12 20:41:32 · 117 阅读 · 0 评论 -
Pytorch快速入门——数据并行(第6天)
DataParallel会自动的划分数据,并将作业发送到多个GPU上的多个模型。并在每个模型完成作业后,收集合并结果并返回。原创 2023-11-12 20:37:40 · 91 阅读 · 0 评论 -
Pytorch快速入门——训练一个分类器(第5天)
上一讲中已经看到如何去定义一个神经网络,计算损失值和更新网络的权重。你现在可能在想下一步。原创 2023-11-12 20:36:06 · 106 阅读 · 0 评论 -
Pytorch快速入门——Pytroch构建神经网络(第4天)
kernelreturn xprint(net)Net(在模型中必须要定义forward函数,backward函数(用来计算梯度)会被autograd自动创建。可以在forward函数中使用任何针对 Tensor 的操作。返回可被学习的参数(权重)列表和值10测试随机输入32×32。注:这个网络(LeNet)期望的输入大小是32×32,如果使用MNIST数据集来训练这个网络,请把图片大小重新调整到32×32。print(out)原创 2023-11-11 21:00:42 · 225 阅读 · 0 评论 -
Pytorch快速入门——Pytroch自动求导机制(第3天)
PyTorch 中所有神经网络的核心是autograd包。我们先简单介绍一下这个包,然后训练第一个简单的神经网络。autograd包为张量上的所有操作提供了自动求导。它是一个在运行时定义的框架,这意味着反向传播是根据你的代码来确定如何运行,并且每次迭代可以是不同的。示例。原创 2023-11-11 20:54:11 · 113 阅读 · 0 评论 -
Pytorch快速入门——Tensors(张量)学习(第2天)
这些方法将重用输入张量的属性,例如, dtype,除非设置新的值进行覆盖。``torch.Size`` 返回值是 tuple类型, 所以它支持tuple类型的所有操作.例如: ``x.copy_(y)``, ``x.t_()``, 都会改变 ``x``.Torch Tensor与NumPy数组共享底层内存地址,修改一个会导致另一个的变化。将一个Torch Tensor转换为NumPy数组是一件轻松的事,反之亦然。任何 以``_`` 结尾的操作都会用结果替换原变量.观察numpy数组的值是如何改变的。原创 2023-11-11 20:46:28 · 88 阅读 · 0 评论 -
Pytorch快速入门——Pytroch简介及开发环境搭建(第1天)
3PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebook的人工智能研究小组开发。Uber的"Pyro"也是使用的这个库。4具有强大的GPU加速的张量计算(如NumPy)包含自动求导系统的的深度神经网络PyTorch算是相当简洁优雅且高效快速的框架设计追求最少的封装,尽量避免重复造轮子算是所有的框架中面向对象设计的最优雅的一个,设计最符合人们的思维,它让用户尽可能地专注于实现自己的想法。原创 2023-11-11 20:33:27 · 158 阅读 · 0 评论 -
OpenCV基础教程——OpenCV中的K-最邻近
我们可以把所有的这些对象看成是一个城镇中房子,而所有的房子分别属于蓝色和红色家族,而这个城镇就是所谓的特征空间。然后我们根据两个家族的权重和来判断新房子的归属,谁的权重大就属于谁。一个方法就是查看他最近的邻居属于那个家族,从图像中我们知道最近的是红色三角家族。下面就是 kNN 算法分类器的初始化,我们要传入一个训练数据集,以及与训练数据对应的分类来训练 kNN 分类器(构建搜索树)。你可能会得到一个与上面类似的图形,但不会完全一样,因为你使用了随机数产生器,每次你运行代码都会得到不同的结果。原创 2023-11-06 09:22:36 · 798 阅读 · 4 评论 -
OpenCV基础教程——姿态估计、渲染立方体、对极几何
简单来说,我们在图像平面上找到了与 3D 空间中的点(3,0,0),(0,3,0),(0,0,3) 相对应的点。有了这些信息我们就可以估计图像中图案的姿态,或物体在空间中的位置,比如目标对象是如何摆放,如何旋转等。所以,如果我们知道对象在空间中的姿态,我们就可以在图像中绘制一些 2D 的线条来产生 3D 的效果。然后与前面的情况一样,我们创建终止标准,对象点(棋盘中的角点的3D点)和轴点。如果我们仅使用左侧相机,则无法找到与图像中的点x对应的3D点,因为线OX上的每个点都投影到图像平面上的相同点。原创 2023-11-06 09:16:38 · 242 阅读 · 0 评论 -
OpenCV基础教程——摄像机标定
现在为了求 X,Y 的值,我们只需要传入这些点(0,0),(1,0),(2,0)…在这个例子中,我们的结果的单位就是棋盘(单个)方块的大小。但是如果我们知道单个方块的大小(加入说 30mm),我们输入的值就可以是(0,0),(30,0),(60,0)…(在本例中我们不知道方块的大小,因为不是我们拍的,所以只能用前一种方法了)。重要的是在进行摄像机标定时我们要输入一组 3D 真实世界中的点以及与它们对应 2D 图像中的点。在读取下一帧图像之前要设置一定的间隔,这样我们就有足够的时间调整棋盘的方向。原创 2023-11-06 09:08:24 · 150 阅读 · 0 评论 -
OpenCV基础教程——视频分析(背景消除)
在 x,y 平面上一个像素就是一个像素没有分布,但是我们现在讲的背景建模是基于时间序列的,因此每一个像素点所在的位置在整个时间序列中就会有很多值,从而构成一个分布。如果你有一张背景(仅有背景不含前景)图像,比如没有顾客的房间,没有交通工具的道路等,那就好办了。但是在大多数情况下,我们没有这样的(背景)图像,所以我们需要从我们有的图像中提取背景。真是一件很复杂的事情。这是一种自适应的估计,新观察到的对象比旧的对象具有更高的权重,从而对光照变化产生适应。技术上来说,我们需要从静止的背景中提取移动的前景。原创 2023-11-06 09:06:42 · 114 阅读 · 0 评论 -
OpenCV基础教程——视频分析(光流)
函数将返回带有状态数的点,如果状态数是 1,那说明在下一帧图像中找到了这个点(上一帧中角点),如果状态数是 0,就说明没有在下一帧图像中找到这个点。从使用者的角度来看,想法很简单,我们取跟踪一些点,然后我们就会获得这些点的光流向量。我们可以使用图像金字塔的顶层,此时小的运动被移除,大的运动装换成了小的运动,现在再使用 Lucas-Kanade算法,我们就会得到尺度空间上的光流。Lucas-Kanade 法是计算一些特征点的光流(我们上面的例子使用的是Shi-Tomasi 算法检测到的角点)。原创 2023-11-06 09:05:50 · 164 阅读 · 1 评论 -
OpenCV基础教程——视频分析(Meanshift和Camshift)
初始窗口是蓝色的“C1”,它的圆心为蓝色方框“C1_o”,而窗口中所有点质心却是“C1_r”(小的蓝色圆圈),很明显圆心和点的质心没有重合。这时又可以找到新窗口内所有点的质心,大多数情况下还是不重合的,所以重复上面的操作:将新窗口的中心移动到新的质心。这里面还有一个问题。我们的窗口的大小是固定的,而汽车由远及近(在视觉上)是一个逐渐变大的过程,固定的窗口是不合适的。假设我们有一堆点(比如直方图反向投影得到的点),和一个小的圆形窗口,我们要完成的任务就是将这个窗口移动到最大灰度密度处(或者是点最多的地方)。原创 2023-11-06 09:04:21 · 117 阅读 · 0 评论 -
OpenCV基础教程——特征提取与描述(特征匹配+ Homography查找对象)
如果将这两幅图像中的特征点集传给这个函数,他就会找到这个对象的透视图变换。我们使用一个查询图像,在其中找到一些特征点(关键点),我们又在另一幅图像中也找到了一些特征点,最后对这两幅图像之间的特征点进行匹配。简单来说就是:我们在一张杂乱的图像中找到了一个对象(的某些部分)的位置。如果找到了足够的匹配,我们要提取两幅图像中匹配点的坐标。一旦我们找到 3x3 的变换矩阵,就可以使用它将查询图像的四个顶点(四个角)变换到目标图像中去了。首先,像往常一样,让我们在图像中找到SIFT特征并应用比率测试来找到最佳匹配。原创 2023-11-06 09:01:05 · 242 阅读 · 0 评论 -
OpenCV基础教程——特征提取与描述(特征匹配)
它需要两个可选的参数,第一个是normType,它指定要使用的距离测量,默认情况下,它是cv.NORM_L2,它适用于SIFT,SURF等(cv.NORM_L1也在那里)。对于基于二进制字符串的描述符,如ORB,BRIEF,BRISK等,应使用cv.NORM_HAMMING,它使用汉明距离作为度量。如果为真,则Matcher仅返回具有值(i,j)的那些匹配,使得集合A中的第i个描述符具有集合B中的第j个描述符作为最佳匹配,反之亦然。在这里,我们将看到一个关于如何匹配两个图像之间的特征的简单示例。原创 2023-11-06 09:00:24 · 431 阅读 · 0 评论 -
OpenCV基础教程——特征提取与描述(BRIEF、ORB )
是的,SIFT和SURF已获得专利,你应该支付它们的使用费用。为了解决所有这些问题,ORB在所有可能的二进制测试中运行一个贪婪的搜索,以找到具有高方差和意味着接近0.5的那些,以及不相关的。创建一个包含上千个特征的向量需要消耗大量的内存,在嵌入式等资源有限的设备上这样是不可行的。OpenCV 对这些都提供了支持,但在默认情况下是 256(OpenC 是使用字节表示它们的,所以这些值分别对应与 16,32,64)。为了改善旋转不变性,用x和y计算矩,该x和y应该在半径为r的圆形区域中,其中r是贴片的大小。原创 2023-11-06 08:58:38 · 192 阅读 · 0 评论 -
OpenCV基础教程——特征提取与描述(FAST算法)
FAST 算法比其它角点检测算法都快。但是在噪声很高时不够稳定,这是由阈值决定的。原创 2023-11-06 08:57:33 · 141 阅读 · 0 评论 -
OpenCV基础教程——特征提取与描述(SURF)
我们将看到SURF的基础知识*我们将在OpenCV中看到SURF功能。转载 2023-11-06 08:56:06 · 193 阅读 · 0 评论 -
OpenCV基础教程——特征提取与描述(SIFT)
我们将了解SIFT算法的概念*我们将学习如何找到SIFT关键点和描述符。原创 2023-11-06 08:55:04 · 97 阅读 · 0 评论 -
OpenCV基础教程——特征提取与描述(理解图像特征、Harris角点检测)
我们用一个区域围绕这个特征,我们用自己的话解释它,比如“上部是蓝天,下部是建筑物的区域,那个建筑物上有玻璃等”,你在另一个地方寻找相同的区域图片。获得这些功能及其描述后,你可以在所有图像中找到相同的功能并对齐它们,将它们拼接在一起或做任何你想做的事情。我们在图像中搜索这些特征,找到它们,在其他图像中查找相同的特征并拼凑它们。因此,与平坦区域相比,边缘是更好的特征,但是不够好(用于比较边缘的连续性在拼图中是好的)。因此,在本单元中,我们正在寻找OpenCV中的不同算法来查找功能,描述功能,匹配它们等。原创 2023-11-06 08:52:54 · 154 阅读 · 1 评论 -
OpenCV基础教程——OpenCV中的图像处理(基于GrabCut算法的交互式前景提取)
在新的掩模图像中,像素将被标记为表示背景/前景的四个标记,如上所述。因此,我们修改掩模,使得所有0像素和2像素都被置为0(即背景),并且所有1像素和3像素被置为1(即前景像素)。笔划基本上说*“嘿,这个区域应该是前景,你标记它的背景,在下一次迭代中纠正它”*或它的背景相反。在画中使用画笔工具,我在这个新图层上标记了带有黑色的白色和不需要的背景(如徽标,地面等)的前景(头发,鞋子,球等)。然后在OpenCV中加载该掩模图像,编辑我们在新添加的掩模图像中使用相应值的原始掩模图像。哎呀,梅西的头发不见了。原创 2023-11-05 20:54:57 · 250 阅读 · 0 评论 -
OpenCV基础教程——OpenCV中的图像处理(基于分水岭算法的图像分割)
用一种颜色(或强度)标记我们确定为前景或对象的区域,用另一种颜色标记我们确定为背景或非对象的区域,最后标记我们不确定的区域,用0标记它。然后我们的标记将使用我们给出的标签进行更新,对象的边界将具有-1的值。随着水的上升,取决于附近的峰值(梯度),来自不同山谷的水,明显具有不同的颜色将开始融合。我们确切知道的区域(无论是前景还是背景)都标有任何正整数,但不同的整数,我们不确定的区域只是保留为零。所以,现在我们确切地知道靠近物体中心的区域是前景,而远离物体的区域是背景。只有我们不确定的区域是硬币的边界区域。原创 2023-11-05 20:54:04 · 123 阅读 · 0 评论