一种基于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

相关文章

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 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme

状态模式state

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/state 在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 在状态模式中,player.getState()获取的是player的当前状态,通常是一个实现了状态接口的对象。 onPlay()是状态模式中定义的一个方法,不同状态下(例如“正在播放”、“暂停