当前位置: 首页 > news >正文

计算机视觉6——相机基础

一、数字相机基本工作原理

(一)像素概念

数字相机生成二维图像,图像最小单元是像素。

每个像素对应三维世界中某个特定方向,像素值衡量某一时刻来自该方向的光照强度/颜色 ,即相机度量每个像素的光照情况并保存到对应像素位置。

(二)工作流程概述

光线进入相机,经镜头、光圈等元件后到达图像传感器。传感器将光学影像转换为电子信号,再经过模数转换器、后处理单元等进一步处理,最终生成并保存图像。
在这里插入图片描述

二、数字相机基本组成元素

(一)镜头与机身

镜头在成像过程中起关键作用,光线通过镜头聚焦到图像传感器上。机身则为其他部件提供支撑和保护,保证相机正常工作。

(二)快门

1.快门速度与曝光时间

快门通过调整快门速度,控制光线照射感光元件的时间,即曝光时间。

公式可表示为:

曝光量 = 光照强度×曝光时间。

若光照强度不变,曝光时间越长,曝光量越大,图像越亮。

例如,在拍摄夜景时,将快门速度调慢(如从1/125秒调整到1秒),更多光线进入相机,原本较暗的夜景会变得更亮。

2.快门工作过程

快门被触发后,后幕帘开启,接着前幕帘开启,曝光开始;然后后幕帘关闭,曝光结束,最后前幕帘关闭。

3.卷帘快门与全局快门

(1)卷帘快门

采用逐行扫描方式曝光,同一行像素同时记录,但不同行像素曝光时间点不同。当相机或物体快速移动时,由于不同行曝光时间差异,会引起畸变。比如拍摄快速行驶的汽车,在卷帘快门下,汽车可能会出现扭曲变形的情况。

在这里插入图片描述

(2)全局快门

所有像素在同一时间曝光,不会造成卷帘快门式的畸变。因此在3D重构任务(如手机拍照、SLAM)中表现更好,但造价更昂贵。
在这里插入图片描述

(三)光圈

1.光圈作用与孔径概念

光圈限制光线与光心的最大距离,其大小就是小孔的孔径。常见表示形式如f/1.8、f/2.8等,f值越小,光圈孔径越大,进入的光线越多。依次孔径面积减小为原来的一半
在这里插入图片描述

2.光圈与景深关系

(1)景深定义

景深(Depth-of-Field, DoF)指相机聚焦平面前后相对清晰的成像范围,描述空间中能清楚成像的距离范围。

在这里插入图片描述

(2)关系公式

景深公式为
o 2 − o 1 = 2 o f 2 c N ( o − f ) f 4 − c 2 N 2 ( o − f ) 2 o_{2}-o_{1}=\frac{2o f^{2} c N(o - f)}{f^{4}-c^{2} N^{2}(o - f)^{2}} o2o1=f4c2N2(of)22of2cN(of)
其中 f f f 是镜头焦距, c c c 是允许的最大模糊圈直径(与像素大小有关), N N N是光圈数( N = f / D N=f/D N=f/D), o 2 − o 1 o_{2}-o_{1} o2o1 表示景深范围。

光圈数 N N N 越小(光圈越大),景深越浅;光圈数越大,景深越深。

例如,拍摄人像时,使用大光圈(如f/1.8),背景会虚化,景深较浅,突出人物主体;拍摄风景时,常用小光圈(如f/8),使前景到背景都清晰,景深较深。

(四)图像传感器

1.基本功能与构成

图像传感器是将光学影像转换成电子信号的设备,感光元件由光敏单元阵列构成。

2.常见类型

(1)CCD(感光耦合器件)和CMOS(互补式金属氧化物半导体有源像素传感器)

二者是常见的图像传感器类型。CCD 噪声低、成像质量好,但成本高、功耗大;CMOS 成本低、功耗低、集成度高,在现代相机中应用广泛。

(2)彩色图像传感器分类
  • 3CCD传感器:通过双色棱镜分光,采用3块独立的CCD传感器分别测量三原色(红、绿、蓝)强度。入射光经分光器分光后,分别由蓝色、绿色、红色感光元件接收,最后合成彩色图像。
  • 拜尔(Bayer)传感器:一个像素点只对三原色光中的一种感光,通过在感光元件上排列RGB滤色器形成马赛克彩色滤色阵列。其滤色器排列比例通常为50%绿光 + 25%红光 + 25%蓝光,因为绿光对光照亮度影响更大。这种传感器需通过去马赛克内插恢复彩色图像,但在高频区域易引起摩尔纹、拉链噪声等失真。
  • Foveon X3传感器:每一像素点都有三重传感器,可分别对红、绿、蓝三色光进行感应,能更准确地还原色彩,但成本较高,应用相对较少。
(3)彩色图像生成原理 - RGB颜色模型

彩色图像生成采用RGB颜色模型,将红绿蓝三原色的色光以不同比例相加,产生各种色彩光。如红色光与绿色光混合可得到黄色光,红色光、绿色光和蓝色光以适当比例混合可得到白色光。

(五)模数转换器(A/D Converter)

模数转换器将图像传感器输出的模拟信号转换为数字信号,便于后续数字处理。

模拟信号在时间和幅度上是连续的,而数字信号是离散的。A/D 转换过程包括采样、量化和编码。

