为什么夜晚拍照时照片里有不规则光晕?(转载)

本文详细解释了手机摄影中常见的眩光(Flare)现象,包括其产生的四种原因:镜片与盖板玻璃、镜片间、红外滤波片与镜片、传感器与红外滤波片之间的反射。并介绍了如何通过镀膜、调整镜头设计、使用蓝玻璃滤波片等方法减少眩光,以及在实际拍摄中避免强光源直射的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有朋友留言询问,为什么他拍照的时候,照片里总有不规则的光晕出现,而且向着太阳、灯光这类强光源时会很明显。其实这并不是你的手机摄像头出了问题,而是镜片组自身的物理特性导致的。

在业内这种现象被称之为 Flare 或者眩光,它主要是由光线在摄像头模组各组件之间发生多次反射形成的,大家来看这个图就一目了然了。

 

 

从图中我们可以看到,光线在进入摄像头镜片组到达传感器的过程中,会发生四种不同类型的反射,主要分为:

 

1、镜片与盖板玻璃之间的反射。

2、镜片与镜片之间的反射。

3、红外滤波片与镜片之间的反射。

4、传感器与红外滤波片之间的反射。

 

由于光线反射的位置不一样,所以这四种类型的现象各不相同。

 

我们先来看第一种情况,光线在镜片与盖板玻璃之间发生反射。这种情况是比较常见的,反射光线产生的鬼影一般与原来的高亮物体(如路灯、车灯、太阳)形状相似,并在原来物体的旁边出现。

 

 

解决这个问题的方法也很简单,在镜片上镀上一层增透膜,增透膜也叫 AR 膜,当加上单面 AR 膜之后,透光率会有 3%-5% 的提升,以此来减少光的反射从而增加光的透过率。

 

第二种情况就是光线在镜片与镜片之间发生反射。这种情况常见于单反镜头上,主要是因为单反镜头焦距长,镜片之间的间距较大,容易出现多组镜片同时受反射光线影响的情况,从而形成一连串光斑形式的像。手机上面的镜片组之间间距较小,不常见到这类情况。

要解决这种情况,一是可以使用镀膜的方法,减少光的反射;二是可以调整镜头镜片组的光路设计。前者的方法会简单一些,毕竟光路设计牵扯的东西太多,所需时间成本也更高。

 

第三种情况就是光线在红外滤波片与镜片之间发生反射,红外滤波片主要目的在于滤除红外线,而由于它采用的是反射的方式过滤,反射光容易造成干扰形成眩光,通常厂家会在红外滤波片上进行镀膜,根据光学薄膜的物理特性,光线入射角度越大,镀膜曲线的偏移也就越大,偏移的这部分光线就形成了角落红光。

 

 

这种情况的眩光可以用蓝玻璃滤波片来改善,因为蓝玻璃滤波片是用“吸收”的方式过滤红外线,过滤效果显著。注意这里说的蓝玻璃并不是一张玻璃片,而是采用多重镀膜技术,使其达到蓝玻璃的效果。

 

第四种情况就是光线在传感器和红外滤波片之间发生反射。由于传感器上面遍布着汇聚光线的显微透镜,所以入射光线在传感器和红外滤波片之间发生多次反射,形成花瓣状的眩光,这种情况在使用普通白玻璃红外滤波片的模组上很常见。

 

 

类似这种情况,一样可以使用蓝玻璃来解决。

 

说到这里,大家应该知道这种眩光是怎样发生的了,它并不是你手机上有脏污或者相机出问题导致的,只是一种光学镜片组的物理缺陷。那我们在日常使用的时候如何去规避它呢?很简单,在拍摄的时候尽量不要对着强光源,当发现有眩光的时候换个取景角度试试。也可以试试加个遮光罩,这种情况会改善许多。

参考资源链接:[夜间图像增强算法的深度探究Matlab实践](https://wenku.csdn.net/doc/8904ss7van?utm_source=wenku_answer2doc_content) 针对夜间图像增强问题,Matlab提供了一个强大的平台来实现和测试各种算法。光晕伪影是夜间图像增强中常见的问题,它通常由于图像中存在亮度极高的区域而引起。为了解决这一问题,可以通过实现双滤波单尺度Retinex算法来改善图像质量,同减少光晕伪影。 首先,我们需要理解Retinex理论,它基于人眼感知颜色是由物体表面反射到人眼的的比率决定的这一原理。单尺度Retinex(SSR)算法是基于这种理论的一种常见方法,它通过将原始图像一个高斯滤波后的图像进行对数变换相除来增强图像。然而,SSR算法可能会导致光晕伪影,特别是在处理高对比度区域。 双滤波单尺度Retinex算法(BSSR)是对此的改进,它采用两个高斯滤波器,一个具有较大的尺度因子,另一个具有较小的尺度因子。这样可以同保留图像的大尺度和小尺度特征,从而在增强图像对比度的同,减少光晕伪影的产生。在Matlab中,你可以使用内置的高斯滤波器函数来实现这一算法。具体步骤包括: 1. 将原始图像转换为对数域。 2. 应用两个不同尺度的高斯滤波器对图像进行滤波。 3. 将滤波后的图像分别原始图像进行对数变换相除。 4. 将两次除法得到的图像相加,得到最终的增强图像。 在Matlab代码中,这些步骤可以如下实现: % 假设img是读入的夜间图像 img = rgb2gray(img); % 如果是彩色图像,转换为灰度图像 img_log = log(1 + double(img)); % 转换为对数域 % 定义高斯滤波器 h1 = fspecial('gaussian', [51 51], 10); % 大尺度高斯滤波器 h2 = fspecial('gaussian', [5 5], 0.5); % 小尺度高斯滤波器 % 应用高斯滤波器 img_gaussian1 = imfilter(img_log, h1, 'replicate'); img_gaussian2 = imfilter(img_log, h2, 'replicate'); % SSR增强 img_ssr1 = double(img) ./ exp(img_gaussian1); img_ssr2 = double(img) ./ exp(img_gaussian2); % BSSR增强 img_bssr = img_ssr1 + img_ssr2; img_enhanced = exp(img_bssr) - 1; % 从对数域转换回原始域 在此过程中,需要注意的是,高斯滤波器的尺度选择需要根据实际情况进行调整,以达到最佳的增强效果。 对于希望进一步了解夜间图像增强算法以及Matlab实现细节的用户,建议阅读《夜间图像增强算法的深度探究Matlab实践》。这份资料不仅深入探讨了夜间图像的特性,还详细介绍了基于Matlab的算法实现过程,为读者提供了从理论到实践的全面学习资源。 参考资源链接:[夜间图像增强算法的深度探究Matlab实践](https://wenku.csdn.net/doc/8904ss7van?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值