zoukankan      html  css  js  c++  java
  • ISP中去马赛克-demosiac入门

    Demosiac是整个ISP imaging pipeline的核心算法,将bayer pattern的图像转换成RGB。

    那么我们这篇博文呢,希望从以下几个角度,对Demosiac做一个入门,给大家一些基本的概念。

    0 什么Bayer pattern,他是怎么产生的

    1 什么是去马赛克,为什么需要去马赛克

    2 如何去马赛克,基本依据是什么

    3 去马赛克中的难点

    4 any other choices?

    ==========================

    0 什么Bayer pattern,他是怎么产生的

    ==========================

    我们知道,CMOS其实只能记录光子的能量,并不能记录光波的波长(即色彩信息),所以,为了得到图像的颜色信息,前人们想到了一种办法,就是在每一个像素面前加带颜色的滤光片,这样就知道某一颜色分量的光强了,柯达的工程师提出了下面这种pattern,也叫CFA(color filter array)

    BGBGBGBGBGBGBGB

    GRGRGRGRGRGRGR

    这样就可以记录色彩信息了

    背后的逻辑当然是这样的

    1.绿色pixel为什么比其他两种颜色多呢?      因为人眼对绿色(550nm左右)最敏感啊

    2.为什么是这三种颜色呢?三原色嘛

    3.那么这样每个像素还是只有一种色彩呀,怎么能得到每个像素的所有色彩呢?      真聪明,这个就是我们做demosiac的目的了

    好啦,知道了为什么需要做demosiac,我们就可以继续了

    ==========================

    1 什么是去马赛克,为什么需要去马赛克

    ===========================

    看了上面关于bayer的介绍,其实很好理解我们为什么需要去马赛克了,这是我们色彩恢复的重要的一步。将bayer模式的raw图像转换成为RGB的图像。 

    ===========================

    2 如何去马赛克,基本依据是什么

    ===========================

     简单来说就是插值,邻域像素的色彩都有了,我们肯定是可以插值出本像素的值的。不过简单的双线性插值的方法总是在IQ上面有缺陷的。

    在图像的边缘,会产生伪彩色,这一点不难理解。

    下面介绍一种目前常用的demosiac插值方法。

    demosiac的插值一般遵循以下几个原则:

    1.先对G分量进行插值,因为G的像素个数是GB的两倍

    2.插值时采用方向性插值,即如果是垂直的边缘,则采用上下的像素进行插值,而不选用左右

    3.Hamilton提出的patent奠定了基础,基本原理就是色差恒定,即相邻点的R(i,j)-G(i,j) = R(i, j+1)-G(i, j+1)

    4.另外各个颜色分量在同一像素点处的高频分量可认为是相同的

    一个简单的实现demoisac的流程是这样的

    A.先获取图像中的物体的边缘

    B.根据边缘信息重建G分量

    C.根据哈密尔顿提出的色差恒定理论,重建R和B

    D.一些后处理,包括伪彩色抑制和zipper cancelling等

    这两年也出现了基于deep learning的demosiac方法,以后有机会可以跟写一篇文章来解析一下。

    ===========================

    3 去马赛克中的难点

    ===========================

     去马赛克算法会产生两种缺陷,色彩混叠和拉链效应。就是上面D这个步骤要解决的两个问题。

    关于色彩混叠,在后文中我们会介绍他的形成,而色彩混叠的解决方法也很多,其中一种就是中值滤波,对

    U = R-G

    V = B-G

    U和V进行中值滤波,可以保证在边界处抑制色彩混叠

     ==========================

    4 any other cholces?

    ===========================

    讲了半天去马赛克,其实就是因为最初我们用了bayer pattern,不能够在一个像素处拿到所有的RGB三种色彩的值,所以才有了这么多的处理。

    其实很多人对Bayer这种pattern颇有微词,它至少有以下两点不足

    1.G和RB的采样率不同,导致色彩混叠。G的采样率比RB都要高,这样,RB不能像G那样准确的恢复出原始被采样图像的色彩,就会有假的色彩花纹在图像的高频部分产生。

    典型的色彩混叠的例子,注意图中的白色栅栏

    2.滤光片的存在导致光能的丢失

    那么有公司提出了全彩色CMOS的概念,每一个像素可以拿到RGB三种色彩强度信息,无需demosiac插值,基本原理如下图

    当然造价之类的肯定是比bayer的要高,所以目前普遍使用的还是bayer的sensor。

    最后向大家推荐一本书《image processing for embeded devices》,非常棒,ISP中用到的各种基本算法都有涉及,类似于文献综述。里面有一章专门讲去马赛克和抗混叠的。

    参考文献

    1. https://www.dpreview.com/articles/3560214217/resolution-aliasing-and-light-loss-why-we-love-bryce-bayers-baby-anyway 

    2. image pricessing for embeded devices

    3. 基于bayer格式的去马赛克算法研究及硬件实现 浙大 丁文

  • 相关阅读:
    iOS开发——多线程篇——NSOperation(基于GCD多线程编程),下载图片并合成新图片
    iOS开发——多线程篇——GCD
    iOS开发——多线程篇——NSThread
    iOS开发——多线程篇——多线程介绍
    iOS开发——UI进阶篇(十八)核心动画小例子,转盘(裁剪图片、自定义按钮、旋转)图片折叠、音量震动条、倒影、粒子效果
    推荐系统_七月算法4月机器学习班第9次课程笔记
    STL源码分析读书笔记--第三章--迭代器(iterator)概念与traits编程技法
    C语言基础(不断更新)
    字节对齐总结
    大端模式与小端模式
  • 原文地址:https://www.cnblogs.com/sunny-li/p/8641767.html
Copyright © 2011-2022 走看看