论文阅读:Split-Aperture 2-in-1 Computational Cameras (二)

news2024/12/23 13:11:01

Split-Aperture 2-in-1 Computational Cameras (一)

Coded Optics for High Dynamic Range Imaging

接下来,文章介绍了二合一相机在几种场景下的应用,首先是高动态范围成像,现有的快照高动态范围(HDR)成像工作已经证明,使用条纹状点扩散函数(PSF)可以将局部高动态范围信息光学编码到附近的像素中,这种 PSF 可以在光学层面将饱和区域的图像内容展开成不饱和,并且与附近的图像区域叠加。基于现有的快照 HDR 成像方法(如 Rouf 等人在 2011 年以及 Sun 等人在 2020 年提出的方法,这些方法已经成功地使用条纹状 PSF 将高动态范围信息编码到相邻像素中),文章继续按照这个概念开发一款二合一相机。我们首先优化自由设计相位的一半,使其与条纹状目标 PSF 对齐。

p ^ H D R ′ [ x , y ] = { 1 x = R 2 1 y = R 2 0 otherwise (16) \hat{p}_{HDR}'[x, y] = \left\{\begin{matrix} 1 & x = \frac{R}{2} \\ 1 & y = \frac{R}{2} \\ 0 & \text{otherwise} \end{matrix}\right. \tag{16} p^HDR[x,y]= 110x=2Ry=2Rotherwise(16)

p ^ H D R ′ [ x , y ] = 0.5 ∑ x , y p ^ H D R ′ [ x , y ] (17) \hat{p}_{HDR}'[x, y] = \frac{0.5}{\sum_{x, y} \hat{p}_{HDR}'[x, y] } \tag{17} p^HDR[x,y]=x,yp^HDR[x,y]0.5(17)

R R R 表示 DOE 的半径,用像素数表示,为了得到这种形状的 PSF,先优化如下的目标函数:

L p , H D R = L 1 ( p c o d e d , p H D R ′ ) = L 1 ( F ( h L , 0 , ∞ O , λ R G B ) , p H D R ′ ) (18) \mathcal{L}_{p, HDR} = \mathcal{L}_1(p_{coded}, p'_{HDR}) = \mathcal{L}_1(F(h_L, 0, \infty_{O},\lambda_{RGB}), p'_{HDR}) \tag{18} Lp,HDR=L1(pcoded,pHDR)=L1(F(hL,0,O,λRGB),pHDR)(18)

公式 18 表示无穷远处的物点通过 DOE 之后的 PSF 要和设计好的 pattern 尽可能一致。

同时文章也训练一个基于物理原理的条件重建网络来重建原始高动态范围场景。由于未调制的捕获图像提供了场景中未饱和区域的信息,因此这个重建网络可以专注于从条纹图案中恢复饱和的高光区域,这些条纹图案是通过将高光区域与设计的点扩散函数进行卷积而产生的。因此,重建高光区域变成了一个反卷积问题,文章使用一个架构类似于深度维纳反卷积网络(DWDN)的网络来解决,该网络首先对编码捕获进行基于特征的逆滤波,然后使用一个编码器-解码器网络进行图像重建。具体来说,这个过程可以形式化如下:

I r e c o n = G H D R ( I c o d e d ∣ I u n c o d e d , p c o d e d ) = D W D N ( I u n c o d e d , D ( I c o d e d , p c o d e d ) ) (19) \begin{aligned} I_{recon} & = G_{HDR}(I_{coded} | I_{uncoded}, p_{coded}) \\ & = DWDN(I_{uncoded}, D(I_{coded}, p_{coded})) \tag{19} \end{aligned} Irecon=GHDR(IcodedIuncoded,pcoded)=DWDN(Iuncoded,D(Icoded,pcoded))(19)

D D D 表示可微的维纳滤波器,HDR 的重建损失函数可以表示为:

L H D R = L 1 ( I r e c o n , I H D R ) + 0.1 L 1 ( I r e c o n M h i g h l i g h t , I H D R M h i g h l i g h t ) (20) \mathcal{L}_{HDR} = \mathcal{L}_1(I_{recon}, I_{HDR}) + 0.1 \mathcal{L}_1(I_{recon}M_{highlight}, I_{HDR}M_{highlight}) \tag{20} LHDR=L1(Irecon,IHDR)+0.1L1(IreconMhighlight,IHDRMhighlight)(20)

