ISP(Image Signal Processor),图像信号处理器,主要用来对前端图像传感器输出信号处理的单元,主要用于手机,监控摄像头等设备上。

RAW DATA,可以理解为:RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据,是无损的,包含了物体原始的颜色信息等。RAW数据格式一般采用的是Bayer排列方式,通过滤波光片,产生彩色滤波阵列(CFA),鉴于人眼对绿色波段的色彩比较敏感,Bayer数据格式中包含了50%的绿色信息,以及各25%的红色和蓝色信息。

Bayer排列格式有以下4种:

1.| R | G |  2.| B | G |   3.| G | R |   4.| G | B |

| G | B |    | G | R |     | B | G |     | R | G |

在ISP处理模块的第一部分,就是需要对CFA DATA进行去噪操作。普通的去噪方式针对Bayer数据格式是不合适的,需要进行变换后才能进行处理。

一、中值滤波CFA(Color Filter Array)Data去噪方法

首先,让我们一起来回顾一下中值滤波的算法原理以及优缺点,然后给出示意的算法效果图。

中值滤波,顾名思义就是将滤波器里面所有像素值进行排序,然后用中间值替代当前像素点值。常用的中值滤波器有3X3,5X5等。

中值滤波的有点在于,实现简单,能够有效的消除椒盐噪声以及其他脉冲型噪声。缺点也是所有去噪算法所共有的,就是平滑模糊了图像的内容,有些角点以及边缘的信息损失。

对CFA DATA进行去噪时,需要将不同的颜色通道分开进行处理,这样是为了防止在平滑过程中将有用的颜色信息丢掉,比如说,由绿色信息包围的蓝色像素值与其相差很大时,此时就会被认为是噪声被处理掉,然而真实情况是,该区域的蓝色信息都是很大的。所以各通道单独处理的话是有利于保护颜色信息的。在我的处理过程中,是将原CFA DATA分成4块-R,G1,G2,B,分块去噪完成后再重新恢复到原来的位置,这样整个过程就完成了。

下面给出参考的中值滤波和主程序的C++(MFC)代码:

主函数:

