在正式开始本篇文章之前,让我们一起回顾一下CFA图像去噪的一些基本思路与方法。接着我会详细地和大家分享自己学习理解的BM3D算法,操作过程,它的优缺点,最后会给出算法效果图供参考。

在ISP模块里,研究者们会讨论去噪模块(Noise Reduction)到底是在去马赛克模块(Demosaic)之前还是之后进行。如果在之前处理的话,随着去噪过程的进行,噪声点消除的同时,伴随着彩色信息的损失;如果在之后,复杂的插值过程将会改变噪声的统计模型,使其变得很复杂并且难以计算。所以,更多的情况是选择在Demosaic之前进行去噪操作。

CFA(Color Filter Array) Data不能采用传统的灰度图像去噪算法,因为CFA图像中相邻的像素点具有不同的颜色信息度量,CFA图像的块状结构与没有传统意义上的平滑性以及分段恒常性,以至于一般的去噪算法对CFA图像并不适用。CFA Data也不能够采用彩色图像去噪算法因为每个像素点只含有一个颜色通道的信息。

①一种方法是,将原来的CFA图像阵列分成四小块(R,G1,G2,B),分别对这四块采用灰度图像去噪的方法。这种方法往往表现差,因为重要的色彩相关性信息被忽视掉了。CFA去噪算法可以通过利用CFA Data的空间以及色彩相关性来改善其效果。

②另外一种方法是利用CFA图像里面各颜色块的信息构造一幅低分辨率的RGB图像,这种方式很好的利用了其颜色相关信息,但是不能够较好的保护空间域上的高频信息。

③BM3D(Block Matching 3-D filtering algorithm)算法的提出,通过限制图像块具有相同的颜色配置结构来达到处理CFA图像的目的。

下面是BM3D算法的详细介绍:

1.基础估计

1).逐块估计(Block-wise estimates)

分组(Grouping),找到所有与目前处理图像块相似的块,把它们堆在一起形成一个3维的数组(分组)。

联合硬阈值(Collaborative Hard-Thresholding).对已经组织好的分组进行3D变换,通过硬阈值3D变换系数达到减弱噪声的目的,然后通过3D反变换回去得到分组内图像块的去噪后估计,并返回到它们之前所在的位置。

2).聚集(Aggregation) 对所估计图像块重复遮盖的像素点进行加权平均,得到最终的像素值,也就是最后的基础估计结果。

2.最终估计

1).逐块估计(Block-wise estimates)

分组(Grouping),使用图像块匹配的方法,找到原噪声图像以及基础估计图像里面与目前处理图像块相似的所有块,形成两个3维数组(分组)。

联合维纳滤波(Collaborative wiener-filtering).对已经组织好的两个分组进行3D变换,将基础估计图像的能量频谱作为真实的能量频谱对噪声图像分组进行维纳滤波,然后通过3D反变换回去得到所有分组的图像块估计,并返回到它们之前所在的位置。

2).聚集(Aggregation)

对所有得到的估计图像块重复遮盖的像素点进行加权平均,得到最终的像素值,也就是最后的最终估计结果。

BM3D如何找到相似图像块组织3D分组:如下图所示,正方形所示为各个图像块,左上的分组所选取的图像块都具有角点(尖点)特征,其他分组类似。

BM3D如何在CFA中进行处理:如下图所示,左边的分组里面的图像块具有不同的彩色配置,即R,G,B的排列方式不是一致的,而右边具有相同的彩色配置,所以其对于处理CFA图像是非常合理的。

上面将BM3D的算法原理以及细节操作都跟大家介绍清楚了,下面就来看一下BM3D对于CFA图像的算法效果:

原噪声图像

中值滤波图像

BM3D去噪图像

算法效果(PSNR)明显优于中值滤波,去噪模块就此结束,下一篇开始给大家介绍两种色彩增强的算法。

BM3D网上有现成的Matlab代码,算法链接网址:http://www.cs.tut.fi/~foi/GCF-BM3D/

参考文献:

1).A case for denoising before demosaicking color fiter array data,Sung Hee Park etc.

2).A Framework for wavelet-based analysis and processing of color filter array images with applications to denoising and demosaicing,Hirakawa etc.Havard University.

3).Cross-color BM3D Filtering of Noise Raw Data,Aram Danielyan etc.

