MATLAB与计算机视觉:手势识别实战技术

server/2025/2/6 16:41:17/

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:手势识别是现代科技领域的一个重要应用方向,它在人机交互、虚拟现实和智能安防等多个领域中都发挥着关键作用。本项目详细介绍利用MATLAB这一工具结合计算机视觉理论,实现一个高效的手势识别系统。核心知识点包括MATLAB与计算机视觉的基础、数据集与预处理、特征提取、手势识别模型的建立和训练、以及实时应用等关键技术环节。项目包含清晰的代码注释,便于学习和复用,旨在通过实践学习提升个人技能和创新能力。 基于matlab和计算机视觉实现的手势识别.zip

1. MATLAB和计算机视觉基础

1.1 MATLAB概述

MATLAB(Matrix Laboratory的缩写)是一种高性能的数值计算环境和第四代编程语言。它广泛应用于工程计算、数据分析以及算法开发等领域,特别是在计算机视觉、图像处理以及机器学习等研究领域中,MATLAB提供了丰富的工具箱支持,使得复杂算法的实现变得简单直接。

1.2 计算机视觉简介

计算机视觉是研究如何使机器“看”的科学,包括图像处理、特征提取、图像分析和理解等多方面内容。通过计算机视觉,可以模拟人类视觉系统识别、处理图像和视频流,以实现对客观世界的理解。

1.3 MATLAB在计算机视觉中的应用

在MATLAB环境中,通过图像处理工具箱和计算机视觉工具箱,研究人员可以方便地加载、处理、分析和理解图像数据。例如,MATLAB提供了多种函数和接口用于图像增强、特征检测、目标跟踪等任务,这些工具箱内的函数具有高度的抽象化,使得开发者可以专注于问题的解决而不是算法的底层实现。

接下来,我们将进入数据集的收集与标注部分,探索如何获取和准备高质量的数据集以进行计算机视觉项目的训练和测试。

2. 数据集与预处理方法

2.1 数据集的收集与标注

2.1.1 数据集的重要性

数据集是机器学习和计算机视觉项目的基石。高质量的数据集能够提供足够的信息,使得模型能够通过学习获得精准的预测能力。在计算机视觉中,特别是对于手势识别等细粒度的识别任务,一个准确、多样性且大规模的数据集是至关重要的。

在训练阶段,数据集用于模型的监督学习,帮助模型建立从输入数据到输出标签的映射关系。而在模型测试阶段,独立的测试集可以评估模型的泛化能力。因此,数据集的质量直接影响到最终模型的性能。

2.1.2 数据收集的渠道和方法

收集数据集的途径多样,一般可以分为以下几种: 1. 公开数据集 :互联网上有许多已经公开的手势识别数据集,如MSRA手势识别数据集、ChaLearn手势数据集等。这些数据集往往经过了预处理和标注,可以直接用于训练和测试。 2. 自建数据集 :对于特定应用场景,公开数据集可能无法完全满足需求,此时需要自建数据集。自建数据集通常通过摄像设备拍摄手势图片或视频,随后进行分割和标注。 3. 众包平台 :利用如Amazon Mechanical Turk等众包平台,可以快速收集大量带有标注的手势数据。这种方法既高效又能够保证标注的一致性。

2.1.3 数据标注的工具和技巧

数据标注是指对图像数据进行分类、定位等信息的添加过程。使用高效且准确的标注工具能够大大提高数据预处理的效率。

一些常见的图像标注工具有LabelImg、CVAT(Computer Vision Annotation Tool)等。这些工具支持对图像进行矩形框标注、多边形标注、关键点标注等多种形式。标注时的技巧包括: - 一致性 :确保标注的规则一致,比如手势的边缘如何划分。 - 复用性 :许多工具支持模板标注,可以预先定义一些常见的手势模板,以提高标注效率。 - 准确性 :高质量的标注可以显著提高模型训练的效果,因此应确保标注的准确性,对于模糊不清的手势边缘应该进行多次确认。