其中, I H D R I_{HDR} IHDR 表示高动态范围成像的 GT。

Optically Coded Hyperspectral Imaging

为了实现多光谱的编码,文章通过有意引入色差将 31 通道的高光谱信息编码到 3 通道的 RGB 中。编码光圈的一半采用类似光栅的相位分布来调制入射光,从而在焦点处引起与波长相关的横向偏移。从而能够根据相对于无像差的未编码捕获的偏移量来重建高光谱信息。更具体地说,我们的设计过程从具有 16 个 DOE 像素宽的狭缝的光栅分布开始,因为其第一正级衍射对于每 10 纳米的波长变化大约向左偏移 1 个像素。然后,我们优化这个分布以增加第一正级中的总强度,同时最小化其他区域(如零级或更高阶衍射位置)的能量分布。为此,文章将目标点扩散函数设置为

p H S ′ ( λ ) = Δ ( G E ( λ ) ) = δ ( tan ⁡ ( sinh ⁡ ( λ 16 δ D O E ) ) f δ c a m e r a ) (21) p'_{HS}(\lambda) = \Delta(GE(\lambda)) = \delta (\tan(\sinh(\frac{\lambda}{16 \delta_{DOE}}))\frac{f}{\delta_{camera}}) \tag{21} pHS(λ)=Δ(GE(λ))=δ(tan(sinh(16δDOEλ))δcameraf)(21)

Δ ( x , y ) \Delta(x, y) Δ(x,y) 表示狄拉克 δ \delta δ 函数, δ D O E , δ c a m e r a \delta_{DOE}, \delta_{camera} δDOE,δcamera 表示像素间距, G E ( λ ) GE(\lambda) GE(λ) 根据光栅方程计算具有 16 个 DOE(衍射光学元件)像素狭缝宽度的光栅分布的第一正级位置。为了获得这样的 PSF 形态,需要对 DOE 的形状进行优化:

L p , H S = L 1 ( p c o d e d , p H S ′ ) = L 1 ( F ( h L , 0 , ∞ O , λ H S ) , p H S ′ ) (22) \mathcal{L}_{p, HS} = \mathcal{L}_1(p_{coded}, p'_{HS}) = \mathcal{L}_1(F(h_L, 0, \infty_{O},\lambda_{HS}), p'_{HS}) \tag{22} Lp,HS=L1(pcoded,pHS)=L1(F(hL,0,O,λHS),pHS)(22)

λ H S ∈ [ 400 , 700 ] n m \lambda_{HS} \in [400, 700] nm λHS[400,700]nm 波段的波长。

与重建高动态范围的任务类型,高光谱的重建也是用未编码的传统 RGB 图像作为引导条件,对每个波长 λ H S \lambda_{HS} λHS 下的编码信息进行重建
I u n c o d e d = c l i p ( ( p u n c o d e d ∗ I H S ) T s + n L , 0 , 1 ) I c o d e d = c l i p ( ( p c o d e d ∗ I H S ) T s + n R , 0 , 1 ) I r e c o n = G H S ( I c o d e d ∣ I u n c o d e d , p c o d e d ) = D W D N ( I u n c o d e d , { D ( I c o d e d , p c o d e d ( λ ) ) } λ ∈ λ H S ) (23) \begin{aligned} I_{uncoded} & = clip((p_{uncoded} \ast I_{HS})T_s + n_L, 0, 1) \\ I_{coded} & = clip((p_{coded} \ast I_{HS})T_s + n_R, 0, 1) \\ I_{recon} & = G_{HS}(I_{coded} | I_{uncoded}, p_{coded}) \\ & = DWDN(I_{uncoded}, \{D(I_{coded}, p_{coded}(\lambda))\}_{\lambda \in \lambda_{HS}}) \tag{23} \end{aligned} IuncodedIcodedIrecon=clip((puncodedIHS)Ts+nL,0,1)=clip((pcodedIHS)Ts+nR,0,1)=GHS(IcodedIuncoded,pcoded)=DWDN(Iuncoded,{D(Icoded,pcoded(λ))}λλHS)(23)

