Mutual-Structure for Joint Filtering

文章介绍了针对传统联合滤波器在处理结构不一致图像时的缺陷,提出了一种新的“互结构”概念,以增强联合处理能力。通过估计输入图像和参考图像之间的相互结构,解决了不同结构或光谱配置图像的处理问题。方法包括计算图像块的结构相似性,定义约束并优化目标函数,从而实现更精确的图像平滑和噪声消除。实验结果显示,这种方法在图像分割、特征提取和恢复等领域有广泛应用潜力。

以前的联合/引导滤波器将参考图像中的结构信息直接传输到目标图像,它的主要缺点:两个图像中可能存在完全不同的边缘。简单地将所有图像传递给目标可能会出错。
作者对结构不一致性问题,提出了相互结构的概念,以增强基于目标图像和参考图像中公共信息的联合处理能力。即考虑了参考图像和目标图像之间的可能差异,并估计了它们的相互结构,作为联合滤波的新参考。此框架通常用于处理具有不同结构或不同光谱配置的图像。它很好地抑制了输入图像中不常见的信息。
在这里插入图片描述

(a)和(b)是输入图像和参考图像。由于(b)具有与深度无关的额外边缘,它是一张RGB图,并且输入图像(a)有噪声,因此联合滤波器会生成不需要的结构,如©和(d)所示。因此,在联合过滤中必须选择正确的边缘。

联合/引导图像过滤器
局部联合方法:双边滤波器,引导滤波器,基于测地距离的滤波器等。考虑色差和空间距离的相似度来设置局部平滑图像的权重。
全局联合方法:比如WLS,通过设置一个l1、l2范数的目标函数来优化最值。

联合滤波的互结构
下图是一个地方白天和晚上的照片。
互结构:如图c,互结构指两幅图形状结构一致的区域。不需要灰度大小、梯度一直,只要轮廓相同即可。
不一致结构:如图d,同一位置两幅图呈现完全不同的结构。
平滑区域:如图e,图像中常见的地方查平滑块,容易收到噪声和其他视觉伪影的影响。
作者旨在找到两个输入图像中的相互结构,并使其进行联合滤波。所以不仅要过滤目标图像,还要过滤参考图像。
在这里插入图片描述

I0:输入目标图像,G0:参考图像;
I:输出目标图;G:互结构引导图;
P(x,y)^T:像素坐标;
I0,p和G0,p,Ip,Gp是I0,G0,I,G中的像素强度;
N§:以p为中心的像素集;N§ 中的像素数为| N |。

测量I和G中相应图像间的结构相似性,然后定义相应的约束。最后描述了联合优化I和G的目标函数。
结构相似性:I和G两个图像块的相似性用NCC(归一化相关)来表示:在这里插入图片描述

Conv(Ip,Gp)是图像块强度的协方差,协方差公式:在这里插入图片描述
协方差用来刻画两个随机变量x,y之间的相关性如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。根号下的两个数表示方差。当两个图像块具有相同的边缘,ρ=1,否则|ρ|<1,当图像块结构越相似,|ρ|越大。由于ρ是非线性的,不好计算,于是作者找到它和最小二乘法的关系,最小二乘法好计算。在这里插入图片描述

a是系数,这个方程线性地表示G中的图像块通过I中的该图像块。
下式通过系数a表示最小误差:在这里插入图片描述

在输入的图像块相同时,e(Ip, Gp)与NCC方法相关。
e(Ip, Gp)和ρ(Ip, Gp)的关系:在这里插入图片描述
其中σ(Gp)是G中以p为中心的图像块的方差。

作者的图像块相似度方法:在这里插入图片描述
在这里插入图片描述

从这个表达式中,我们容易得到他在三种区域的表现:
1.Mutual-Structures:|ρ(Ip, Gp)|达到1时,S趋于0
2. Inconsistent Structures(图像块结构不一致):ρ趋近于0,且因为包含细节,两个方差中至少有一个比较大,从而S较大。
3. Smooth Regions:因为两个方差都很小,从而S较小。这并不和1产生矛盾,因为这种平滑区域也可以视作是Mutual-Structures。

目标函数:在这里插入图片描述

它可以产生平凡解,作者引入了正则项来避免琐碎的解决方案,并产生合理的平滑效果以消除噪声。在这里插入图片描述

此外,我们还可以再加正则项使图像满足一定的光滑性或者是能够去除图像中的噪声:在这里插入图片描述

最终目标函数即为:在这里插入图片描述

算法流程:在这里插入图片描述

实验结果
在这里插入图片描述

应用

我们的方法可以应用到许多场景,例如图像分割,图像特征提取和图像恢复一类的问题中。在这里插入图片描述

下图是先利用作者的方法提取共同结构,再做边缘提取。在这里插入图片描述

下图是对RGB图去噪。
在这里插入图片描述