2.2 图像预处理技术

2.2.1 图像的灰度化与二值化

图像的灰度化和二值化是常见的预处理手段,能够减少图像数据的复杂度,提升后续处理的效率。

  • 灰度化 :将彩色图像转换为灰度图像,可以减少计算量。通常根据人眼对不同颜色的敏感程度加权计算灰度值。
  • 二值化 :将灰度图像转换为黑白两色,常用于边缘检测等操作,增强图像的特征。
2.2.2 图像滤波与去噪

在采集图像的过程中,往往伴随着噪声。噪声会干扰特征提取和模型训练的准确性。常用的滤波去噪方法包括高斯滤波、中值滤波等。

  • 高斯滤波 :通过一个高斯核(权重)对图像进行卷积,以达到平滑图像的目的。
  • 中值滤波 :将每个像素点的值替换为其邻域内的中值,这在去除椒盐噪声上有很好的效果。
2.2.3 图像增强与缩放

为了提升模型的鲁棒性,图像增强和缩放是必要的预处理步骤,使得模型能够适应各种不同的图像输入。

  • 图像增强 :通过调整对比度、亮度,或者应用直方图均衡化来增强图像的可视性。
  • 图像缩放 :将图像缩放到统一的尺寸,以适应神经网络输入层的要求,通常需要插值算法来优化图像质量。

通过上述预处理步骤,可以为后续的手势识别模型训练提供更高质量的数据输入,有效提升模型性能。预处理不仅涉及到图像本身的物理特性,还与应用场景的需求密切相关。因此,在进行预处理时,需要充分考虑模型的需要和可能的场景变化。

3. 特征提取技术

3.1 霍夫变换在手势识别中的应用

3.1.1 霍夫变换的基本原理

霍夫变换(Hough Transform)是一种在图像中识别简单形状的特征提取方法,尤其适用于直线和圆的检测。其基本原理是通过将图像空间转换到参数空间来实现形状检测。对于直线检测,霍夫变换可以识别图像中的直线,通过投票机制确定哪些参数对应的直线在原始图像中存在。

具体来说,霍夫变换利用了图像空间和参数空间之间的一一对应关系。在图像空间中,直线可以用两个变量表示,例如斜率和截距(y=mx+b),但在实际应用中,由于图像中可能存在垂直线(斜率无穷大)的情况,通常使用极坐标(ρ, θ)表示直线。这里的ρ是直线到原点的垂直距离,θ是直线的法线与x轴的夹角。

霍夫变换的过程如下:

  1. 边缘检测 :首先需要对输入图像进行边缘检测,常用的方法有Sobel算子、Canny边缘检测等。
  2. 参数空间的构建 :初始化一个二维累加器(通常是一个矩阵),其横轴为ρ,纵轴为θ,用于记录每个参数组合被支持的次数。
  3. 投票过程 :对于图像空间中的每一个边缘点,计算在参数空间中所有可能代表该直线的(ρ, θ)点,并在对应的累加器位置增加投票数。
  4. 峰值检测 :寻找参数空间中的局部最大值,这些最大值对应的位置即为检测到的直线参数。

3.1.2 霍夫变换在手势边缘检测中的实践

在手势识别中,霍夫变换常用于从二值化图像中检测手势的边缘直线。由于手势边缘往往形成较为规则的几何形状,霍夫变换可以有效地定位这些形状的直线边缘。

具体实现步骤如下:

  1. 图像预处理 :将采集的手势图像进行灰度化和二值化处理,以便突出边缘信息。
  2. 边缘检测 :利用边缘检测算子提取出二值图像中的边缘信息。
  3. 霍夫变换应用 :应用霍夫变换算法,对边缘图像进行直线检测。
  4. 结果分析 :分析霍夫变换结果,识别出手势的特征直线。

下面是一个简单的MATLAB代码示例,展示了如何使用霍夫变换来检测图像中的直线:

