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

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.mzph.cn/pingmian/55890.shtml

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

相关文章

多种方式确定Linux是CentOS还是Ubuntu

目录 前言正文 前言 对应的基本知识比较少,以下只是记录总结 由于目前使用的是centos,后续找到linux会对应补充 正文 要确定Linux系统是CentOS还是Ubuntu,可以通过以下几种方式进行分析 一、查看发行版信息文件: CentOS&…

校园系统校园小程序 论坛校园圈系统失物招领、闲置二手、跑腿外卖等校园圈子系统应该具备有哪些功能

针对校园系统、校园小程序、论坛校园圈系统以及失物招领、闲置二手、跑腿外卖等具体功能,一个综合性的校园圈子系统应该具备以下主要功能: 前后端源码查看 一、基础功能 用户注册与登录 提供用户注册和登录功能,支持学生身份验证、手机号验…

WireShark过滤器

文章目录 1. **捕获过滤器(Capture Filter)**语法格式:常见捕获过滤器示例: 2. **显示过滤器(Display Filter)**语法格式:常见比较运算符:常见显示过滤器示例:逻辑操作符…

Linux系统:apt-get update 和apt update区别

apt-get update 和apt update区别 ‌apt-get update和apt update的主要区别在于它们所属的命令集以及在现代Ubuntu系统中的使用推荐。‌ ‌所属命令集‌:apt-get update是apt-get命令的一部分,而apt update是apt命令的一部分。apt是apt-get的替代工具&am…

苹果秋季盛典:iPhone 16系列引领未来科技潮流

9月10日,苹果公司在众人瞩目中举办了2024年的秋季特别活动,发布了备受期待的iPhone 16系列。 尽管网络发布会已经持续了一整年,但熬夜观看的果粉们仍然热情不减,因为每一次苹果的新品发布都代表着科技界的一次重大飞跃。 iPhone …

Android常用组件

目录 1. TextView 控件 常用属性: 1)android:text: 2)android:gravity: 3)android:textSize: 4)android:textColor: 5)android:background: 6)android:padding: 7)android:layout_width 和 andr…

嵌入式C语言中链表的插入实现方法

大家好,今天主要给大家分享一下,如何使用链表插入功能。 第一:嵌入式中链表具体实现 链表查找思路:从链表的a0起,判断是否为第i结点,若是则返回该结点的指针,否则查找下一结点,依次类推。 具体代码的链表插入实现: linklist Locate(linklist_t h, data_t x) { …

Android车载——VehicleHal运行流程(Android 11)

1 概述 本篇主要讲解VehicleHal的主要运行流程,包括设置属性、获取属性、订阅属性、取消订阅、持续上报属性订阅等。 2 获取属性流程 2.1 获取属性流程源码分析 作为服务注册到hwServiceManager中的类是VehicleHalManager,所以,CarServic…

WOFOST模型与PCSE模型

农作物生长模型概述 1、介绍农作物生长模型的用途和应用领域 2、比较WOFOST模型和PCSE模型的特点和优势 数据准备 1、气象数据: 数据类型:温度、降水、湿度、风速等气象要素数据。 数据格式:时间序列数据,通常以日为单位。 …

使用 Vertex AI Gemini 模型和 Elasticsearch Playground 快速创建 RAG 应用程序

作者:来自 Elastic Jeff Vestal 在这篇博客中,我们将使用 Elastic 的 Playground 和 Vertex AI API 将 Elasticsearch 连接到 Google 的 Gemini 1.5 聊天模型。将 Gemini 模型添加到 Playground 使 Google Cloud 开发人员能够快速建立 LLM、测试检索、调…

宠物空气净化器怎么选?希喂、霍尼韦尔、美的宠物哪款除毛好?

身为养宠五年的资深铲屎官,最近收到了很多新手养宠朋友关于宠物空气净化器的挑选疑问。宠物空气净化器作为宠物领域目前最火热的产品,谈论度一直很高,评价也褒贬不一。双十一购物节又即将到来,大家都想赶上这一波优惠活动。 铺天盖…

低代码工单管理app评测,功能与效率解析

预计到2030年,低代码平台市场将达1870亿美元。ZohoCreator助力企业构建定制化软件应用,以建筑行业工作订单管理app为例,简化流程,提升管理效率,降低成本。其用户友好界面、自动化管理、跨平台使用及全面报告功能受企业…

基于差分进化灰狼混合优化的SVM(DE-GWO-SVM)数据预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 DE优化 4.2 GWO优化 5.完整程序 1.程序功能描述 基于差分进化灰狼混合优化的SVM(DE-GWO-SVM)数据预测算法matlab仿真,对比SVM和GWO-SVM。 2.测试软件版本以及运行结果展示…

实施威胁暴露管理、降低网络风险暴露的最佳实践

随着传统漏洞管理的发展,TEM 解决了因攻击面扩大和安全工具分散而产生的巨大风险。 主动式 TEM 方法优先考虑风险并与现有安全工具无缝集成,使组织能够在威胁被有效利用之前缓解威胁。 为什么威胁暴露管理 (TEM) 在现代网络安全策略中变得至关重要&…

获取时隔半个钟的三天

摘要&#xff1a; 今天遇到需求是配送时间&#xff0c;时隔半个钟的排线&#xff01;所以需要拼接时间&#xff01;例如2024-10-08 14&#xff1a;30&#xff0c;2024-10-08 15&#xff1a;00&#xff0c;2024-10-08 15&#xff1a;30 <el-form-item label"配送时间&a…

如何使用bpmn-js实现可视化流程管理

介绍 BPMN-JS是一个流行的开源库&#xff0c;用于在Web应用程序中可视化、创建、编辑和分析BPMN&#xff08;Business Process Model and Notation&#xff0c;业务流程建模与表示法&#xff09;2.0 图。BPMN是一种国际标准的图形化语言&#xff0c;用于描述企业中的业务流程&a…

BlackMarket_ 1靶机渗透

项目地址 plain https://download.vulnhub.com/blackmarket/BlackMarket.zip 实验过程 开启靶机虚拟机 ![](https://img-blog.csdnimg.cn/img_convert/169d964d61ea9660c1104e723f71449e.png) 使用nmap进行主机发现&#xff0c;获取靶机IP地址 plain nmap 192.168.47.1-254…

图论day57|建造最大岛屿(卡码网)【截至目前,图论的最高难度】

图论day57|建造最大岛屿&#xff08;卡码网&#xff09;【截至目前所做的题中&#xff0c;图论的最高难度】 思维导图分析 104.建造最大岛屿&#xff08;卡码网&#xff09;【截至目前所做的题中&#xff0c;图论的最高难度】 思维导图分析 104.建造最大岛屿&#xff08;卡码网…

带你解锁Open_FLUX.1模型的神奇世界!

大家好我是极客菌&#xff01;&#xff01;&#xff01; Open_FLUX.1模型&#xff0c;作为ComfyUI的最新力作&#xff0c;已经在AI绘画领域引起了广泛的关注。这款模型以其独特的艺术风格和强大的创作能力&#xff0c;为艺术家们提供了一个全新的创作平台。今天&#xff0c;就…

OJ在线评测系统 微服务高级 Gateway网关接口路由和聚合文档 引入knife4j库集中查看管理并且调试网关项目

Gateway微服务网关接口路由 各个服务之间已经能相互调用了 为什么需要网关 因为我们的不同服务是放在不同的端口上面的 如果前端调用服务 需要不同的端口 8101 8102 8103 8104 我们最好提供一个唯一的 给前端去调用的路径 我们学习技术的时候必须要去思考 1.为什么要用&am…