例如,对一个范围在0 - 5V的模拟电压信号进行采样,若采样频率为10Hz,即每秒采集10次信号值;量化时,将0 - 5V划分为8个等级(2³ = 8),每个等级对应一个数字值,如0 - 0.625V对应数字0,0.625 - 1.25V对应数字1等;最后进行编码,将量化后的数字值转换为二进制代码存储。

(六)后处理单元(Post - Processing Units)

后处理单元对数字信号进行多种处理,提升图像质量和视觉效果,主要处理步骤如下:

1.感光度ISO调整

ISO 衡量相机对光线的敏感程度。低ISO时,图片较暗,但噪声较少;高ISO时,图片较亮,但噪声较多。例如在光线充足的户外,使用ISO100可获得低噪点、高质量的图像;在光线较暗的室内,若要保证快门速度避免模糊,可能需提高ISO至800,但图像会出现更多噪点。

2.坏像素去除与黑色像素校准

坏像素是图像传感器中不能正常工作的像素,会在图像上形成亮点或暗点。通过特定算法检测并替换坏像素值,保证图像质量。黑色像素校准则是调整传感器中黑色像素的基准值,消除暗电流等因素带来的影响。

3.去马赛克(Demosaicing)

对于拜尔传感器,需将Bayer模式恢复成RGB三通道。通过分析相邻像素的颜色信息,利用插值算法估算每个像素点缺失的颜色值,重建完整的彩色图像,但该过程可能引入失真。

4.噪声去除(Noise Reduction)

采用滤波算法去除图像中的噪声,如高斯滤波、中值滤波等。高斯滤波通过对像素邻域内的像素值进行加权平均,平滑图像,减少噪声;中值滤波则用邻域内像素值的中值替代当前像素值,有效去除椒盐噪声等脉冲噪声。

5.白平衡(White Balancing)

纠正raw - RGB颜色值,使白色在不同光照条件下都能正确呈现,减少白色偏色。常见方法有基于灰度世界假设、白色补丁法等。灰度世界假设认为,在一幅图像中,所有颜色的平均亮度应该是灰色,以此调整颜色值;白色补丁法则是通过检测图像中的白色区域,以此为基准调整其他颜色。

6.颜色空间变换

  • 到CIE XYZ:把raw - RGB中颜色值变换到与设备无关的CIE XYZ颜色空间,便于后续处理和颜色管理。转换公式为
    [ R G B ] = [ 3.2404542 − 1.5371385 0.4985314 − 0.9692660 1.8760108 0.0415560 0.0556434 − 0.2040259 1.0572252 ] [ X Y Z ] \left[\begin{array}{l}R \\ G \\ B\end{array}\right]=\left[\begin{array}{ccc}3.2404542 & -1.5371385 & 0.4985314 \\ -0.9692660 & 1.8760108 & 0.0415560 \\ 0.0556434 & -0.2040259 & 1.0572252\end{array}\right]\left[\begin{array}{l}X \\ Y \\ Z\end{array}\right] RGB = 3.24045420.96926600.05564341.53713851.87601080.20402590.49853140.04155601.0572252 XYZ
    该公式基于颜色匹配实验得出,用于描述RGB颜色空间与CIE XYZ颜色空间的转换关系。
  • 到sRGB:从CIE XYZ转变到RGB颜色空间,并进行Gamma校正。Gamma校正用于抵消人眼感知和显示器显示的非线性。sRGB是一种常用的RGB颜色空间标准,在计算机显示器、打印机等设备广泛应用。

7.颜色调整

对不同类型、不同区域的颜色值进行调整,获得不同风格的图片。如标准模式注重真实还原色彩;人像模式可调整肤色,使其更自然;风景模式增强蓝天、绿树等颜色的饱和度和对比度,让画面更生动。

8.量化与JPEG压缩

  • 量化为8 bit:将图像像素值量化为8位二进制数(0 - 255),减少数据量。这意味着每个像素的颜色值被限制在256个级别内,在一定程度上会损失图像细节,但可大幅减小图像文件大小。
  • JPEG压缩:JPEG压缩采用多种技术,如离散余弦变换(DCT)、量化、行程长度编码(RLE)、差分编码和霍夫曼编码。首先将图像分成8x8的块,对每个块进行DCT变换,将空间域信号转换为频率域信号;然后对DCT系数进行量化,根据量化表对系数进行取舍和缩放,减少数据量;接着对量化后的系数进行行程长度编码和差分编码,进一步压缩数据;最后用霍夫曼编码对数据进行无损压缩,生成JPEG格式的图像文件。例如,一张未经压缩的1MB大小的图像,经过JPEG压缩后,可能减小到几十KB,方便存储和传输。

三、相机成像模型

(一)针孔相机模型

1.成像原理 - 小孔成像

针孔相机通过增加遮光板屏蔽多余光线,利用小孔成像原理成像。假设小孔是一个点,从物体每个点发出的光线只有一条能通过小孔,在成像平面上形成倒立的实像。