% 读取图像并进行预处理
img = imread('hand gesture.jpg');
gray_img = rgb2gray(img); % 转换为灰度图
bw_img = imbinarize(gray_img); % 二值化处理% 边缘检测
edges = edge(bw_img, 'Sobel');% 霍夫变换检测直线
[H, theta, rho] = hough(edges);
peaks = houghpeaks(H, 5); % 检测霍夫空间中的峰值
lines = houghlines(edges, theta, rho, peaks);% 显示原图和检测到的直线
imshow(img);
hold on;
for k = 1:length(lines)xy = [lines(k).point1; lines(k).point2];plot(xy(:,1), xy(:,2), 'LineWidth', 2, 'Color', 'green');
end
hold off;

在上述代码中,首先读取并预处理了一张手势图像,将其转换为灰度图并二值化。然后通过Sobel算子进行边缘检测。接下来,使用 hough 函数计算霍夫变换,并通过 houghpeaks houghlines 函数检测并标记直线。最终,使用 imshow 函数显示原图和检测到的直线。

通过霍夫变换,我们可以有效地识别出手势图像中的直线特征,为后续的手势识别提供重要的特征支持。

3.1.3 霍夫变换与手势识别

手势识别中的一个重要步骤是提取出手势的关键特征,而霍夫变换可以很好地完成这一任务。通过识别手势边缘的直线特征,霍夫变换能够提供稳定的手势轮廓信息,这些信息对于区分不同的手势模式至关重要。

例如,在一个简单的手势识别系统中,我们可以定义几个基本手势,如“停”(手指伸直)、“胜利”(两手指成V形)、“OK”(拇指和食指形成圆圈)等。每个手势的边缘特征都包含特定的直线组合,霍夫变换能够帮助系统识别这些组合。系统识别到特定的直线组合后,再通过与预定义的手势模型进行比较,最终决定识别结果。

此外,霍夫变换还可以与其他图像处理技术结合使用,以进一步提高识别的准确性和鲁棒性。例如,可以结合区域增长算法来改善霍夫变换在复杂背景下的直线检测效果,或者利用形态学操作来清除小的噪声,进一步优化结果。

总的来说,霍夫变换作为一种强大的图像处理工具,在手势识别领域具有广泛的应用潜力。通过巧妙地结合霍夫变换与手势特征,我们可以构建出高效准确的手势识别系统。

3.2 描述子技术的比较与应用

3.2.1 SIFT、SURF、HOG特征提取方法概述

在计算机视觉领域中,特征描述子用于表示图像中局部区域的特征信息。这些特征描述子在图像的平移、旋转、缩放以及亮度变化下都具有良好的不变性,是图像识别、物体检测和图像拼接等应用中的关键。

  • 尺度不变特征变换(Scale-Invariant Feature Transform, SIFT) :由David Lowe在1999年提出,SIFT算法能够检测出图像中的局部特征点,并为这些特征点生成具有尺度不变性和旋转不变性的特征描述子。SIFT特征描述子通常为128维的向量。

  • 加速稳健特征(Speeded-Up Robust Features, SURF) :由Herbert Bay等人在2006年提出,旨在加速SIFT算法。与SIFT类似,SURF也是一种尺度和旋转不变的特征提取算法,但是它使用了更简单的盒滤波器和积分图像来计算特征点和描述子,因此计算效率更高。

  • 方向梯度直方图(Histogram of Oriented Gradients, HOG) :是一种用于表示图像局部形状和轮廓的描述子。HOG主要关注图像中的边缘信息,并通过统计图像局部区域内的梯度方向直方图来构建描述子。HOG描述子常用于行人检测等应用。

3.2.2 各描述子在手势识别中的性能对比

