一种基于bayer型模式的双边自适应滤波器

2023-10-28 18:50

本文主要是介绍一种基于bayer型模式的双边自适应滤波器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      介绍一种基于bayer型模式的双边自适应滤波器。由于此时仅需对二维灰度图像进行滤波处理,它的硬件资源消耗可以减小为前者的三分之一。双边自适应滤波器不仅对各类噪声有良好的滤除能力,还能使图像中的细节得到很好的保留。

      在bayer型中,每个像素点的数据值只有一个,可能为RGB中的任何一个,对于G点,它的4邻域内没有G点的存在,对于R点和B点来说,甚至在它们的8领域内也没有相同颜色的点的存在。要对该点滤波,需要利用数量不多的相同颜色点的值。传感器在感光时具有空间相关性,即正常情况下图像在局部区域都是平滑过渡的,不会在某个孤立的点处产生突然的巨大的跳变。因此到需要滤波点的距离越近的点,它们之间的数值彼此应当更加接近,它们之间的相关性就越高。

      说明了当对具有R值的点滤波时的情况。在该图中,如要对R13进行滤波处理,需要得到以R13为中心的一个5×5的邻域。在这里同为R点的坐标分别为R1、R3、R5、R1l、R13、R15、R21、1123、R25,只有它们与中心点R13具有相关性,参加滤波过程的计算。在这些点中,R3、R11、R15、R23距离中心点R13最近,与R13的空间相关性最高,在滤波过程中做出的贡献最大。而R1、R5、R21、R25则距离R13最远,空间相关性低,在滤波过程中做出的贡献相对较小。

      根据空间相关性,我们可以得到一个5x5的矩阵,该矩阵能够很好的反映出这种相关性。

      在双边滤波的过程中,不仅需要像素之间的空间相关性,还需要它们彼此之间的数值相关性。对于同为R的点,当它们与中心点之间数值相差越小,说明彼此之间的相关程度越高,在滤波过程中就越重要。但是当数值之差超过一定的界限后,就说明该点的值与中心点存在过大的差异,说明两者之间没有相关性。

      计算数值相关性矩阵的伪代码如下:

      在上述的伪代码中,data、C_distanee、C weight都是5X 5矩阵。C_distance代表(i,j)处的数值和中心点之间数值的差异,C weight代表(i,j)处与中心点数值相关性的高低。此处选用了线性函数来量化C_Distanc、C_weight之间的关系(如图3.7所示),其中b的取值依据对于目标相关性的情况而取定,在此我们选择了32(5bit),以方便最后的硬件实现,同时节约硬件资源。

      由此可以得到一个关于C_weight的5X5的矩阵。最后可以通过Distance_r,C_weight得到滤波所需要的5×5掩模Mr,用此掩模对图3.7中的邻域滤波,利用下式计算,得到去噪后的R值。

       当对具有B值的点滤波时的5X 5邻域如图3.8所示。此时对于B点的邻域和R点的邻域基本一致,它们的的滤波方式也很相似,只是将前面所提到的R值用B值来代替即可。

       在bayer型中。G点的数量是R点或B点数量的两倍,它的邻域存在两种不同的情况,如图3.9所示,但是这种不同仅仅是R点和B点排列顺序的不同,它们对于G点滤波计算时没有任何的影响。

      在对G13点滤波时将会有G1、G3、G5、G7、G9、G11、G15、G17、G19、G21、G23、G25等十二个点参加计算。其中G7、G9、G17、G19距离中心点的最近,它们之问的空间相关性最高,在滤波过程中作出的贡献最大。(G3、Gll、G15、G23距离中心点稍远,它们之间的空问相关性次之,在滤波过程中作出的贡献较小。G1、G5、G21、G25距离中心点最远,它们之间的空间相关性最小,如果要节省硬件资源,在计算过程中甚至可以不予考虑。

      根据空间相关性,我们可以得到一个5X5的矩阵,该矩阵能够很好的反映出对于G点的这种相关性。

在双边滤波的过程中,G点的滤波也需要考虑它们彼此之间的数值相关性。在图3.9中,对于同为G的点,当它们与中心点之问数值相差越小,说明彼此之间的相关程度越高,在滤波过程中就越重要。这一点与R点滤波过程中的数值相关性是一致的。

由此可以得到一个关于G点的C_weight 5X5的矩阵。最后可以通过Distance g×C weight得到滤波所需要的5X5掩模Mg,用此掩模对图3.9中的邻域滤波,利用下式计算得到去噪后的G值。

      至此,对于整幅图像中的所有情况的去噪过程就完成了。为了减少硬件的开支,Distance矩阵可以在计算开始之前,就把它作为一个常数值在硬件中固化好。

转载于《图像信号处理器ISP的实现和FPGA验证》 浙江大学 薛江

这篇关于一种基于bayer型模式的双边自适应滤波器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/295225

相关文章

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

Python中__new__()方法适应及注意事项详解

《Python中__new__()方法适应及注意事项详解》:本文主要介绍Python中__new__()方法适应及注意事项的相关资料,new()方法是Python中的一个特殊构造方法,用于在创建对... 目录前言基本用法返回值单例模式自定义对象创建注意事项总结前言new() 方法在 python 中是一个

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

Open3D 基于法线的双边滤波

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 输入参数: 输出参数: 参数影响: 2.2完整代码 三、实现效果 3.1原始点云 3.2滤波后点云 Open3D点云算法汇总及实战案例汇总的目录地址: Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客 一、概述         基于法线的双边

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

6.4双边滤波

目录 实验原理 示例代码1 运行结果1 实验代码2 运行结果2 实验原理 双边滤波(Bilateral Filtering)是一种非线性滤波技术,用于图像处理中去除噪声,同时保留边缘和细节。这种滤波器结合了空间邻近性和像素值相似性的双重加权,从而能够在去噪(平滑图像)的同时保留图像的边缘细节。双边滤波器能够在的同时,保持边缘清晰,因此非常适合用于去除噪声和保持图像特征。在Op

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法