ISP模块之RAW DATA去噪(二)--BM3D算法的更多相关文章

  1. ISP模块之RAW DATA去噪(一)

    ISP(Image Signal Processor),图像信号处理器,主要用来对前端图像传感器输出信号处理的单元,主要用于手机,监控摄像头等设备上. RAW DATA,可以理解为:RAW图像就是CM ...

  2. Sensor信号输出YUV、RGB、RAW DATA、JPEG【转】

    本文转载自:http://blog.csdn.net/southcamel/article/details/8305873 简单来说,YUV: luma (Y) + chroma (UV) 格式, 一 ...

  3. Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别

    简单来说,YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的RGB: 传统的红绿蓝格式,比如RGB565 ...

  4. 嵌入式开发之davinci--- 8148/8168/8127 中的图像采集格式Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别

    简单来说,YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的RGB: 传统的红绿蓝格式,比如RGB565 ...

  5. IPC网络高清摄像机基础知识4(Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别) 【转】

    转自:http://blog.csdn.net/times_poem/article/details/51682785 [-] 一 概念介绍 二 两个疑问 三 RAW和JPEG的区别 1 概念说明 3 ...

  6. Spring Data(二)查询

    Spring Data(二)查询 接着上一篇,我们继续讲解Spring Data查询的策略. 查询的生成 查询的构建机制对于Spring Data的基础是非常有用的.构建的机制将截断前缀find-By ...

  7. ansible笔记(5):常用模块之文件操作(二)

    ansible笔记():常用模块之文件操作(二) 文件操作类模块 find模块 find模块可以帮助我们在远程主机中查找符合条件的文件,就像find命令一样. 此处我们介绍一些find模块的常用参数, ...

  8. Android 图像显示系统 - 导出图层数据的方法介绍(dump GraphicBuffer raw data)

    一.前言 在项目的开发中,为了定位Android显示异常的原因:GPU渲染 or GPU合成 or HWC合成送显异常的问题.我们通常会把图层的原始数据写到文件,然后通过RGB或YUV的软件工具来查看 ...

  9. 17.1.1.6 Creating a Data Snapshot Using Raw Data Files 创建一个数据快照使用 Raw Data Files

    17.1.1.6 Creating a Data Snapshot Using Raw Data Files 创建一个数据快照使用 Raw Data Files 如果数据库是大的, 复制raw 数据文 ...

随机推荐

  1. Spring框架jar包分类(转)

    转自:http://www.cnblogs.com/JSONBEAN/p/6364038.html 长期以来都在写SSM框架的项目,却未能深入理解框架的搭建原理,而只是浅薄的理解前辈的架构,然后不断套 ...

  2. axis2实践(二)Restful入门示例

    1. 实例说明 本示例直接参照了RESTful Web Services with Apache Axis2,本示例基本就是沿用的原示例,就是一个对学生信息(包括姓名,年龄,课程)的管理的例子,提供如 ...

  3. BZOJ 4326 NOIP2015 运输计划(树上差分+LCA+二分答案)

    4326: NOIP2015 运输计划 Time Limit: 30 Sec  Memory Limit: 128 MB Submit: 1388  Solved: 860 [Submit][Stat ...

  4. BZOJ3876 [Ahoi2014&Jsoi2014]支线剧情 【有上下界费用流】

    题目 [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往 都有很多的支线剧情,现在JYY想花费最少 ...

  5. 雅礼集训 Day1 T2 折射

    折射 题目描述 小\(\mathrm{Y}\)十分喜爱光学相关的问题,一天他正在研究折射. 他在平面上放置了\(n\)个折射装置,希望利用这些装置画出美丽的折线. 折线将从某个装置出发,并且在经过一处 ...

  6. 模拟Windows系统“回收站”

    HTML: <!DOCTYPE html><html> <head> <meta http-equiv="content-type" co ...

  7. create a large size empty file to measure transfer speed

    OS : Windows open cmd fsutil file createnew file_name 1073741824 // 1GB fsutil file createnew file_n ...

  8. JAVA向EXE文件尾追加配置信息,用于解决局版客户端的程序IP配置问题

    package com.demo.blog; import java.io.DataOutputStream;import java.io.File;import java.io.FileOutput ...

  9. printf()函数不能直接输出string类型

    因为string不是c语言的内置数据,所以直接printf输出string类型的是办不到的. 要这样输出: printf("%s\n",a.c_str()); 举例: #inclu ...

  10. (15)oracle序列

    1.创建序列 CREATE SEQUENCE EMP_SEQ START WITH 1 MAXVALUE 9999999999999999999999999999 MINVALUE 1 NOCYCLE ...