在手势识别任务中,选择合适的特征描述子对于系统性能至关重要。以下是几种描述子技术在手势识别中的性能比较:

  • SIFT :由于SIFT对尺度和旋转具有良好的不变性,它在手势的尺度和方向变化较大的情况下表现较好。然而,SIFT的计算复杂度较高,可能会导致识别速度受限。

  • SURF :SURF在保持了SIFT不变性的同时,通过使用更快的近似方法显著提升了计算速度。因此,SURF更适合实时或近实时的手势识别系统。

  • HOG :HOG描述子特别适用于描述图像的边缘信息。在手势识别中,如果手势具有明显的边缘轮廓,HOG可以有效地捕捉到这些形状信息。HOG描述子计算简单、速度快,但对光照变化比较敏感。

3.2.3 描述子选择对识别结果的影响

选择合适的描述子直接影响手势识别系统的准确性和速度。SIFT虽然提供了最强的不变性,但由于其计算量较大,可能不适用于要求低延迟的实时系统。相比之下,SURF提供了一种良好的平衡,既可以保证识别准确性,又能满足实时性的需求。

HOG在处理有明显形状轮廓的手势时表现优异,计算速度也很快,但其对光照变化的敏感可能在某些应用场景中成为一个限制因素。因此,对于不同的应用场景和需求,选择最合适的描述子至关重要。

此外,多描述子融合的策略也常用于提升识别性能,比如结合SIFT和HOG描述子可以兼顾对尺度、旋转不变性和形状信息的捕捉,但同时也会增加计算量。因此,在设计手势识别系统时,需要综合考虑识别准确性和计算效率,以选择或设计最合适的特征描述子。

接下来,我们将深入探讨特征描述子在实际手势识别系统中的应用和优化方法。

4. 手势识别模型训练

4.1 传统机器学习算法的应用

4.1.1 支持向量机(SVM)的原理和应用

支持向量机(Support Vector Machine, SVM)是一种在高维空间中寻找一个超平面的监督学习算法,用于分类和回归分析。其核心思想是找到一个分割超平面,使得不同类别的数据点被尽可能正确地分开,同时保持间隔最大化。

在手势识别中,SVM可以用于识别手势图像属于不同类别的情况。数据集首先被标记,然后用于训练模型。通过特征提取,SVM根据图像的特征向量来确定新的输入图像属于哪个类别。

一个基本的SVM模型在MATLAB中可以通过如下代码实现:

% 假设有一个已经标记好的特征向量和对应的标签数据集
features = [...]; % 特征向量
labels = [...];   % 对应的标签% 使用fitcsvm函数训练SVM模型
SVMModel = fitcsvm(features, labels);% 假设有一个新的特征向量,需要预测其类别
newFeature = [...];% 使用训练好的模型进行预测
prediction = predict(SVMModel, newFeature);% 显示预测结果
disp(['预测的类别是:', num2str(prediction)]);

4.1.2 决策树和随机森林的原理与实践

决策树是一种树形结构,其中每个内部节点代表一个特征的测试,每个分支代表测试的结果,而每个叶节点代表一个类别标签。

随机森林是决策树的一种集成学习方法。它构建多个决策树并将它们的结果进行投票或平均,以提高预测的准确性和稳定性。随机森林通过引入随机性来降低过拟合,并且容易并行化。

在MATLAB中创建随机森林模型的示例代码如下:

% 假设有一个已经标记好的特征向量和对应的标签数据集
features = [...]; % 特征向量
labels = [...];   % 对应的标签% 创建决策树分类器模板
tree = templateTree('NumVariablesToSample',round(sqrt(size(features,2))));% 使用模板训练随机森林模型
RFModel = fitcensemble(features, labels, 'Method', 'Bag', 'Learners', tree);% 使用训练好的模型进行预测
newFeatures = [...];
predictions = predict(RFModel, newFeatures);% 显示预测结果
for i = 1:length(predictions)disp(['第', num2str(i), '个预测的类别是:', num2str(predictions{i})]);
end

4.2 深度学习在手势识别中的角色

4.2.1 神经网络的基本结构和训练方法

神经网络是一种模拟生物神经网络进行信息处理的算法结构。基本的神经网络由输入层、隐藏层和输出层组成。每个层都由若干神经元组成,神经元之间通过权值连接。在训练过程中,神经网络通过不断地调整这些权值来拟合训练数据,从而实现对新数据的预测。

