基于伽马变换自适应修正的全景首尾融合算法

简介: 基于伽马变换自适应修正的全景首尾融合算法

前言

      360度全景摄像机可无盲点监测覆盖所处场景 ,通过一个鱼眼镜头或者一个反射镜面(如抛物线,双曲线镜面等),或者多个朝向不同方向的普通镜头拼接而成,拥有360度全景视场(Field of View, FOV)。一台全景摄像机可以取代多台普通的监控摄像机监控摄像机,做到了无缝监控,实现了监控新应用,应用于各个领域,其中包括监狱、政府机关、银行、社会安全、公共场所、文化场所等。

一、场景痛点

      对全景相机而言,通过镜头的旋转可获取多张不同方向的图像,对其进行多图像拼接,最终可形成完整的全景图像。

图1 全景子图拼接

      但是在拼接过程中,很容易受到背景光不一致等外在因素的干扰,而使得拼接的图像中光场分布不均匀,这很容易导致图像之间出现间隙或双亮接缝,两者都非常令人反感,尤其是对于相机正在平移或物体在接缝上移动的内容。


      解决方案是将两个图像大量重叠并修改重叠区域中的像素,以使重叠尽可能不可见。这样做的原因是,现在任何轻微的投影仪未对准或镜头像差都只会显示为图像的轻微模糊,而不是尖锐的接缝或间隙。融合结果如图2所示。

图2 全景平铺拼接图

      虽然上述解决方案可以将平铺全景图像尽可能地融合,但无法保证图像两侧也能有效融合。要知道平铺全景图像最终是要呈现为360度立体环视效果的,左右两侧不融合将使得全景场景出现亮度突变缝,这会让观看者感到极度不适。如图3所示。

图3 亮度突变缝

       综上所述,在此类图像拼接场景下,亮度突变缝的消除是一大难题。难点主要有三:


  1. 全景图像往往是高分辨率的,即图像尺寸很大,这对算法复杂度的要求极高,过于繁琐的处理过程不利于工程开发和应用。
  2. 全景图像中物体特征是随机且差异极大的,这很考验算法对各类场景的普适度。
  3. 全景图像中,上中下三部分的亮度对比往往差很多,这与相机获取图像时的外在光源影响有关,也与相机本身的硬件和参数有关。

       如何将全景平铺图像的左右两侧也进行有效的融合,进而使360度全景环视效果更佳,是一个非常有挑战的课题。

二、需求说明

      第一部分讲解了全景图像拼接过程中存在的一大难点,即平铺图像左右侧的有效融合问题。针对该问题,提出需求:全景图像左右侧进行有效融合,使得左侧连接右侧后,不存在肉眼可见的明显亮缝。图4处理至图5状态。

图4 拼接亮缝示意图

图5 拼接融合

      为了满足该需求,本文提出了一种基于伽马变换自适应修正的全景首尾融合算法。

三、算法原理和流程

      之所以存在亮缝,归根结底是两部分的图像背景光不一致,我们可以将左侧和右侧分别进行一个伽马变化,伽马变化的终点修正为一致,再反变化回去,就可以使得中心部分较好融合,且图像像素渐变。

图6 伽马掩膜

       左右两侧是从1到k,k是中心接壤的比例因子,因此有公式如下,其中G是伽马变化的因子,G为1时,是线性变化,改变G,曲线变化示意图如图6所示。x是归一化的值,中心为0,边缘为1。

      不难发现,边缘处即x为1时,f(x)也为1,这样的目的是使得这部分图像拼接完成后,在回归到原图后,依然是融合态;只让其拼接部分是渐变融合的。

图7 伽马变换

      伽马自适应校准就是k值的校准,校准完成后进行反伽马变换,即可实现图像的恢复和融合。

      综上,该算法的流程图可简化为:

图8 流程图

四、拼接效果图

图9 拼接效果图1

图10 拼接效果图2

图11 拼接效果图3

五、代码分享

      C++代码不免费分享,有意获取者可以私我。算法不是魔法,不能解决一切问题。该算法的核心逻辑可用于工程开发,但仍有许多需要结合实际完善的地方,不建议直接拷贝使用。

PS:感谢陈先生提供的全景图像。

相关文章
|
20天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
20天前
|
算法 计算机视觉
使用积分图的自适应二值化算法
使用积分图的自适应二值化算法
|
20天前
|
自然语言处理 算法 C++
在C++语言中非修正算法
在C++语言中非修正算法
14 1
|
20天前
|
存储 算法 索引
模拟算法题练习(二)(DNA序列修正、无尽的石头)
模拟算法题练习(二)(DNA序列修正、无尽的石头)
|
20天前
|
算法 计算机视觉
【MATLAB 】 EMD信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 EMD信号分解+希尔伯特黄变换+边际谱算法
90 0
|
20天前
|
算法 计算机视觉
【MATLAB 】 EEMD 信号分解+希尔伯特黄变换+边际谱算法
【MATLAB 】 EEMD 信号分解+希尔伯特黄变换+边际谱算法
48 0
|
20天前
|
机器学习/深度学习 算法 计算机视觉
[YOLOv8/YOLOv7/YOLOv5系列算法改进NO.5]改进特征融合网络PANET为BIFPN(更新添加小目标检测层yaml)
本文介绍了改进YOLOv5以解决处理复杂背景时可能出现的错漏检问题。
131 5
|
5天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于DCT变换和位平面分解的数字水印嵌入提取算法matlab仿真
这是一个关于数字水印算法的摘要:使用MATLAB2022a实现,结合DCT和位平面分解技术。算法先通过DCT变换将图像转至频域,随后利用位平面分解嵌入水印,确保在图像处理后仍能提取。核心程序包括水印嵌入和提取,以及性能分析部分,通过PSNR和NC指标评估水印在不同噪声条件下的鲁棒性。
|
6天前
|
算法 数据安全/隐私保护 C++
基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真
该内容是关于一个图像水印算法的描述。在MATLAB2022a中运行,算法包括水印的嵌入和提取。首先,RGB图像转换为YUV格式,然后水印通过特定规则嵌入到Y分量中,并经过Arnold置乱增强安全性。水印提取时,经过逆过程恢复,使用了二维CS-SCHT变换和噪声对比度(NC)计算来评估水印的鲁棒性。代码中展示了从RGB到YUV的转换、水印嵌入、JPEG压缩攻击模拟以及水印提取的步骤。
|
18天前
|
算法
MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型
这段内容介绍了一个使用改进的麻雀搜索算法优化CNN-BiLSTM模型进行多输入单输出预测的程序。程序通过融合正余弦和柯西变异提升算法性能,主要优化学习率、正则化参数及BiLSTM的隐层神经元数量。它利用一段简单的风速数据进行演示,对比了改进算法与粒子群、灰狼算法的优化效果。代码包括数据导入、预处理和模型构建部分,并展示了优化前后的效果。建议使用高版本MATLAB运行。