其中, T s T_s Ts 表示 RGB sensor 的光谱响应曲线,重建网络的监督以最小化 RGB 空间中的感知损失(LPIPS)以及高光谱空间中的光谱角映射器(SAM)距离([Kuching 2007]),可以表示为:

L H S = L p e r c ( I r e c o n T s , I H S T s ) + S A M ( I r e c o n , I H S ) (24) \mathcal{L}_{HS} = \mathcal{L}_{perc}(I_{recon}T_s, I_{HS}T_s) + SAM(I_{recon}, I_{HS}) \tag{24} LHS=Lperc(IreconTs,IHSTs)+SAM(Irecon,IHS)(24)

Monocular Depth from Coded Defocus

虽然典型的单目深度估计方法依赖于学习到的图像空间深度线索,如相对物体大小来估计物体的相对位置,但一系列的研究工作(如 Chang 和 Wetzstein 在 2019 年的研究;Haim 等人在 2018 年的研究;Ikoma 等人在 2021 年的研究;Wu 等人在 2019 年的研究)采用了基于散焦的深度估计方法,通过设计的点扩散函数(PSF)利用衍射光学元件(DOE)对绝对深度进行光学编码。我们研究了一种二合一的计算相机,该相机以依赖于深度的同心环作为目标 PSF,遵循了 Haim 等人在 2018 年的设计,但以同时捕获的单目 RGB 图像为条件。具体来说,对于 1 - 5 米范围内的不同深度 z k z_k zk,我们将目标 PSF 设置为半径为的半圆,每 20 厘米半径增长 1 个传感器像素。

p d e p t h ′ ( z ) = H C i r ( − 5 z + 25 ) (25) p'_{depth}(z) = HCir(-5z + 25) \tag{25} pdepth(z)=HCir(5z+25)(25)

其中 HCir® 表示半径为 r 像素的半圆和HCir(0) 是狄拉克峰。我们建议优化 DOE 相位模式 h h h 为半环模式使其有效地聚焦光