MATLAB提供了用于构建和训练神经网络的工具箱,如Deep Learning Toolbox。使用这个工具箱,开发者可以轻松构建各种复杂的神经网络结构。以下是构建一个简单的全连接神经网络的示例代码:

% 假设输入特征向量和标签向量
features = [...];
labels = [...];% 定义网络结构,例如一个具有一个隐藏层的全连接网络
layers = [ ...sequenceInputLayer(1)fullyConnectedLayer(10)reluLayerfullyConnectedLayer(numClasses)softmaxLayerclassificationLayer];% 设置训练选项,例如使用Adam优化器,训练迭代次数等
options = trainingOptions('adam', ...'MaxEpochs',100, ...'InitialLearnRate',0.01, ...'Verbose',false, ...'Plots','training-progress');% 训练网络
net = trainNetwork(features, labels, layers, options);% 使用训练好的网络进行预测
predictions = classify(net, newFeatures);

4.2.2 卷积神经网络(CNN)在手势识别中的优势

卷积神经网络(Convolutional Neural Networks, CNNs)是一种专门为处理具有类似网格结构的数据而设计的深度神经网络,例如时间序列数据和图像数据。CNN通过卷积层可以自动从图像中提取重要的特征,无需手动特征提取。这使得CNN特别适合解决图像识别问题,如手势识别。

CNN的架构通常包含卷积层、激活层、池化层和全连接层。通过卷积层提取局部特征,池化层降低特征维度,全连接层进行分类决策。CNN的训练过程与普通神经网络类似,但通常需要更多的训练数据和更长的训练时间。

一个简单的CNN模型在MATLAB中可以通过以下代码构建:

% 定义CNN网络结构
layers = [imageInputLayer([28 28 1]) % 假设输入图像大小为28x28像素convolution2dLayer(5, 20, 'Padding', 'same') % 5x5的卷积核,20个过滤器batchNormalizationLayer                      % 批量归一化层reluLayer                                    % 激活层maxPooling2dLayer(2, 'Stride', 2)            % 2x2最大池化层convolution2dLayer(5, 50, 'Padding', 'same') % 另一个卷积层batchNormalizationLayerreluLayerfullyConnectedLayer(10)                      % 全连接层,10个输出代表10类手势softmaxLayerclassificationLayer];% 设置训练选项
options = trainingOptions('sgdm', ...'InitialLearnRate', 0.01, ...'MaxEpochs',4, ...'Shuffle', 'every-epoch', ...'ValidationData', valData, ...'ValidationFrequency', 30, ...'Verbose', false, ...'Plots', 'training-progress');% 训练网络
net = trainNetwork(trainingImages, trainingLabels, layers, options);

4.2.3 CNN与其他深度学习模型在手势识别任务中的对比

在手势识别任务中,除了卷积神经网络(CNN),还有其他深度学习模型,如循环神经网络(RNN)、长短时记忆网络(LSTM)等。然而,由于手势识别通常涉及静态图像或视频序列,CNN在处理图像空间信息方面表现出更好的性能和效率。

CNN能有效地处理图像的局部特征和空间层级结构,而RNN和LSTM更适合处理时间序列数据。对于手势识别这样的视觉任务,CNN可以自动从原始像素数据中学习到具有代表性的特征,从而减少对手工特征工程的依赖。

CNN在手势识别中的优势可总结如下几点:

  • 自动特征提取:CNN可以自动学习图像的层次化特征,避免了复杂的手工特征设计过程。
  • 平移不变性:CNN对于图像中目标的平移具有一定的鲁棒性。
  • 参数共享:卷积层中参数共享的特性使得模型更高效,需要学习的参数更少。
  • 多层次抽象:通过多个卷积层和池化层,CNN可以构建从低级到高级的特征层次。