利用相似三角形原理,物距 Z 、像距 Z’ 、物高 X 、像高 x 之间关系为
X x = Z Z ′ \frac{X}{x}=\frac{Z}{Z'} xX=ZZ
例如,当物距为100cm,像距为20cm,物高为50cm时,根据公式可算出像高为10cm。
在这里插入图片描述

2.模型特点

针孔相机模型成像较锐化,但因光线通过小孔时损失较多,需要更多曝光时间。扩大孔径虽可减少曝光时间,但会使图像变模糊,因为更多光线通过孔径后会在成像平面上分散,无法精确聚焦。

(二)薄透镜相机模型

1.与针孔相机关系及原理

薄透镜相机模型是对针孔相机的近似。理想情况下,物点、像点、光心三点共线。光线通过透镜折射后聚焦在成像平面上,成像原理基于光的折射定律。与针孔相机不同,薄透镜可以汇聚光线,使成像更明亮清晰。
在这里插入图片描述

2.误差控制 - 光圈作用

实际中,光线与光心距离越远,成像平面上的点误差越大。采用光圈可屏蔽距离光心较远的光线,控制误差。光圈通过限制光线入射角度,减少像差,提高成像质量。

3.模型假设与实际偏差

薄透镜相机模型有三点假设:从同一物点发出的光线被聚焦于同一像点;所有像点位于同一平面上;物点、光心与像点三点共线。但在实际中,这些假设并非总是满足,导致成像结果不完美,出现像差。

(三)像差(Aberrations)

1.像差定义

真实成像过程中,3D场景到2D图像的投影关系与理想薄透镜相机模型中的投影关系的偏差称为像差。像差表现为图像的形变与失真,影响图像质量。

2.像差类型

  • 畸变(Distortion):与直线投影的偏差。直线投影指3D场景中的直线在2D投影中仍为直线,而畸变会使直线发生弯曲。常见畸变有桶形畸变(图像向外凸,如鱼眼镜头常见)、枕形畸变(图像向内凹)和胡子畸变等。
    在这里插入图片描述

  • 球面像差(Spherical aberrations):由于透镜球面折射率变化不均,造成平行于光轴的光线无法聚焦在同一点,导致成像模糊。例如,在简单的球面透镜中,边缘光线和中心光线的折射程度不同,不能汇聚于同一像点。
    在这里插入图片描述

  • 色相差(Chromatic aberrations):透镜折射率随光的波长而变化,同一物点发出的不同颜色光线无法聚焦于同一像点,使图像出现彩色边缘或重影。如在拍摄白色物体时,边缘可能会出现彩色条纹。
    在这里插入图片描述

  • 像散(Astigmatism ):水平和竖直方向的交点不同,导致图像在不同方向上的清晰度不一致。常见于非对称的透镜或光学系统中。
    在这里插入图片描述

  • 光晕/暗角(Vignetting):图像的外围部分亮度或饱和度比中心区域低。主要由一个或多个透镜的实际尺寸造成,后方元件遮蔽了前方元件的入射光线。不过,有时为了营造特定创意风格,也会刻意加入暗角效果。
    在这里插入图片描述

四、常见镜头种类

在这里插入图片描述

(一)长焦镜头(Telephoto)

视野较窄,透视变形最小,3D空间中平行线在2D图像中保持平行。常用于拍摄远处物体,如拍摄野生动物、体育赛事等,可将远处物体拉近,同时保持物体形状和比例相对不变。

(二)普通镜头(Normal)

焦距和视角适中,成像效果接近人眼视觉感受,透视效果自然,常用于日常拍摄,能真实还原场景的空间关系和物体形态。

(三)广角镜头(Wide - angle)

视野较宽广(70 - 120度),有透视变形,3D空间中的直线在2D图像大致是直线。适合拍摄风景、建筑等大场景,可容纳更多景物,增强画面的空间感和立体感,但会使前景物体看起来比背景物体更大。

(四)鱼眼镜头(Fisheye)

视野极宽(>130度),3D空间中的直线在2D图像中基本不再是直线,会产生强烈的畸变效果。常用于拍摄特殊创意的照片或全景图像,能创造出独特的视觉效果,如夸张的空间感和弯曲的线条。在拍摄城市全景时,鱼眼镜头可以将广阔的城市景观收纳在一幅画面中,建筑的线条会呈现出明显的弯曲,给人一种强烈的视觉冲击。

五、图像信号处理器(ISP)的深度解析

(一)ISP在相机系统中的核心地位

图像信号处理器(ISP)是相机成像流程的“智慧大脑”。在整个相机系统中,它连接着图像传感器采集的原始数据和最终输出的高质量图像。从数据流向来看,图像传感器捕捉到光学信号并转换为电信号后,ISP 立即对这些原始、未经处理的数据进行一系列复杂的运算和优化,其处理结果直接决定了最终图像的质量和视觉效果。在手机相机中,由于传感器尺寸相对较小,获取的原始图像存在较多噪声和色彩偏差,此时 ISP 的作用尤为关键,它能够通过各种算法对图像进行校正和增强,使最终照片满足用户的使用需求。

(二)ISP处理流程的详细剖析

1.感光度ISO调整的原理与影响

感光度ISO调整是ISP处理的起始关键步骤。

ISO数值反映了相机图像传感器对光线的敏感程度。

从原理上讲,低ISO时,传感器对光线的敏感度低,需要更长时间或更强的光线照射才能产生足够的电信号,因此图像较暗,但由于信号放大倍数小,噪声引入较少;高ISO时,传感器对光线更为敏感,短时间内就能产生较强的电信号,图像变亮,但信号在放大过程中会将噪声一同放大,导致图像噪声增多。

以拍摄夜景为例,当ISO设置为100时,曝光时间可能需要1秒才能获得正常亮度的图像,此时图像噪点少,画质细腻;若将ISO提高到3200,曝光时间可缩短至1/30秒,但图像会出现明显噪点,画质下降。

2.坏像素去除和黑色像素校准的技术细节

坏像素是图像传感器中存在的异常像素,它们可能是由于制造缺陷或长期使用导致的损坏。

坏像素去除算法通过检测像素的数值与周围像素的差异来识别坏像素,然后采用插值算法,利用周围正常像素的值来估算并替换坏像素的值。

黑色像素校准则是针对图像传感器在无光照情况下产生的暗电流进行处理。由于暗电流的存在,即使没有光线照射,像素也会产生一定的电信号,导致图像出现黑色偏色。校准过程通过测量暗电流的大小,并从原始图像数据中减去相应的值,以确保黑色像素在图像中呈现为真正的黑色。

3.去马赛克算法的原理与挑战

对于拜尔传感器,去马赛克是将其采集的单通道颜色信息恢复为完整的RGB三通道图像的关键步骤。

常见的去马赛克算法基于插值原理,通过分析相邻像素的颜色值来估算当前像素缺失的颜色分量。在一个由拜尔模式排列的像素矩阵中,对于只感测红色的像素,算法会参考周围感测绿色和蓝色的像素值,根据一定的权重计算出该像素位置的绿色和蓝色分量。

然而,在图像的高频区域,如物体边缘或纹理复杂的地方,像素之间的颜色变化剧烈,这给插值算法带来挑战,容易出现摩尔纹和拉链噪声等失真现象。为解决这些问题,研究人员不断提出新的算法,如基于局部双色先验的去马赛克算法,它利用图像局部区域内的颜色相关性来提高插值的准确性,减少失真。

4.噪声去除算法的分类与应用场景

噪声去除算法主要分为空间域滤波和频率域滤波两大类。

空间域滤波直接在图像的像素空间进行操作,常见的算法有均值滤波、高斯滤波和中值滤波。均值滤波通过计算像素邻域内的平均值来替换当前像素值,简单快速,但在去除噪声的同时会使图像边缘变得模糊;高斯滤波则根据高斯函数对邻域像素进行加权平均,对不同距离的像素赋予不同的权重,能够在一定程度上保留图像边缘;中值滤波用邻域内像素值的中值替代当前像素值,对于椒盐噪声等脉冲噪声有很好的抑制效果。

频率域滤波则是将图像转换到频率域,通过对频率成分进行处理来去除噪声,如小波变换滤波。不同的噪声去除算法适用于不同的场景,在拍摄低光照环境下的照片时,图像中可能同时存在高斯噪声和椒盐噪声,此时可以先使用中值滤波去除椒盐噪声,再使用高斯滤波进一步平滑图像,减少高斯噪声。

5.白平衡调整的实现方法与原理

白平衡调整的目的是使相机在不同的光照条件下都能准确还原白色,从而保证图像颜色的真实性。

实现方法主要有基于统计的方法和基于参考点的方法。

基于统计的灰度世界假设方法认为,在一幅图像中,所有颜色的平均亮度应该是灰色。算法通过计算图像的平均颜色值,并将其调整为灰色,进而对整个图像的颜色进行校正。

基于参考点的白色补丁法是通过在图像中检测出白色区域(白色补丁),将其作为参考标准,调整其他像素的颜色值,使白色区域在图像中呈现为真正的白色。

在实际应用中,由于光照条件复杂多变,单一的白平衡方法可能无法满足所有场景的需求,因此现代相机的ISP通常会结合多种方法来实现更准确的白平衡调整。

6.颜色空间变换的数学原理与意义

颜色空间变换是ISP处理中的重要环节,涉及到从相机特定的颜色空间(如raw - RGB)到与设备无关的颜色空间(如CIE XYZ),再到最终显示或打印所需的颜色空间(如sRGB)的转换。

从raw - RGB到CIE XYZ的转换基于颜色匹配实验得出的转换矩阵,这个矩阵描述了不同颜色空间之间的线性关系。从CIE XYZ到sRGB的转换则考虑了人眼视觉特性和显示设备的色域范围。其中,Gamma校正用于补偿人眼对亮度感知的非线性以及显示设备的非线性响应。

通过这些颜色空间变换,图像的颜色能够在不同的设备和环境中保持一致性和准确性,确保用户在不同的显示设备上看到的图像颜色基本相同。

7.颜色调整的艺术与技术结合

颜色调整是在保证图像颜色基本准确的基础上,根据不同的拍摄需求和创意风格对图像颜色进行优化和增强。

这既涉及到技术层面的颜色模型和算法,也需要考虑艺术审美因素。

在技术上,通过调整颜色的色相、饱和度和明度等参数来实现不同的效果。增加饱和度可以使图像颜色更加鲜艳生动,适合用于风景摄影;降低饱和度则可以营造出复古或低调的氛围,常用于人像摄影。

在艺术创作方面,不同的颜色组合和色调可以传达不同的情感和主题。暖色调(红色、橙色)可以营造出温馨、热烈的氛围,冷色调(蓝色、绿色)则给人以冷静、宁静的感觉。ISP通过提供多种预设的颜色调整模式(如标准、人像、风景等)以及允许用户自定义调整参数,满足了不同用户在不同场景下的创作需求。

8.量化与JPEG压缩的技术要点与权衡

量化是将图像像素值从高精度的数值转换为低精度的离散值,通常量化为8位二进制数(0 - 255)。

这一过程会损失一定的图像细节,但可以大幅减少数据量。在JPEG压缩中,量化是关键步骤之一。

量化过程通过量化表对离散余弦变换(DCT)后的系数进行取舍和缩放。量化表中的数值决定了对不同频率系数的保留程度,高频系数通常对应图像的细节信息,较小的量化步长可以保留更多细节,但会增加压缩后的文件大小;较大的量化步长则会丢弃更多高频信息,导致图像细节丢失,但能实现更高的压缩比。

JPEG压缩还结合了行程长度编码(RLE)、差分编码和霍夫曼编码等技术进一步压缩数据。在实际应用中,需要根据图像的使用场景和存储传输需求,权衡压缩比和图像质量之间的关系。

对于网络传输的图片,为了加快加载速度,可以适当提高压缩比,牺牲一定的图像质量;对于用于印刷或专业图像编辑的图片,则需要选择较低的压缩比,以保证图像的高质量。

相关文章:

计算机视觉6——相机基础

一、数字相机基本工作原理 (一)像素概念 数字相机生成二维图像,图像最小单元是像素。 每个像素对应三维世界中某个特定方向,像素值衡量某一时刻来自该方向的光照强度/颜色 ,即相机度量每个像素的光照情况并保存到对…...

入门到精通,C语言十大经典程序

以下是十个经典的C语言程序示例&#xff0c;这些程序涵盖了从基础到稍复杂的应用场景&#xff0c;适合初学者和有一定基础的开发者学习和参考。 1. Hello, World! 这是每个初学者学习编程时的第一个程序&#xff0c;用于验证开发环境是否正确配置。 #include <stdio.h>…...

【毕设】Python构建基于TMDB电影推荐系统

个性化电影推荐系统 这是一个基于FastAPI开发的现代化电影推荐系统&#xff0c;结合了协同过滤和深度学习技术&#xff0c;为用户提供个性化的电影推荐服务。 主要功能 &#x1f3af; 个性化电影推荐&#x1f50d; 电影搜索与浏览⭐ 电影评分系统&#x1f49d; 收藏夹功能&a…...

嵌入式常见概念的介绍

目录 一、MCU、MPU、ARM &#xff08;一&#xff09;MCU&#xff08;微控制器&#xff09; &#xff08;二&#xff09;MPU&#xff08;微处理器&#xff09; &#xff08;三&#xff09;ARM&#xff08;架构&#xff09; 二、DSP &#xff08;一&#xff09;数字信号处理…...

富兴号:拨云见日,打造普洱品质典范

在高端普洱茶市场的混沌格局中&#xff0c;价格与品质的天平严重失衡&#xff0c;消费者往往深陷 “高价却难觅好茶” 的困境。而新兴品牌富兴号强势崛起&#xff0c;奋力冲破这一迷局&#xff0c;致力于重塑 “号级茶” 的卓越品质&#xff0c;为茶叶赋予珍贵的品鉴与收藏价值…...

【WORD】批量将doc转为docx

具体步骤进行&#xff1a; 打开Word文档&#xff0c;按下AltF11快捷键&#xff0c;打开VBA编辑器。在VBA编辑器中&#xff0c;左侧的“项目资源管理器”窗口会显示当前打开的Word文档相关项目。找到您要添加代码的文档项目&#xff08;通常以文档名称命名&#xff09;&#xf…...

Linux内存管理架构(1)

0.内存空间架构 1.用户空间 在 Linux 系统中&#xff0c;应用程序通过 malloc() 申请内存&#xff0c;并通过 free() 释放内存时&#xff0c;底层的内存管理是由 glibc&#xff08;GNU C Library&#xff09;中的内存分配器实现的。glibc 的内存分配器负责与操作系统的内核交互…...

Ubuntu 各个常见长期支持历史版本与代号

文章目录 1. Ubuntu 历史版本与代号2. 查看当前系统版本 在 Ubuntu 操作系统里&#xff0c;每个版本都有一个别具特色的名字。该名字由一个形容词与一个动物名称构成&#xff0c;且形容词和动物名称的首字母是一样的。例如 “Warty Warthog&#xff08;长疣的疣猪&#xff09;”…...

信息安全管理与评估2021年国赛正式卷答案截图以及十套国赛卷

2021年全国职业院校技能大赛高职组 “信息安全管理与评估”赛项 任务书1 赛项时间 共计X小时。 赛项信息 赛项内容 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 平台搭建与安全设备配置防护 任务1 网络平台搭建 任务2 网络安全设备配置与防护 第二…...

在线上定位1G日志文件中的异常信息时,我这样做合适吗

1G级线上日志文件 的异常定位系统性方案 一、快速定位流程 import datetime import randomdef generate_springboot_log(file_name, file_size_gb):# 模拟Spring Boot日志内容log_levels ["INFO", "DEBUG", "WARNING", "ERROR"]cla…...

Transformer模型中的两种掩码

模型训练通常使用 批处理batch来提升训练效率。而实际中Transformer的输入序列&#xff08;如句子、文本片段&#xff09;长度往往不一致。为了让这些样本可以组成一个统一的形状 [B, T] 的张量给GPU进行并行计算提高效率&#xff0c;需要将较短的序列填充&#xff08;pad&…...

FastAPI-MPC正式发布,新的AI敏捷开发利器

FastAPI-MCP发布&#xff1a;零配置构建微服务控制平台的革命性实践 引言 在微服务架构日益复杂的今天&#xff0c;如何快速实现API接口的标准化管理与可视化控制成为开发者面临的核心挑战。近日&#xff0c;FastAPI-MCP工具的发布引发了技术社区广泛关注&#xff0c;其宣称能…...

Spring Boot 项目基于责任链模式实现复杂接口的解耦和动态编排!

全文目录&#xff1a; 开篇语前言一、责任链模式概述责任链模式的组成部分&#xff1a; 二、责任链模式的核心优势三、使用责任链模式解耦复杂接口1. 定义 Handler 接口2. 实现具体的 Handler3. 创建订单对象4. 在 Spring Boot 中使用责任链模式5. 配置责任链6. 客户端调用 四、…...

学习笔记八——内存管理相关

&#x1f4d8; 目录 内存结构基础&#xff1a;栈、堆、数据段Rust 的内存管理机制&#xff08;对比 C/C、Java&#xff09;Drop&#xff1a;Rust 的自动清理机制Deref&#xff1a;为什么 *x 能访问结构体内部值Rc&#xff1a;多个变量“共享一个资源”怎么办&#xff1f;Weak&…...

Deepseek Bart模型相比Bert的优势

BART&#xff08;Bidirectional and Auto-Regressive Transformers&#xff09;与BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;虽然均基于Transformer架构&#xff0c;但在模型设计、任务适配性和应用场景上存在显著差异。以下是BART…...

Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数(决策树、逻辑回归、KNN、SVM)

Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数&#xff08;决策树、逻辑回归、KNN、SVM&#xff09; 问题模板解题思路1. 导入必要的库2. 加载数据3. 划分训练集和测试集4. 数据预处理5. 定义算法及其参数6. 存储算法和对应指标7. 训练模型并计算指标8. 找…...

达梦数据库-学习-20-慢SQL优化之CTE等价改写

目录 一、环境信息 二、介绍 三、优化过程 1、原始SQL 2、源SQL执行时间 3、原始SQL执行计划 4、拆分问题 5、过滤性 6、统计信息收集 7、改写思路一 8、改写SQL一 9、改写SQL一的执行计划 10、改写思路二 11、改写SQL二 12、改写SQL二的执行计划 一、环境信息…...

软件生命周期模型:瀑布模型、螺旋模型、迭代模型、敏捷开发、增量模型、快速原型模型

目录 1.软件生命周期 2.软件生命周期模型 2.1瀑布模型 缺点【存在的问题】&#xff1a; 优点&#xff1a; 2.2 螺旋模型 特点&#xff1a; 2.3 迭代模型 优点&#xff1a; 2.4 敏捷开发 2.5 增量模型 增量模型一般和迭代模型一起使用&#xff1a; 2.6 快速原型模型…...

AI agents系列之全面介绍

随着大型语言模型(LLMs)的出现,人工智能(AI)取得了巨大的飞跃。这些强大的系统彻底改变了自然语言处理,但当它们与代理能力结合时,才真正释放出潜力——能够自主地推理、规划和行动。这就是LLM代理大显身手的地方,它们代表了我们与AI交互以及利用AI的方式的范式转变。 …...

Ubuntu 下通过 Docker 部署 WordPress 服务器

最近想恢复写私人博客的习惯&#xff0c;准备搭建一个wordpress。 在这篇博客中&#xff0c;我将记录如何在 Ubuntu 环境下通过 Docker 部署一个 WordPress 服务器。WordPress 是一个流行的内容管理系统&#xff08;CMS&#xff09;&#xff0c;它让用户能够轻松地创建和管理网…...

Elasticsearch生态

目录 Elasticsearch核心概念 Elasticsearch实现全文检索的原理 Elasticsearch打分规则 常用的查询语法 ES数据同步方案 Elasticsearch生态非常丰富&#xff0c;包含了一系列工具和功能&#xff0c;帮助用户处理、分析和可视化数据&#xff0c;Elastic Stack是其核心部分&a…...

idea配置spring MVC项目启动(maven配置完后)

springmvc项目在idea中配置启动总结&#xff0c;下面的内容是在maven配置好后进行的。 配置 Tomcat 服务器 添加 Tomcat 到 IDEA&#xff1a; File → Settings → Build, Execution, Deployment → Application Servers → 点击 → 选择 Tomcat Server。 指定 Tomcat 安装目…...

大模型微调数据集怎么搞?基于easydataset实现文档转换问答对json数据集!

微调的难点之一在与数据集。本文介绍一种将文档转换为问答数据集的方法&#xff0c;超级快&#xff01; 上图左侧是我的原文档&#xff0c;右侧是我基于文档生成的数据集。 原理是通过将文档片段发送给ollama本地模型&#xff0c;然后本地模型生成有关问题&#xff0c;并基于文…...

【排序算法】快速排序

目录 一、递归版本 1.1 hoare版本 问题1&#xff1a;为什么left 和 right指定的数据和key值相等时不能交换&#xff1f; 问题2&#xff1a;为什么跳出循环后right位置的值⼀定不⼤于key&#xff1f; 1.2 挖坑法 1.3 lomuto前后指针版本 二、快排优化 2.1 时间复杂度的计算 2.1.…...

爬虫:IP代理

什么是代理 代理服务器 代理服务器的作用 就是用来转发请求和响应 在爬虫中为何需要使用代理&#xff1f; 有些时候&#xff0c;需要对网站服务器发起高频的请求&#xff0c;网站的服务器会检测到这样的异常现象&#xff0c;则会讲请求对应机器的ip地址加入黑名单&#xff…...

JUC.atomic原子操作类原理分析

摘要 多线程场景下共享变量原子性操作除了可以使用Java自带的synchronized关键字以及AQS锁实现线程同步外&#xff0c;java.util.concurrent.atomic 包下提供了对基本类型封装类(AtomicBoolean|AtomicLong|AtomicReference|AtomicBoolean) 以及对应的数组封装。对于已有的包含…...

【XCP实战】AUTOSAR架构下XCP从0到1开发配置实践

目录 前言 正文 1.CAN功能开发 1.1 DBC的制作及导入 1.2 CanTrcv模块配置 1.3 Can Controller模块配置 1.4 CanIf模块配置 2.XCP模块集成配置配置 2.1.XCP模块配置 2.2.XCP模块的Task Mapping 2.3.XCP模块的初始化 3.在链接文件中定义标定段 4.编写标定相关的测试…...

【STM32】STemWin库,使用template API

目录 CubeMX配置 工程文件配置 Keil配置 STemwin配置 GUIConf.c LCDConf.c 打点函数 修改屏幕分辨率 GUI_X.c 主函数 添加区域填充函数 移植过程中需要一些参考手册&#xff0c;如下 STemwin使用指南 emWin User Guide & Reference Manual CubeMX配置 参考驱…...

Web开发-JavaEE应用动态接口代理原生反序列化危险Invoke重写方法利用链

知识点&#xff1a; 1、安全开发-JavaEE-动态代理&序列化&反序列化 2、安全开发-JavaEE-readObject&toString方法 一、演示案例-WEB开发-JavaEE-动态代理 动态代理 代理模式Java当中最常用的设计模式之一。其特征是代理类与委托类有同样的接口&#xff0c;代理类…...

C语言中while的相关题目

一、题目引入 以下程序中,while循环的循环次数是多少次? 二、代码分析 首先要明确的一点 while循环是当循环条件为真 就会一直循环 不会停止 while中i是小于10的 说明i可以取到0 1 2 3 4 5 6 7 8 9 进入第一个if判断i小于1为真时执行continue i0是为真的 执行continue 后…...

在Ubuntu下交叉编译 Qt 应用程序(完整步骤)

1、下载交叉编译器下&#xff1a; st-example-image-qt wayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh 通过网盘分享的文件&#xff1a;STM32项目 链接: https://pan.baidu.com/s/1hTvJT2r6czWCrKSuNEZCuw?pwdth7t 提取码: th7t --来自百度网盘超级…...

深入剖析 Axios 的 POST 请求:何时使用 qs 处理数据

在前端开发中&#xff0c;Axios 是一个广泛使用的用于发送 HTTP 请求的库&#xff0c;特别是在处理 POST 请求时&#xff0c;数据的处理方式会直接影响到请求能否正确被后端接收和处理。其中&#xff0c;使用 qs 库对数据进行处理是一个常见的操作点&#xff0c;本文将深入探讨…...

Python中NumPy的随机操作

在数据科学、机器学习和科学计算中&#xff0c;随机数的生成和操作是不可或缺的一部分。NumPy作为Python中强大的数值计算库&#xff0c;提供了丰富的随机数生成工具&#xff0c;能够满足从简单随机数生成到复杂概率分布模拟的多种需求。本文将深入探讨NumPy的随机操作功能&…...

从代码学习深度学习 - 多头注意力 PyTorch 版

文章目录 前言一、多头注意力机制介绍1.1 工作原理1.2 优势1.3 代码实现概述二、代码解析2.1 导入依赖序列掩码函数2.2 掩码 Softmax 函数2.3 缩放点积注意力2.4 张量转换函数2.5 多头注意力模块2.6 测试代码总结前言 在深度学习领域,注意力机制(Attention Mechanism)是自然…...

通过扣子平台工作流将数据写入飞书多维表格

1. 进入扣子平台&#xff0c;并创建工作流扣子 扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力&#xff0c;扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体&#xff0c;并发布到豆包、飞书等各个平台。https://www.coze.cn…...

python专题2-----用python生成多位,值均是数字的随机数

有很多方法可以用 Python 生成 多位随机数。我将向您介绍几个常用的方法&#xff0c;并解释它们的优缺点&#xff08;此处以4位随机数为例&#xff09;&#xff1a; 1. 使用 random.randint() 这是最简单直接的方法&#xff1a; import randomrandom_number random.randint…...

Mybatis的简单介绍

文章目录 MyBatis 简介 1. MyBatis 核心特点2. MyBatis 核心组件3. MyBatis 基本使用示例(1) 依赖引入&#xff08;Maven&#xff09;(2) 定义 Mapper 接口(3) 定义实体类(4) 在 Service 层调用 4. MyBatis 与 JPA/Hibernate 对比 MyBatis 简介 MyBatis 是一款优秀的 持久层框…...

山东大学软件学院创新项目实训(11)之springboot+vue项目接入deepseekAPI

因为该阶段是前后端搭建阶段&#xff0c;所以没有进大模型的专项训练&#xff0c;所以先用老师给的deepseek接口进行代替 且因为前端设计部分非本人负责且还没有提交到github上&#xff0c;所以目前只能先编写一个简易的界面进行功能的测试 首先进行创建model类 然后创建Cha…...

Qt绘图事件

目录 1.绘图事件 1.1绘图事件 1.2声明一个画家对象 2.画线、画圆、画矩形、画文字 2.1画线 ​编辑 2.2画圆 2.3画矩形 2.4画文字 3.设置画笔 3.1设置画笔颜色 3.2设置画笔宽度 3.3设置画笔风格 4.设置画刷 4.1填色 4.2设置画刷风格 5.绘图高级设置 5.1设置抗锯…...

Linux 内核 BUG: Android 手机 USB 网络共享 故障

众所周知, 窝日常使用 ArchLinux 操作系统, 而 ArchLinux 是一个滚动发行版本, 也就是各个软件包更新很快. 然而, 突然发现, Android 手机的 USB 网络共享功能 BUG 了. 经过一通排查, 发现是 Linux 内核造成的 BUG. 哎, 没办法, 只能自己动手修改内核代码, 修复 BUG 了. 本文…...

程序化广告行业(82/89):解锁行业术语,开启专业交流之门

程序化广告行业&#xff08;82/89&#xff09;&#xff1a;解锁行业术语&#xff0c;开启专业交流之门 在程序化广告这个充满活力与挑战的行业里&#xff0c;持续学习是我们不断进步的动力源泉。一直以来&#xff0c;我都期望能和大家一起深入探索这个领域&#xff0c;共同成长…...

Linux的网络配置的资料

目前有两种方式&#xff0c;network和NetworkManager。 network方式是在CentOS 6及更早版本中引入的配置方法&#xff0c;支持使用配置文件的方式管理网卡的配置。 NetworkManager是在CentOS 7及后续的版本中使用的配置方法&#xff0c;支持使用命令行和图形化界面的方式来管理…...

linux: 文件描述符fd

目录 1.C语言文件操作复习 2.底层的系统调用接口 3.文件描述符的分配规则 4.重定向 1.C语言文件操作复习 文件 内容 属性。所有对文件的操作有两部分&#xff1a;a.对内容的操作&#xff1b;b.对属性的操作。内容是数据&#xff0c;属性其实也是数据-存储文件&#xff0c…...

每天学一个 Linux 命令(16):mkdir

每天学一个 Linux 命令(16):mkdir 命令简介 mkdir(Make Directory)是 Linux 和类 Unix 系统中用于创建新目录的基础命令。它允许用户快速创建单个目录、多级嵌套目录,并能灵活设置目录权限。 主要用途 创建单个目录:快速生成新的空目录。递归创建多级目录:自动生成缺…...

Java微服务注册中心深度解析:环境隔离、分级模型与Eureka/Nacos对比

在微服务架构体系中&#xff0c;注册中心如同神经系统般承担着服务发现与健康管理的核心职能。本文将从生产环境实践出发&#xff0c;系统剖析注册中心的环境隔离策略、分级部署模型&#xff0c;并通过Eureka与Nacos两大主流组件的全方位对比&#xff0c;帮助开发者构建高可用服…...

c++:new关键字

目录 基本语法 使用举例 应用场景 使用 new 时的注意事项 基本语法 Type* ptr new Type;Type 是你要创建的类型&#xff08;可以是基本类型、结构体、类等&#xff09; new Type 表示在堆上创建一个 Type 类型的对象 ptr 是一个指针&#xff0c;指向这个对象 使用举例 …...

理解 MCP 协议的数据传递:HTTP 之上的一层“壳子

以下是以 CSDN 博客的风格记录你对 MCP 协议数据传递的理解和发现&#xff0c;内容涵盖了 MCP 协议基于 HTTP 的本质、JSON-RPC 的“壳子”作用&#xff0c;以及为什么熟悉 HTTP 协议就足以理解 MCP 的数据传递。文章面向技术社区&#xff0c;结构清晰&#xff0c;适合分享。 理…...

word中的mathtype公式编辑时,大(中)括号会存在很大的空白

如下所示&#xff0c;公式编辑的时候发现总会多一个空白&#xff0c;怎么删也删不掉 这主要是公式的分隔符问题&#xff0c;选择&#xff1a;“格式”-“分隔符对齐”&#xff0c;选择第三个可以消除下面的空白 点击“确认”&#xff0c;效果如下所示&#xff1a;...

【Java】查看当前 Java 使用的垃圾回收器

一、查询 Code import java.lang.management.GarbageCollectorMXBean; import java.lang.management.ManagementFactory; import java.util.Arrays; import java.util.List;public class GCTypeDetector {public static void main(String[] args) {List<GarbageCollectorMX…...

Linux编程c/c++程序

前言 我们Windows系统下的idea可以说是非常智能了&#xff0c;集成了各种开发工具&#xff0c;包括并不限于编辑器/编译器/调试器/自动化构建工具/版本控制工具……而在Linux系统中&#xff0c;每个组件之间是相互独立的&#xff0c;每个组件各司其职&#xff0c;共同协作完成…...