L p , d e p t h = ∑ k ∑ x , y ( F ( h L , 0 , z k , λ R G B ) M ( p d e p t h ′ ( z k ) , δ ) ) [ x , y ] (26) \mathcal{L}_{p, depth} = \sum_{k} \sum_{x, y} (F(h_L, 0, z_k, \lambda_{RGB}) M(p'_{depth}(z_k), \delta)) [x, y] \tag{26} Lp,depth=kx,y(F(hL,0,zk,λRGB)M(pdepth(zk),δ))[x,y](26)

其中, M ( p d e p t h ′ ( z ) , δ ) M(p'_{depth}(z), \delta) M(pdepth(z),δ) 表示一个掩码,标识出距离目标圆环 p d e p t h ′ ( z ) p'_{depth}(z) pdepth(z) 大于 δ \delta δ (1 个像素) 的位置,为了模拟捕获过程,我们将场景划分为多个深度平面,从 1 米到 5 米以 0.25 米为间隔,并且将每个深度层与相应的点扩散函数(PSF)进行卷积。

I u n c o d e d = c l i p ( ∑ z ∈ 1 , 1.25 , . . . 5 ( p u n c o d e d ∗ ( I d e p t h M ( z ) ) ) + n L , 0 , 1 ) I c o d e d = c l i p ( ∑ z ∈ 1 , 1.25 , . . . 5 ( p c o d e d ∗ ( I d e p t h M ( z ) ) ) + n L , 0 , 1 ) (27) \begin{aligned} I_{uncoded} & = clip( \sum_{z \in {1,1.25,...5}} (p_{uncoded} \ast (I_{depth}M(z))) + n_L, 0, 1) \\ I_{coded} & = clip( \sum_{z \in {1,1.25,...5}} (p_{coded} \ast (I_{depth}M(z))) + n_L, 0, 1) \tag{27} \end{aligned} IuncodedIcoded=clip(z1,1.25,...5(puncoded(IdepthM(z)))+nL,0,1)=clip(z1,1.25,...5(pcoded(IdepthM(z)))+nL,0,1)(27)

M ( z ) M(z) M(z) 表示不同深度的掩码,将 I d e p t h I_{depth} Idepth 图像暗不同深度分成不同的图层。

对于条件重建,使用 ResNet18 分别从两个捕获中提取特征,然后将它们输入共享解码器。网络使用如下的损失函数:

L d e p t h = L 1 ( Z r e c o n , Z g t ) + L g r a d ( Z r e c o n , Z g t ) (28) \mathcal{L}_{depth} = \mathcal{L}_1(Z_{recon}, Z_{gt}) + \mathcal{L}_{grad}(Z_{recon}, Z_{gt}) \tag{28} Ldepth=L1(Zrecon,Zgt)+Lgrad(Zrecon,Zgt)(28)

可以看出,文章用到了 L1 损失和梯度损失。

Assessment

接下来介绍实验,文章在仿真和真实实验中对所提出的方法进行评估。我们专注于上一节中描述的三个计算光学应用:从光学编码的条纹图像中恢复高动态范围(HDR)图像、使用编码散焦深度进行单目深度成像以及通过色差进行高光谱图像重建。

Experimental Prototype

在这里插入图片描述

  • 图4

为了在真实实验中评估该方法,文章为每个应用制造了一个量身定制的衍射光学元件(DOE),并构建了一个二合一相机原型系统,如图 4 所示。DOE 的制造涉及在熔融石英晶圆上进行 16 级光刻工艺,详情请见补充文件。该 DOE 直径为 8.64 毫米,并采用铬层作为光阑。我们的相机设置包括一台佳能 EOS 5D Mark IV 双像素相机,搭配佳能 EF 50mm f/1.8 STM 镜头。虽然 DOE 设计理想情况下适合放置在目标相机的光圈平面上,但我们选择设计并 3D 打印一个定制的附加 DOE 支架,以避免修改商用多元素复合镜头或构建 4F 中继系统的复杂性。该支架将衍射光学元件(DOE)直接放置在镜头保护玻璃旁边,最大限度地减少了 DOE 与光圈平面之间的传播距离。支架上的标记与相机机身对齐,以确保 DOE 与镜头中心对齐。

我们接着对相机系统中左视图和右视图之间的串扰进行校准。理想情况下,每个像素的两个光电二极管应该独立地记录来自光圈两个半圆盘的光。然而,在实际中,这种分离并不完美,特别是对于离轴光。因此,一些原本应该被光电二极管一侧记录的光错误地记录在了另一侧,导致两次捕获之间出现串扰,如图 5 所示。这种串扰可以形式化表示为

I L ∗ = ( 1 − α l → r ) I L + α r → l I R I R ∗ = ( 1 − α r → l ) I R + α l → r I L (29) \begin{aligned} I_{L}^{*} & = (1 - \alpha_{l \to r}) I_L + \alpha_{r \to l} I_R \\ I_{R}^{*} & = (1 - \alpha_{r \to l}) I_R + \alpha_{l \to r} I_L \tag{29} \end{aligned} ILIR=(1αlr)IL+αrlIR=(1αrl)IR+αlrIL(29)

其中, I L , I R I_L, I_R IL,IR 表示系统理论上捕获到的信号, I L ∗ , I R ∗ I_{L}^{*}, I_{R}^{*} IL,IR 表示系统实际捕获到的信号, α l → r , α r → l \alpha_{l \to r}, \alpha_{r \to l} αlr,αrl 表示相邻的左右两个像素之间的串扰百分比。

考虑到串扰比取决于视场角而非比场景本身,我们希望校准 α l → r , α r → l \alpha_{l \to r}, \alpha_{r \to l} αlr,αrl 并且消除它的影响。我们首先挡住光圈的左半部分(设置 R=0)并捕获一堵白墙。在这些条件下,捕获可以简化为

I L ∗ = ( 1 − α l → r ) I L I R ∗ = α l → r I L (30) \begin{aligned} I_{L}^{*} & = (1 - \alpha_{l \to r}) I_L \\ I_{R}^{*} & = \alpha_{l \to r} I_L \tag{30} \end{aligned} ILIR=(1αlr)IL=αlrIL(30)

通过上面的式子,可以得到 α l → r \alpha_{l \to r} αlr 为:

α l → r = I R ∗ I L ∗ + I R ∗ (31) \alpha_{l \to r} = \frac{I_{R}^{*}}{I_{L}^{*} + I_{R}^{*}} \tag{31} αlr=IL+IRIR(31)

通过同样的实验,可以得到 α r → l \alpha_{r \to l} αrl,然后将这个式子代入式 (29) 可以得到最终理想的捕获信号:

I c o d e d = I R = I R ∗ − α l → r I L ∗ 1 − α r → l 2 − α r → l α l → r + α l → r 2 I u n c o d e d = I L = I L ∗ + I R ∗ − I R (32) \begin{aligned} I_{coded} = I_{R} & = \frac{I_{R}^{*} - \alpha_{l \to r} I_{L}^{*}}{1 - \alpha_{r \to l}^2 - \alpha_{r \to l}\alpha_{l \to r} + \alpha_{l \to r}^2} \\ I_{uncoded} = I_{L} & = I_{L}^{*} + I_{R}^{*} - I_{R} \tag{32} \end{aligned} Icoded=IRIuncoded=IL=1αrl2αrlαlr+αlr2IRαlrIL=IL+IRIR(32)

由于对于我们的设置来说,串扰比率是恒定的,所以这种校准是一次性的步骤。我们在传感器的中心 3072×3072 像素区域进行这种校准过程,并且对于每次捕获(无论是高动态范围成像、深度估计还是高光谱成像)都使用相同的串扰比率。

在这里插入图片描述

-图 5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2203603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FreeRTOS——任务创建(静态、动态创建)、任务删除以及内部实现剖析

任务创建和删除的API函数 任务的创建和删除本质就是调用FreeRTOS的API函数 API函数描述xTaskCreate()动态方式创建任务xTaskCreateStatic()静态方式创建任务vTaskDelete()删除任务 动态创建任务:任务的任务控制块以及任务的栈空间所需的内存,均有FreeR…

考研代码题:10.10 汉诺塔 爬楼梯 取球 猴子吃桃

汉诺塔 C语言 - 汉诺塔详解&#xff08;最简单的方法&#xff0c;进来看看就懂&#xff09;_汉诺塔c语言程序详解-CSDN博客 #include <stdio.h>void move(char begin,char end){printf("%c->%c\n",begin,end); } //begin开始杆&#xff0c;help辅助杆&am…

BUU刷题-Pwn-axb_2019_mips(MIPS跳转bss段执行shellcode)

解题所涉知识点&#xff1a; 泄露或修改内存数据&#xff1a; 堆地址&#xff1a;栈地址&#xff1a;libc地址&#xff1a;BSS段地址&#xff1a; 劫持程序执行流程&#xff1a;MIPS_ROP 获得shell或flag&#xff1a;[[MIPS_Shellcode]] && [[MIPS劫持RA寄存器]] 题…

开源文件管理工具File Browser本地部署并一键发布公网远程传输文件

文章目录 前言1.下载安装File Browser2.启动访问File Browser3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 File Browser是一个开源的文件管理器和文件共享工具&#xff0c;它可以帮助用户轻…

波轮洗衣机、滚筒洗衣机的清理方法

洗衣机主要分为波轮式、滚筒式这2种&#xff0c;波轮式是水平旋转的&#xff0c;滚筒式是竖直旋转的。波轮式洗衣机一般比较小&#xff0c;用于2至3个人的衣服清理&#xff1b;而滚筒式洗衣机则比较大&#xff0c;用于5至6人的衣服清理。 图(1) 波轮洗衣机 图(2) 滚筒洗衣机 不…

龋齿牙齿病变图像分割系统源码&数据集分享

龋齿牙齿病变图像分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DCNV3&#xff06;yolov8-seg-RepHGNetV2等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glo…

发送邮件和随机码的生成

类视图和方法视图区别&#xff1a; 不需要装饰器&#xff0c;只需要继承MethodView,需要使用什么方式就写对应的方法名称&#xff0c;它就能自动匹配 app.route("/delete/",methods["DELETE"])这些就不用写了 但是不写装饰器并不意味着不写路由了&#xff…

高效美发店运营:SpringBoot管理系统详解

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理美发门店管理系统的相关信息成为必然。开发…

k8s部署学习

8s的架构 一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成&#xff0c;每个节点上都会安装不同的组件 1 master&#xff1a;集群的控制平面&#xff0c;负责集群的决策 ApiServer : 资源操作的唯一入口&#xff0c;接收用户输入的命令&#xff0c;提供认证、…

MediaPlayer视频播放流程

MediaPlayer视频播放流程(基于Android8.0) 1. MediaPlayer源码分析 1.0 public class MediaPlayer extends PlayerBase implements SubtitleController.Listener, VolumeAutomation, AudioRoutingMediaPayer继承自PlayerBase类&#xff0c;分别实现了SubtitleController Volume…

运筹说 第126期 | 存储论经典例题讲解——随机存储模型

通过上一期&#xff0c;我们已经学习了确定型存储论模型在经济管理中的应用&#xff0c;但其忽略了现实中的随机性和不确定性因素&#xff0c;本期小编选择了一些考虑不确定因素的随机存储模型的典型例题&#xff0c;进行详细讲解。 单周期的随机型存储模型 单周期的随机型存储…

基于springboot模式花店网站的设计与实现(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

《Linux从小白到高手》进阶实操篇:详解Linux系统调优之服务器硬件优化

List item 本篇介绍Linux服务器硬件调优。硬件调优主要包括CPU、内存、磁盘、网络等关键硬件组。 1. CPU优化 选择适合的CPU&#xff1a; –根据应用需求选择多核、高频的CPU&#xff0c;以满足高并发和计算密集型任务的需求。CPU缓存优化&#xff1a; –确保CPU缓存&#x…

【onnx模型转kmodel】记录和踩坑——nncase-v1.9使用

最近几天一直在找相关资料&#xff0c;坑太多&#xff0c;也可能我菜的成分更多一点吧&#xff01;记录下来&#xff0c;以观后用&#xff1b; 背景 我手里有一个正点原子的K210的开发板&#xff1b; 刚刚安装了wsl2下的ubuntu22.04 我手里有正点原子的源码&#xff0c;但是…

【Redis入门到精通十一】Redis集群

目录 集群 1.三种分片算法 1.哈希求余算法 2.一致性哈希算法 3.哈希槽分区算法 2.搭建集群环境 3.集群故障处理 4.集群扩容 集群 上篇文章我们了解Redis哨兵的相关操作&#xff0c;使用哨兵只是解决了主节点瘫痪&#xff0c;从节点不能自动变为主节点的问题&#xff0c;…

[ComfyUI]太赞了!阿里妈妈发布升级版 Flux 图像修复模型,更强细节生成,更高融合度以及更大分辨率支持

小伙伴们还记得我们之前介绍的阿里妈妈发布的 Flux 的 ControlNet 图像修复模型不&#xff0c;之前发布的是 Alpha 早期测试版本&#xff0c;说实话和 Flux 原生的重绘其实差距不大&#xff0c;有些方面甚至还是原生的效果更好。 但是现在&#xff0c;Alpha 的升级版本 Beta 版…

基于java的零食销售系统(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

qt小练习

制作简易闹钟 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> //定时器类 #include <QDebug> //信息调试类 #include <QMessageBox> //消息对话框类 #include <QTime> //时间类 #include…

【C语言复习】常见概念(零基础)

【C语言复习】常见概念 1、C语言是什么&#xff1f;2、C语言的历史和辉煌3、 编译器的选择VS20223.1编译和链接3.2编译器的对比3.3 VS2022 的优缺点 4、VS项⽬ 和 源⽂件、头⽂件介绍5、第一个C语言程序6、main函数&#xff08;主函数&#xff09;7、printf和库函数8、关键字介…

基于springboot的大学生体质测试管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的大学生体质测试管理系统1拥有三种角色 管理员&#xff1a;学生管理、教师管理、日常运行管理、运动分析管理、成绩管理、论坛管理、轮播图管理等 教师&#xff1a;登录…