为了直观比较不同深度学习模型在手势识别中的性能,我们可以设计一个实验来比较CNN与其他模型的准确率和效率。下面是一个简单的比较实验的伪代码:

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPooling2D, Flatten# 加载并预处理数据
# ...# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2)# 构建CNN模型
cnn_model = Sequential([Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=shape),MaxPooling2D(pool_size=(2, 2)),Flatten(),Dense(128, activation='relu'),Dense(num_classes, activation='softmax')
])# 编译模型
cnn_model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])# 训练模型
cnn_model.fit(X_train, y_train, batch_size=32, epochs=10, validation_data=(X_test, y_test))# 评估模型
cnn_accuracy = cnn_model.evaluate(X_test, y_test)[1]
print(f"CNN Accuracy: {cnn_accuracy}")# 构建其他模型(例如RNN、LSTM)并重复上述过程
# ...# 比较不同模型的准确率和效率
# ...

在上述代码中,我们构建了一个CNN模型,并与可能用在手势识别中的其他模型(例如RNN、LSTM)进行比较。通过实验,我们可以从准确率和计算效率等方面评估CNN在手势识别任务中的优势。

在实际应用中,深度学习模型的选择通常取决于具体的应用场景和需求。如果手势识别应用需要处理复杂的时空信息,结合RNN或LSTM可能会得到更好的效果。然而,对于大多数静态图像和视频序列的识别问题,CNN仍然是一个非常有力的工具。通过不断的技术创新和算法优化,深度学习在手势识别领域的应用将会更加广泛和深入。

5. 实时应用实现

随着计算机视觉技术的进步,实时手势识别系统在交互式应用中变得越来越重要。这一章节将探讨如何设计实时手势识别系统,并针对实际应用中遇到的挑战提出解决方案。

5.1 实时手势识别系统的设计

在设计实时手势识别系统时,需要考虑的关键因素包括系统的响应时间、准确性和硬件资源限制。为了满足实时性需求,软硬件的选择至关重要。

5.1.1 实时系统的软硬件要求

硬件方面,处理器需要具备足够的速度来处理图像数据,同时保持低延迟。通常,现代的多核CPU和GPU是实时处理的理想选择。在摄像头的选择上,高速高分辨率摄像头能够捕捉更流畅的手势动作。

软件方面,优化后的算法是实现高效处理的关键。在MATLAB环境中,可以利用其内置的图像处理和神经网络工具箱,或者通过MATLAB的代码生成功能,将算法部署到支持硬件加速的平台上。

5.1.2 实时识别流程的优化策略

实时识别流程的优化策略可以包含以下几个方面:

  • 并行处理 :利用多核处理器并行化处理任务,可以显著提高处理速度。
  • 算法优化 :通过优化算法降低计算复杂度,例如使用快速霍夫变换来代替标准的霍夫变换。
  • 预处理简化 :省略一些对实时性要求不高的图像预处理步骤,减少处理时间。
% MATLAB伪代码:并行霍夫变换示例
parallelPool = parpool; % 启动并行池
for i = 1:numFrames% 并行处理每个帧的霍夫变换futures(i) = parfeval(@houghTransform, 1, imageFrame{i});
endfor i = 1:numFrames% 获取处理结果results(i) = fetchoutputs(futures(i));
end

5.2 实际场景中的应用挑战与解决方案

在实际应用中,实时手势识别系统面临着环境光线变化、复杂背景和手势速度与姿态变化等挑战。解决这些挑战需要对系统进行有针对性的优化。

5.2.1 环境光线与复杂背景的处理

环境光线的不稳定性和复杂背景会严重影响识别准确率。解决方案包括:

  • 环境光适应 :使用具有高动态范围(HDR)功能的摄像头,或采用实时曝光调整技术,减少因光线变化造成的图像质量下降。
  • 背景减除 :实时背景减除技术能够有效分离前景目标和背景,从而提高识别准确性。

5.2.2 手势速度与姿态变化的适应性

对于手势速度和姿态变化的适应性,可以采取以下措施:

  • 动态时间规整 :动态时间规整(DTW)技术能够处理不同速度的手势动作。
  • 三维手势模型 :通过三维模型来识别手势,可以提高对不同姿态的识别能力。