void main()
{/*******开始编写中值滤波去噪模块--2015.07.27***********///针对R分量块进行去噪pNewDoc->m_RBlock  = new unsigned short [m_Height*m_Width/4];pNewDoc->m_G1Block = new unsigned short [m_Height*m_Width/4];pNewDoc->m_G2Block = new unsigned short [m_Height*m_Width/4];pNewDoc->m_BBlock  = new unsigned short [m_Height*m_Width/4];unsigned short* smoothR  = new unsigned short[m_Height*m_Width/4];unsigned short* smoothG1 = new unsigned short[m_Height*m_Width/4];unsigned short* smoothG2 = new unsigned short[m_Height*m_Width/4];unsigned short* smoothB  = new unsigned short[m_Height*m_Width/4];for (int i = 0; i < m_Height/2 ;i ++ ){for(int j = 0; j < m_Width/2 ; j ++ ){pNewDoc->m_RBlock [i*m_Width/2 + j] = m_RawImage[i*m_Width*2 + j*2];pNewDoc->m_G1Block[i*m_Width/2 + j] = m_RawImage[i*m_Width*2 + j*2 + 1];pNewDoc->m_G2Block[i*m_Width/2 + j] = m_RawImage[i*m_Width*2 + m_Width + j*2];pNewDoc->m_BBlock [i*m_Width/2 + j] = m_RawImage[i*m_Width*2 + m_Width + j*2 + 1];}}medianFilter(pNewDoc->m_RBlock,smoothR,m_Width/2,m_Height/2);   //针对R分量块进行去噪medianFilter(pNewDoc->m_G1Block,smoothG1,m_Width/2,m_Height/2); //针对G1分量块进行去噪medianFilter(pNewDoc->m_G2Block,smoothG2,m_Width/2,m_Height/2); //针对G2分量块进行去噪medianFilter(pNewDoc->m_BBlock,smoothB,m_Width/2,m_Height/2);   //针对B分量块进行去噪//反过来构造去噪去噪后的raw datafor (int i = 0; i < m_Height/2 - 1;i ++ ){for(int j = 0; j < m_Width/2-1; j ++ ){pNewDoc->m_ImageNR[i*m_Width*2 + j*2] = smoothR[i*m_Width/2 + j];pNewDoc->m_ImageNR[i*m_Width*2 + j*2 + 1] = smoothG1[i*m_Width/2 + j]; pNewDoc->m_ImageNR[i*m_Width*2 + m_Width + j*2] = smoothG2[i*m_Width/2 + j];pNewDoc->m_ImageNR[i*m_Width*2 + m_Width + j*2 + 1] = smoothB[i*m_Width/2 + j];}}/***********中值滤波模块完成--2015.07.27********************///SaveImageData(pNewDoc->m_ImageNR, m_Height ,m_Width,"E:\\m_ImageNR.bmp");SetDisplayRawImage( pNewDoc->m_ImageNR, m_Height ,m_Width, m_RawBitType,pNewDoc->m_Image);
}
<pre name="code" class="html">void medianFilter (unsigned short* corrupted, unsigned short* smooth, int width, int height)
{  memcpy ( smooth, corrupted, width*height*sizeof(unsigned short) );  for (int j=1;j<height-1;j++)  {  for (int i=1;i<width-1;i++)  {  int k = 0;  unsigned short window[9];  for (int jj = j - 1; jj < j + 2; ++jj)  for (int ii = i - 1; ii < i + 2; ++ii)  window[k++] = corrupted[jj * width + ii];  //   Order elements (only half of them)  for (int m = 0; m < 5; ++m)  {  int min = m;  for (int n = m + 1; n < 9; ++n)  if (window[n] < window[min])  min = n;  //   Put found minimum element in its place  unsigned short temp = window[m];  window[m] = window[min];  window[min] = temp;  }smooth[ j*width+i ] = window[4];  }  }
} <span style="font-family: Arial, Helvetica, sans-serif;"> </span>

中值滤波函数是在网上找的代码,由于比较基础,就直接拿过来用了,侵删

去噪前后效果图:


下一篇文章,我将主要给大家展示一下BM3D算法RAW DATA去噪效果,谢谢。

ISP模块之RAW DATA去噪(一)相关推荐

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

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

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

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

  3. 【Python 打开Raw data】

    Python 打开Raw data 前言 一.NumPy 二.使用步骤 1.引入库 2.读入Raw data 3.显示Raw data 总结 前言 Raw data 是图像传感器输出的原始图像数据.随 ...

  4. 【20210910】【机器/深度学习】lightGBM模型训练中报错:“Cannot set reference after freed raw data“

    一.原因在于: lightGBM模型训练完之后,Dataset的数据就会被清空,虽然在变量中它还存在,但实际已经被清空了,所以要再使用的话,需要重新生成! 二.补充知识点: lightGBM 模型训练 ...

  5. QT(Send raw data to printer)发送原始数据到USB打印机

    QT(Send raw data to printer)发送原始数据到USB打印机 http://hi.baidu.com/ppacctv/blog/item/c9517538a35ef3d2b211 ...

  6. 联合深度以及法向图优化的ToF深度估计:Joint Depth and Normal Estimation from Real-world Time-of-flight Raw Data

    概述 关于ToF传感器的真实数据的深度估计,在传统方法中使用成体系的pipeline对数据进行处理,整个过程中需要考虑到的因素很多,是一套精细又有些繁冗的过程.而<Joint Depth and ...

  7. 如何在MTK平台(mt6765 android 11)新增raw data分区

    最近在调试MT6765平台,需要新增raw data分区,并且在lk和kernel可以读取到分区信息.感觉非常繁琐,而且做错一步要重新编译整个SDK,非常耗时.因此,记录下这个过程的关键点,希望大家能 ...

  8. LINUX下简单实现ISP图像处理从RAW到RGB,BMP算法、RGB到JPEG库的使用(一)

    在这里分享一下相关的ISP的一些基本简单图像处理算法.在一般的市面上,相关的ISP算法都是非常复杂,且经过不同serson设备的情况进行固定参数并且固化在芯片内来实现.所以硬件ISP的效率会比软件算法 ...

  9. python《计算机视觉编程》第一章笔记——1.4.3形态学,1.4.2有用的scipy模块scipy.os模块,scipy.misc模块。1.5ROF去噪模型

    1.4.3形态学:对象计数 形态学(数学形态学):度量和分析基本形状的图像处理方法的基本框架和集合.形态学通常用来处理二值图像,也能用于灰度图像.二值图像是指图像的每个像素只能取0或1. scipy. ...

  10. 一句Python,一句R︱pandas模块——高级版data.frame

    先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas可谓如雷贯耳,数据处理神器. --- 目录 ...

最新文章

  1. 一个比特币要挖多久?
  2. nodejs 实践:express 最佳实践(五) connect解析
  3. 剑指offer——23.反转链表
  4. hive jdbc驱动_Hive的安装方式
  5. mPaaS小程序创建
  6. 下载pip、安装pip
  7. 【异步FIFO】格雷码和二进制的相互转换
  8. Charles 4.2.7 for Mac 中文破解版
  9. ansys静态结构分析
  10. 游戏美术和策划,你感兴趣吗
  11. 5G核心网技术基础自学系列 | 5G无线网
  12. 拿好这份踏青攻略,智慧出游领略大好河山!
  13. python doc 转docx
  14. Vector-常用CAN工具 - CANoe入门到精通_01
  15. (翻译)测试替身— Fakes, Mocks 和 Stubs
  16. 51中断优先级及中断嵌套
  17. 51单片机(四).C51编程语言
  18. 更新mysql表结构,同步数据库表结构
  19. 情侣间为不吵架而“约法三章”,12条可参考理由!
  20. iPhone惊爆史诗级漏洞:亿万台手机可永久越狱 苹果无法修复

热门文章

  1. \t\t使用Google APP Engine 完成个人代理服务器架设
  2. 嵌入式linux离线地图,基于gmap.net制作离线地图下载器
  3. 三星530换固态硬盘_韩国三星网红固态硬盘PM981系列惨遭黑苹果和INTEL10代主板嫌弃...
  4. slickedit 设置
  5. 地市级公安局实战通信指挥调度方案
  6. vue-pdf分页预览
  7. Awesomium(二)-- MultiThreadSnapshot
  8. 后台管理系统推荐(PHP)
  9. 处理 Win 10 开机后输入法不加载问题
  10. 计算机简历如何写,简历计算机能力怎么写