- 博客(78)
- 资源 (1)
- 收藏
- 关注
原创 单目相机标定实现--张正友标定法
文章目录一:相机坐标系,像素平面坐标系,世界坐标系,归一化坐标系介绍1:概述公式二:实现1:整体流程4:求出每张图像的单应性矩阵并用LMA优化5:求解理想无畸变情况下的摄像机的内参数和外参数并用极大似然估计(LMA)提升精度6:应用最小二乘求出实际的畸变系数五:总结原文链接:http://t.csdn.cn/Qvvjv个人笔记:本次介绍针对于单目相机标定,实现方法:张正友标定法。一:相机坐标系,像素平面坐标系,世界坐标系,归一化坐标系介绍1:概述如图,现实世界中有一个P点和一个相机(光心
2023-01-18 21:17:59 13637 23
原创 最小二乘法,加权最小二乘法,迭代重加权最小二乘法 (含代码)【最小二乘线性求解】
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法是曲线拟合的常用方法,使用该方法对匹配函数的选取非常重要。。所谓匹配函数就是函数经过的路线在图中的点达到一个最佳匹配。不然就会出现过拟合和欠拟合的现象。1:工具:主要Qt +Eigen库+QCustomPlot类Eigen库是一个用于矩阵计算,代数计算库QCustomPlot类是一个用于绘图和数据可视化。
2022-11-16 23:18:57 24578
原创 Qt配置OpenCV教程,亲测已试过(详细版)
win10系统Qt5.12.9配置OpenCV4.5.1库教程 Qt,OpenCV,Cmake详细下载安装教程软件准备首先要说的是装软件还是装最新的好,不用考虑各种软件的版本对应问题,都是最新版的情况下它们互相之间一定是兼容的,下边具体来说下需要的几个软件。 64位win10系统 Qt 5.12.9 Cmake 3.18.0 OpenCV 4.5.1以下叙述顺序即为安装配置顺序QtDownload国
2021-01-22 00:43:38 135878 248
原创 图像实现曲面屏效果
双线性插值是一种常用的图像插值方法,用于在图像中两个相邻像素之间进行插值,以获取介于它们之间某个位置的像素值。在透视变换等情况下,由于原始图像的像素点与目标图像的像素点位置不完全重合,因此需要对目标图像中的像素值进行插值。
2024-03-04 21:24:05 1145 1
原创 神经网络系列---池化
平均池化(Average Pooling)是卷积神经网络中另一种常用的池化技术。其操作是在输入特征图的一个局部窗口内计算所有值的平均值,然后将此平均值作为该窗口的输出。最大池化(Max Pooling)是卷积神经网络中常用的一种池化技术。其操作是:在输入特征图的一个局部窗口内选取最大的值作为该窗口的输出。这个公式简单地描述了最大池化的操作:对于每个输出元素。这个公式描述了平均池化的操作:对于每个输出元素。的相应局部窗口中计算所有值的平均值。的相应局部窗口中找到最大的值。
2024-02-27 20:20:01 2169
原创 神经网络系列---卷积
需要注意的是,正向卷积和反向传播中的卷积(通常称为转置卷积或反卷积)在数学和实现上有一些不同。在神经网络的卷积层中,向下取整(Floor)是一种常用的策略,特别是在处理输出尺寸不是整数的情况时。这个翻转的卷积核(或旋转180度的卷积核)通常用于反向传播过程中,以计算相对于输入的梯度。简而言之,在正向传播中我们使用原始的卷积核,而在反向传播时,为了计算梯度,我们通常需要用到翻转的卷积核。对于正向传播,我们使用原始的卷积核进行卷积操作。举一个简单的例子,假设你有一个7x7的输入和一个3x3的卷积核,步长为2。
2024-02-27 20:17:28 1781
原创 神经网络系列---计算图基本原理
符号微分提供了一种精确、直接的方式来计算导数。在深度学习和其他科学计算应用中,通过结合计算图,符号微分使得自动求导和梯度下降优化变得可行和高效。不过,对于非常复杂的表达式,符号微分可能导致表达式膨胀,从而增加了计算复杂性。因此,有时可能会结合使用符号微分和数值微分方法。数值微分是一种有用的工具,特别是当解析解不可用或难以获得时。它提供了一种灵活而实用的方法来近似导数,但必须谨慎选择参数并注意可能的数值问题。在深度学习和其他领域,它通常与符号微分或自动微分结合使用。变量:xxxyyy运算:log。
2024-02-24 21:22:23 1464
原创 神经网络系列---归一化
由于不同的特征可能具有不同的尺度和分布,因此为每个特征单独计算均值和方差是有意义的。这样可以确保在整个训练集中,每个特征都被归一化到具有相同的均值和方差,从而有助于提高训练的稳定性和效率。在批量归一化中,移动平均均值和方差是在训练阶段计算并用于预测阶段的归一化过程。在推断阶段,使用整个训练集的均值和方差(通常是移动平均)来替代小批量的均值和方差。是一个超参数,通常在 0 到 1 之间,通常设置为接近 1 的值(例如 0.9),决定了移动平均的平滑程度。:对于每个训练批次,计算该批次数据的均值和方差。
2024-02-24 21:17:12 1733
原创 神经网络系列---分类度量
它将预测结果与真实标签之间的四种不同情况进行了分类,包括真正类(True Positive,TP)、真负类(True Negative,TN)、假正类(False Positive,FP)和假负类(False Negative,FN)。TPR是召回率(Recall)的另一个名称,它表示在所有真实为正类别的样本中,模型正确预测为正类别的样本所占的比例。在某些不平衡的分类问题中,如果某个类别的样本数量较少,模型可能会倾向于预测样本属于数量较多的类别,从而导致准确率的误导。
2024-02-24 21:14:48 1663 1
原创 神经网络系列---常用梯度下降算法
常用梯度下降算法当涉及不同的梯度下降算法时,每种算法都有其独特的特点和优化策略。下面对每种算法进行详细解释:随机梯度下降(Stochastic Gradient Descent,SGD):算法原理:在每次迭代中,随机选择一个训练样本来计算损失函数的梯度,并更新模型的参数。由于随机选择样本,梯度估计存在一定的噪声,导致优化路径不稳定,但收敛速度较快。优点:收敛速度快,计算开销较小。缺点:优化路径不稳定,可能会震荡,难以找到全局最优解。算法原理:在每次迭代中,使用所有训练样本来计算损
2024-02-24 21:05:54 1953
原创 神经网络系列---独热编码(One-Hot Encoding)
在机器学习和数据分析中,我们通常会遇到非数值型的特征(例如颜色、性别、国家等),而大多数机器学习算法要求输入的特征是数值型的。因此,我们需要将这些分类变量转换成数值型的表达形式,而独热编码是一种常见的处理方式。然而,也要注意,在特征空间较大时,独热编码可能会导致高维度的稀疏矩阵,增加了计算和存储的开销。,包含N个不同的取值,那么独热编码将会生成一个N维的二进制向量,其中只有一个维度为1(热)表示当前的取值,其他维度为0(冷)表示非当前取值。当某个样本的颜色是某一种取值时,对应的列为1,其他列为0。
2024-02-24 21:02:05 1184
原创 神经网络系列---权重初始化方法
n_in:代表上一层(前一层)的节点数量,也就是当前层的输入数量。在神经网络中,每个神经元都会接收来自上一层所有节点的输入,这些输入被加权和后传递给当前神经元的激活函数。因此,n_in指的是上一层与当前层之间的连接数量。n_out:代表当前层的节点数量,也就是当前层的输出数量。每个神经元会将经过激活函数处理后的结果传递给下一层所有节点,形成下一层的输入。适用于激活函数为tanh或sigmoid的情况。对于带有ReLU激活的卷积层,可以使用相同的初始化方法,只是需要考虑卷积层的输入通道数量(即n_in)。
2024-02-24 21:01:01 2493
原创 神经网络系列---损失函数
在分类任务中,信息熵损失函数的作用是最小化模型预测的类别概率分布与真实标签的差异,使得模型能够更好地预测正确类别。平均绝对误差(Mean Absolute Error,MAE)是常用的回归问题中的损失函数,用于衡量模型预测结果与真实标签之间的差异。均方误差(Mean Squared Error,MSE)是常用的回归问题中的损失函数,用于衡量模型预测结果与真实标签之间的差异。Hinge Loss 的特点是,对于预测结果与真实标签的差异小于1的情况,损失为0,这被称为“合页点”(hinge point)。
2024-02-24 20:56:52 2620 1
原创 神经网络系列---激活函数
然而,Leaky ReLU 也存在一些缺点。综上所述,尽管Sigmoid函数在过去被广泛应用于神经网络中,但随着深度学习的发展,人们更倾向于使用其他激活函数,如ReLU及其变种,因为它们能够缓解梯度消失问题并提供更好的性能。综上所述,尽管Tanh函数具有一些优点,但在深度神经网络中,它容易出现梯度消失的问题,因此在实践中,ReLU及其变种等激活函数更常用。然而,Tanh函数仍然可以在特定情况下使用,例如需要将输出值范围控制在[-1, 1]之间的任务,或者在某些循环神经网络(RNN)的隐藏层中使用。
2024-02-24 20:47:20 1651
原创 神经网络系列---感知机(Neuron)
感知机(Neuron)的学习过程主要涉及确定合适的权重,以便对不同的输入样本进行正确的分类。感知机(Neuron)是一种简单而有效的二分类算法,用于将输入数据划分为两个类别。需要注意的是,感知机(Neuron)只适用于线性可分的问题,即可以通过一个超平面将两个类别的数据完全分开。其中,x是输入向量,w是权重向量,b是偏置项,sign是符号函数,将输入的实数映射为+1或-1,表示两个不同的类别。下面用感知机(Neuron) 表达 与(AND)、 或(OR) 、非(NOT) 、异或(XOR) 、 运算。
2024-02-24 20:44:49 2133
原创 c++ 自定义Logger 日志类
使用qt界面,接收日志,,通过接收 logReceived 信号,获取日志信息显示。这里QtConcurrent::run 可以方便接收信息,触发异步信号,不阻塞界面。不然界面会卡死,更新UI只能在一个线程中。默认保存到文件,并支持回调函数,比如显示到界面。
2024-02-12 17:35:34 1415
原创 YOLOv8 + openVINO 多线程数据读写顺序处理
一个典型的生产者-消费者模型,在这个模型中,多个工作线程并行处理从共享队列中获取的数据,并将处理结果以保持原始顺序的方式放入另一个队列。这个例子是ffmpeg读取的数据,用openVINO推理实现对每张图片进行实时推理,推理后的数据,按照顺序写入显示,保证数据顺序一致性。:用于处理好的数据按照读的顺序写入,写入数据到输出队列的顺序是保持一致的。中取出数据进行处理。线程的结束:判断数据里的。多线程处理数据,保证数据先读的先写。:用于存放待处理的数据。:处理完成后,判断数据的。类确保数据的读写正常,
2024-01-11 23:02:18 1332 1
原创 FFT应用于卷积
此推导表明,对于任何给定的输入和一个线性时不变系统,输出总是输入和冲激响应的卷积。由于系统是线性时不变的,我们可以认为输入信号是由许多小的冲激组成的。每个这样的冲激会激发系统产生一个响应,这些响应会加在一起形成最终的输出。它告诉我们,两个信号(或函数)在时域(或位置空间)中的卷积等于它们在频域中的乘积,反之亦然。这就是为什么线性时不变系统的输出可以描述为输入和冲激响应的卷积。位置空间的卷积等于频率空间的直接乘法。这微小的输入可以被看作一个微小的冲激。,这个微小的冲激将会导致一个微小的输出。
2023-08-28 23:43:59 686
原创 傅里叶变换
傅里叶分析之掐死教程[周期 角频率 频率 振幅 初相角.md](file:///H:/VNote3/VNote/数学/周期%20%20角频率%20频率%20振幅%20%20初相角.md)[三角函数恒等式.md](file:///H:/VNote3/VNote/数学/三角函数恒等式.md)[三角函数正交性.md](file:///H:/VNote3/VNote/数学/三角函数正交性.md)[微积分.md](file:///H:/VNote3/VNote/数学/微积分.md)[欧拉公式.md](fi
2023-08-25 09:51:41 450
原创 蝴蝶翻转
在计算机科学和数字信号处理中,蝴蝶操作是一种常用于快速傅里叶变换(FFT)的操作。在蝴蝶算法中,输入数据的一部分通过特定的运算结构进行重新排列和组合,以便在计算FFT时实现高效处理。蝴蝶操作的名称来自于它的结构图,其中输入和输出数据的排列方式看起来像蝴蝶的翅膀。上图,对比每个数值的二进制,通过蝴蝶翻转,就得到了对应的数值。2:对0的第一位取反,得到1的蝴蝶数值,对0的前两位翻转得到3的蝴蝶值,对1的前两位翻转得到2的蝴蝶值。
2023-08-25 00:29:02 349
原创 周期 角频率 频率 振幅 初相角
T: 函数在其图形上重复的时间或空间的长度。周期的倒数是频率。f: 周期的倒数,即一秒内波形重复的次数。单位通常为赫兹(Hz)。fT1ω: 角频率是频率的2π倍,通常用于正弦和余弦函数中。ω2πfT2π: 振幅是波形的最大幅度或强度。在傅里叶级数中,振幅由正弦和余弦项的系数确定,可以反映波形的大小。ϕ: 初始相位或相位偏移表示波形在时间t0时的位置。在正弦和余弦波中,相位偏移可以将波形沿时间轴移动。
2023-08-16 23:10:34 4449 2
原创 复数
复数加法是一种直观且容易计算的运算,它通过将实部和虚部分别相加来实现。在复数平面上,这个操作具有直观的几何解释,可以通过向量加法来可视化。复数减法是一种直观且容易计算的运算,可以通过将实部和虚部分别相减来实现。在复数平面上,这个操作具有直观的几何解释,并可以通过向量减法来可视化。复数乘法可以通过简单的实数运算计算,并在许多数学和工程应用中都有用处。它在复数平面上的几何解释也为理解复数的性质和行为提供了直观的洞察。模长和幅角提供了一种表示复数的有用方法,它捕捉了复数在复数平面上的几何特性。
2023-08-16 23:06:55 1283
原创 常用微分和积分
文章目录微积分积分和求和符号微分思想相关的核心数学公式:乘法法则乘法法则推导商法则商法则的推导使用链式法则求v′v'v′切线基本求导公式复合函数积分思想不定积分定积分举例常见的形式不定积分定积分三角替换1. x=sinθx = \sin \thetax=sinθ 替换2. x=tanθx = \tan \thetax=tanθ 替换3. x=secθx = \sec \thetax=secθ 替换示例积分换元法基本步骤示例常函数法则不定积分定积分数乘法则不定积分定积分示例加减法则不定积分定积分示例积
2023-08-16 23:02:55 2922 1
原创 三角函数正交性
三角函数的正交性可以表示为在一个周期内,不同频率的正弦和余弦函数的乘积的积分等于零。这些性质在傅里叶分析和信号处理中非常重要,它们使我们能够将复杂的周期信号分解为不同频率的正弦和余弦分量。这意味着,如果您取其中任意两个不同的函数并计算它们在一个完整周期上的乘积的积分,结果将为零。这些性质在傅里叶分析和信号处理中也同样重要,它们也使我们能够将复杂的周期信号分解为不同频率的余弦分量。当两个函数的频率不同时,一个周期内的乘积的积分等于零。包括了无穷多的正弦和余弦函数,它们的频率从 0 开始递增。
2023-08-16 23:00:49 10064
原创 TensorFlow详细配置(Python版本)
这里再次提醒自行搭配版本的读者,一定要看清对照表内python = 3.9、tensorflow-gpu = 2.6、cudnn = 8.1、cuda=11.2这四者之间的版本号是否匹配!(3)当分享代码的时候,同时也需要将运行环境分享给大家,执行如下命令可以将当前环境下的 package 信息存入名为 environment 的 YAML 文件中。(4)当执行他人的代码时,也需要配置相应的环境。现在需要重启电脑,然后Win+R进入cmd界面,输入nvcc -V,出现如下界面,代码cuda已经安装成功了。
2023-06-18 22:50:38 21008 3
原创 监督学习和无监督学习
cv::ml::KNearest:K最近邻(K-Nearest Neighbors)是一种基于实例的学习方法,它通过计算输入样本与训练样本之间的距离来进行分类。cv::ml::RTrees类是随机森林的实现,它支持二叉和多叉决策树,提供了参数用于控制森林的大小和生长。cv::ml::Boost类实现了Boosting算法,支持二分类和多分类任务,并提供了参数用于控制弱分类器的数量和类型。cv::ml::DTrees:决策树(Decision Trees)是一种常见的机器学习算法,用于分类和回归问题。
2023-06-18 12:30:56 12912 2
原创 OpenCV Mat类
Mat类提供了许多方法和操作符,用于访问和处理图像的像素值和矩阵的元素。OpenCV是一个广泛使用的计算机视觉库,它提供了许多用于图像处理和计算机视觉任务的函数和工具。OpenCV的Mat类还提供了许多其他方法和操作,可以对图像和矩阵进行各种处理和分析。类的模板化版本,提供了更高的类型安全性,并在编译时确定了矩阵的大小和数据类型。类是OpenCV中通用的矩阵和图像数据结构,可以存储不同维度、通道数和数据类型的数据。类是OpenCV中通用的矩阵和图像数据结构,可以适用于各种维度、通道数和数据类型的数据。
2023-06-17 08:58:39 2637
原创 计算图片中像素梯度值的几种方式
它分别对图片进行水平和垂直方向的卷积操作,然后将两个方向的梯度值合并,得到每个像素的综合梯度值。基本梯度图像是OpenCV中支持的计算形态学梯度的方法,而此方法得到梯度有被称为基本梯度。其中,G_x和G_y分别是水平和垂直方向的梯度值,G是综合梯度值。其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。图像膨胀之后再减去原来的图像得到的差值图像,称为图像的外部梯度。用膨胀后的图像减去腐蚀后的图像得到差值图像,称为基本梯度图像。用原图像减去腐蚀之后的图像得到差值图像,称为图像的内部梯度。
2023-06-17 08:56:20 2146
原创 特征点Features2D类介绍
以下是OpenCV中继承自: Adaptive and Generic Accelerated Segment Test (AGAST) 特征检测器。cv::AKAZE: Accelerated-KAZE (AKAZE) 特征检测器和描述子提取器。cv::BRISK: Binary Robust Invariant Scalable Keypoints (BRISK) 特征检测器和描述子提取器。: FAST 特征检测器。: Good Features to Track (GFTT) 特征检测器。
2023-06-17 08:55:49 2518
原创 InputArray和OutputArray的那些事
如果在你自己编写的函数中形参也想用InputArray,可以传递多类型的参数,在函数的内部可以使用_InputArray::getMat()函数将传入的参数转换为Mat的结构,方便你函数内的操作;看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray型的,这个接口类还是很强大的,今个就来说说它们的那些事。有时候InputArray输入的矩阵是个空参数,你只需要用cv::noArray()作为参数即可,或者很多代码里都用cv::Mat()作为空参。
2023-06-17 08:53:38 346
原创 霍夫变换原理
然后,我们计算线段的另一个端点(x2, y2),其中x2和y2分别等于直线在笛卡尔坐标系下的截距(x0, y0)加上一个向量-(-b, a),该向量的长度同样为1000。由于在霍夫空间中,直线的表示形式是(rho, theta),其中rho表示直线到图像中心的距离,theta表示直线与x轴的夹角,因此我们需要将它们转换为笛卡尔坐标系下的表示形式,即直线的两个端点坐标(x1, y1)和(x2, y2)。然后,我们将x1和y1作为直线的起点,将x2和y2作为直线的终点,在图像上绘制一条直线。
2023-06-17 08:51:01 1274 1
原创 图像细化原理
Zhang-Suen 算法原理Zhang-Suen 算法每运行一次, 需要遍历所有的不为0的像素。在对每个像素(P1)进行删除或保留的判断时,我们需要关注其周围的8个邻居像素(P2, P3, P4, P5, P6, P7, P8)的值。其中 P2 到 P8 的顺序是算法规定,用于后面判断。
2023-06-17 08:48:10 1779 1
原创 形态学中的8种操作
该操作通过将核与图像上的每个像素进行卷积,计算核覆盖下的像素的最小值,并将结果写入输出图像中。该操作能够减小图像中的亮度和尺寸,并能够消除小的噪点。实际应用:去除图像中的细小物体,消除图像中的噪点,分割图像中的前景和背景等。该操作通过将核与图像上的每个像素进行卷积,计算核覆盖下的像素的最大值,并将结果写入输出图像中。该操作能够增加图像中的亮度和尺寸,并能够填充小的空洞。实际应用:扩张图像中的前景区域,填充图像中的空洞,连接相邻的物体等。
2023-06-17 08:44:58 1812
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人