% MATLAB伪代码:动态时间规整手势识别
% 假设handGestureTemplate是一个标准的手势模板
currentGesture = extractHandGesture(currentFrame);
score = dtw(currentGesture, handGestureTemplate);
if score > thresholddisp('手势识别成功');
elsedisp('手势识别失败');
end

通过上述技术手段,我们可以构建出一个既快速又准确的实时手势识别系统,满足交互式应用的需求。这些策略的实现将有助于推动手势识别技术在各个领域的实际应用。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:手势识别是现代科技领域的一个重要应用方向,它在人机交互、虚拟现实和智能安防等多个领域中都发挥着关键作用。本项目详细介绍利用MATLAB这一工具结合计算机视觉理论,实现一个高效的手势识别系统。核心知识点包括MATLAB与计算机视觉的基础、数据集与预处理、特征提取、手势识别模型的建立和训练、以及实时应用等关键技术环节。项目包含清晰的代码注释,便于学习和复用,旨在通过实践学习提升个人技能和创新能力。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif


http://www.ppmy.cn/server/165457.html

相关文章

防火墙安全策略实验

拓扑 需求 1.VLAN2属于办公区;VLAN3属于生产区。 2.办公区PC在工作日时间(周一到周五,早8到玩6)可以正常访问OA server,其他时间不允许。 3.办公区PC可以在任意时刻访问web server。 4.生产去PC可以在任意时刻访问…

硬件产品经理:需求引力模型(DGM)

目录 1、DGM 模型简介 2、理论核心:打破传统线性逻辑 3、三大定律 第一定律:暗物质需求法则 第二定律:引力井效应 第三定律:熵减增长律 4、落地工具包 工具1:需求密度热力图 工具3:摩擦力歼灭清单…

机器人基础深度学习基础

参考: (1)【具身抓取课程-1】机器人基础 (2)【具身抓取课程-2】深度学习基础 1 机器人基础 从平面二连杆理解机器人学 正运动学:从关节角度到末端执行器位置的一个映射 逆运动学:已知末端位置…

51单片机入门_02_C语言基础0102

C语言基础部分可以参考我之前写的专栏C语言基础入门48篇 以及《从入门到就业C全栈班》中的C语言部分,本篇将会结合51单片机讲差异部分。 课程主要按照以下目录进行介绍。 文章目录 1. 进制转换2. C语言简介3. C语言中基本数据类型4. 标识符与关键字5. 变量与常量6.…

SQL Server中RANK()函数:处理并列排名与自然跳号

RANK()是SQL Server的窗口函数,为结果集中的行生成排名。当出现相同值时,后续排名会跳过被占用的名次,形成自然间隔。与DENSE_RANK()的关键区别在于是否允许排名值连续。 语法: RANK() OVER ([PARTITION BY 分组列]ORDER BY 排序…

Java三十天速成(java进阶篇)

Day 15 一、集合框架 1、集合框架图 2、数据结构: ①、逻辑结构; 在计算机科学中,逻辑结构是指数据元素之间的关系,它描述了数据元素之间的逻辑联系,而不是它们在计算机内存中的物理存储方式。逻辑结构可以分为以下…

Baklib引领内容中台与人工智能技术的创新融合之路

内容概要 在数字化转型的浪潮中,各行业正在面临前所未有的挑战与机遇。内容中台作为一种新的概念,逐渐进入了企业的视野,它不仅是一个技术平台,更是提供了整合和管理内容的新思路。从根本上,内容中台旨在提升企业对信…

安全漏洞扫描与修复系统的高质量技术详解

安全漏洞扫描与修复系统的高质量技术详解 在当今数字化时代,网络安全已成为企业运营和个人隐私保护的重中之重。安全漏洞扫描与修复系统作为网络安全防护的关键环节,扮演着“哨兵”的角色,通过全面检测与及时修复,筑牢软件安全的…