<think>嗯,用户这次的需求很明确,就是要了解Customizing Mutual-TLS Client Authentication的详细内容。虽然系统提供了两个引用片段,但仔细看会发现引用[1]讲的是Spring Security的授权机制,引用[2]说的是密码凭证的安全存储,都和Mutual TLS不太相关。 用户可能正在开发需要双向认证的安全系统,比如金融API或物联网设备认证。考虑到Mutual TLS的专业性,ta应该是中级以上的开发者。上次对话历史里看到用户对身份验证流程很熟悉,这次提问直接命中具体技术点,说明不需要基础概念铺垫。 需要重点解释三个层面:首先是流程原理(证书交换和验证机制),然后是具体实现关键点(特别是Spring Boot配置),最后给个代码示例会更直观。要提醒用户注意证书管理这个易错点,毕竟生产环境很多问题都出在证书配置上。 突然想到用户没说明使用的技术栈,保险起见应该涵盖主流框架的实现方式。Spring Security的方案最成熟,所以作为主要示例,但同时要提及其他语言生态(比如Go的net/http库)的差异化实现,避免局限用户视野。 配置示例部分需要强调几个安全细节:强制验证客户端证书的配置项、SAN扩展校验的重要性、证书吊销检查的漏掉率很高所以单独标注。最后补充的FAQ特意选了证书轮换这个运维痛点,因为用户能问出这么专业的问题,大概率需要长期维护这套系统。 </think>以下是关于 **Customizing Mutual-TLS Client Authentication** 的详细介绍,涵盖核心原理、实现步骤和关键配置点: --- ### **一、Mutual-TLS(双向TLS)基础** 1. **与传统TLS的区别** - **单向TLS**:仅服务器向客户端提供证书(客户端验证服务器身份)。 - **双向TLS(mTLS)**:客户端和服务器**互相验证证书**,确保双方身份合法。 2. **核心流程** ```mermaid sequenceDiagram 客户端->>服务器: 发起HTTPS请求 服务器-->>客户端: 返回服务器证书 客户端->>服务器: 发送客户端证书 服务器-->>客户端: 验证通过,建立加密通道 ``` --- ### **二、自定义客户端认证的关键环节** #### **1. 证书管理** - **客户端证书**: - 由私有CA或公共CA签发,需包含客户端唯一标识(如域名/IP)。 - 格式:通常为 `PKCS#12`(.p12)或 `PEM`。 - **服务器信任库**: 需包含签发**客户端证书的CA根证书**(或直接信任客户端证书)。 #### **2. 服务端配置(以Spring Boot为例)** ```java @Configuration public class ServerSecurityConfig extends WebSecurityConfigurerAdapter { @Value("${server.ssl.trust-store}") private Resource trustStore; @Value("${server.ssl.trust-store-password}") private String trustStorePassword; @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .x509() // 启用mTLS .subjectPrincipalRegex("CN=(.*?)(?:,|$)") .userDetailsService(userDetailsService()); } @Bean public WebServerFactoryCustomizer<TomcatServletWebServerFactory> sslCustomizer() { return factory -> factory.addConnectorCustomizers(connector -> { connector.setProperty("clientAuth", "require"); // 强制要求客户端证书 connector.setProperty("truststoreFile", trustStore.getFile().getAbsolutePath()); connector.setProperty("truststorePass", trustStorePassword); }); } } ``` > **关键配置说明**: > - `clientAuth=require`:强制验证客户端证书(可选值:`want`/`require`)。 > - `subjectPrincipalRegex`:从证书主题中提取用户标识(如CN字段)。 #### **3. 客户端配置(Java示例)** ```java @Bean public RestTemplate restTemplate() throws Exception { KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(new ClassPathResource("client.p12").getInputStream(), "password".toCharArray()); SSLContext sslContext = SSLContextBuilder.create() .loadKeyMaterial(keyStore, "password".toCharArray()) // 加载客户端证书 .loadTrustMaterial(TrustManagerFactory.getDefaultAlgorithm(), null) // 信任服务器CA .build(); return new RestTemplateBuilder() .requestFactory(() -> new HttpComponentsClientHttpRequestFactory( HttpClientBuilder.create().setSSLContext(sslContext).build() )) .build(); } ``` --- ### **三、自定义认证扩展** #### **1. 动态证书验证** 通过实现 `X509AuthenticationFilter` 自定义证书验证逻辑: ```java public class CustomX509Filter extends X509AuthenticationFilter { @Override protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) { X509Certificate[] certs = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate"); // 自定义解析逻辑(如校验证书扩展字段) return certs[0].getSubjectX500Principal().getName(); } } ``` #### **2. 基于证书的访问控制** 结合 `AccessDecisionVoter`(引用[1])实现细粒度授权: ```java public class CertificateVoter implements AccessDecisionVoter<FilterInvocation> { @Override public int vote(Authentication auth, FilterInvocation fi, Collection<ConfigAttribute> attrs) { X509Certificate cert = (X509Certificate) auth.getCredentials(); // 检查证书中的OU字段是否匹配权限 return cert.getSubjectX500Principal().getName().contains("OU=Admin") ? ACCESS_GRANTED : ACCESS_DENIED; } } ``` --- ### **四、安全增强实践** 1. **证书吊销检查** 集成 `CRL`(证书吊销列表)或 `OCSP`(在线证书状态协议),拒绝已吊销证书。 2. **证书绑定(Certificate Pinning)** 在客户端硬编码服务器证书指纹,防止中间人攻击。 3. **短期证书** 使用自动轮换的短期证书(如通过Vault PKI动态生成)。 --- ### **常见问题** **Q1: 如何调试mTLS握手失败?** - 服务端启用调试日志:`logging.level.org.apache.tomcat.util.net=DEBUG` - 使用OpenSSL测试: ```bash openssl s_client -connect server:443 -cert client.pem -key client.key -CAfile ca.crt ``` **Q2: 如何避免证书管理硬编码?** - 使用密钥管理服务(如HashiCorp Vault、AWS Secrets Manager)动态注入证书。 --- > **参考** > [^1]:Spring Security通过 `AccessDecisionManager` 和 `AccessDecisionVoter` 实现授权决策。 > [^2]:安全凭证(如证书密码)应使用 `SecureString` 替代普通字符串存储。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值