目录

前言

插值算法

Bayer阵列类别

邻近插值算法

代码示例


前言

相机生成的图像一般是bayer阵列的raw图,这时候如果转换成我们需要的rgb图像,就需要对应的bayer插值算法将丢失的rgb信息通过算法补齐

插值算法

常见的插值算法一般有如下几种

  • 邻近插值算法
  • 双线性插值算法
  • 高质量线性插值算法
  • 边缘感应算法
  • VNG算法(这里暂不介绍)
  • AHD算法(这里暂不介绍)

Bayer阵列类别

Bayer以2*2的方式排列,其排列方式有如下4种情况

  • RGGB

BGGR

GBRG

GRBG

邻近插值算法

在bayer阵列中,将三基色图片插值成彩色图片最为简单的方法就是临近插值法。由于各个基色整个图片中,大部分是缓慢均匀的变化,则我们将某个像素中缺少的基色用其周边对应此基色的像素值代替从而达到插值效果,插值方法如下(这里以RGGB举例):

这里拿图像的第一个像素举例

以当前像素为开头,取2*2的方框

当前像素的R值就是当前方框红色区域的值, G值为像素上下最接近的绿色方块的值, B值为当前蓝色区域的值, 后续也以此类推, 最后一列和最后一行就给0值

但临近插值只是一个简单的赋值过程,没有考虑各个像素之间的相关性,固在插值处理过程中,会使图片马赛克化,尤其图片中存在一些非平滑度过区域时,更为严重。

代码示例

int raw_bayer_nearest(raw_color_filter_t colorFilter, uint8_t *bayer, uint8_t *rgb888, int width, int height)
{int i,j; int bayerlineWidth = width; int rgblineWidth = width * 3; int rgbSize = width * height * 3; int isStartGreen = (colorFilter == RAW_COLOR_FILTER_GBRG || colorFilter == RAW_COLOR_FILTER_GRBG) ? 1 : 0;int isRedFirst = (colorFilter == RAW_COLOR_FILTER_RGGB || colorFilter == RAW_COLOR_FILTER_GRBG) ? 1 : 0;//add black border  //leftfor(i = (rgblineWidth-3); i<rgbSize; i += (rgblineWidth-3)){rgb888[i++] = 0;rgb888[i++] = 0;rgb888[i++] = 0;}//bottommemset(rgb888+(height-1)*rgblineWidth, 8 ,rgbSize-(height-1)*rgblineWidth);for(;height--;){if(isStartGreen){if(isRedFirst){rgb888[0] = bayer[1]; rgb888[1] = bayer[0]; rgb888[2] = bayer[width]; }else{rgb888[0] = bayer[width]; rgb888[1] = bayer[0]; rgb888[2] = bayer[1]; }rgb888+=3;bayer++;}for(i = 0; i <= width-2-isStartGreen; i+=2){if(isRedFirst){rgb888[0] = bayer[0]; rgb888[1] = bayer[width]; rgb888[2] = bayer[width+1]; rgb888+=3;bayer++;rgb888[0] = bayer[1]; rgb888[1] = bayer[0]; rgb888[2] = bayer[width]; rgb888+=3;bayer++;}else{rgb888[0] = bayer[width+1]; rgb888[1] = bayer[width]; rgb888[2] = bayer[0]; rgb888+=3;bayer++;rgb888[0] = bayer[width]; rgb888[1] = bayer[0]; rgb888[2] = bayer[1]; rgb888+=3;bayer++;}}if(i < width){if(isRedFirst){rgb888[0] = bayer[0]; rgb888[1] = bayer[width]; rgb888[2] = bayer[-1]; }else{rgb888[0] = bayer[width]; rgb888[1] = bayer[0]; rgb888[2] = bayer[-1]; }rgb888+=3;bayer++;}isStartGreen = !isStartGreen;isRedFirst = !isRedFirst;}return 0;
}

bayer插值算法(1):邻近插值算法相关推荐

  1. 图像处理中两种基本的插值算法(最邻近插值法和双线性内插法)

    在图像的基本仿射变换中,经常会碰到经过旋转.缩放后灰度值如何赋值的问题.因为变换之后,图像的坐标位置有可能是小数,所以就需要插值算法来确定到底将该像素赋予哪个位置. 1.最邻近插值法(Nearest ...

  2. remosaic插值算法_图像插值算法及其实现

    sensor.codec.display device都是基于pixel的,高分辨率图像能呈现更多的detail,由于sensor制造和chip的限制,我们需要用到图像插值(scaler/resize ...

  3. bayer插值算法(3):高质量线性插值算法

    目录 前言 插值算法 高质量插值算法 代码示例 前言 相机生成的图像一般是bayer阵列的raw图,这时候如果转换成我们需要的rgb图像,就需要对应的bayer插值算法将丢失的rgb信息通过算法补齐 ...

  4. 最邻近差值算法(nearest)和双线性插值算法(bilinear)

    最邻近插值算法和双线性插值算法--图像缩放 加载图像时经常会遇见要缩放图像的情况,这种时候如何决定缩放后图像对应像素点的像素值,这时候就需要用到插值算法 1.最邻近插值算法 首先假设原图是一个像素大小 ...

  5. 清风数学建模——插值算法

    插值算法 作用(目的):在数学建模中,发现现有的数据是极少的,不足以支撑分析时,需要使用一些数学的方法,"模拟产生"一些新的但又比较靠谱的值来满足需求. 相关概念:插值函数,插值, ...

  6. 图像处理之-----插值算法

    插值算法是图像处理中最基本的算法,首先我们先了解一下什么是插值算法,以及插值算法在图像处理过程中的应用. 1.什么是插值 Interpolation is a method of constructi ...

  7. 插值算法(用于预测)

    目录 1.分段三次埃尔米特插值 2.三次样条插值 3.n维数据的插值 4.补充(画图中的函数) 5.例题 1.分段三次埃尔米特插值 函数pchip(x,y,newx) (分段是避免龙格现象) % 分段 ...

  8. 线性插值改变图像尺寸_数码图像插值算法

    插值,有时也称为"重置样本",是在不生成像素的情况下增加图像像素大小的一种方法,在周围像素色彩的基础上用数学公式计算丢失像素的色彩.插值是根据中心像素点的颜色参数模拟出周边像素值的 ...

  9. java实现分段线性插值_插值算法

    老师讲得很详细,很受用!!! 作用 数模比赛中,常常需要根据已知的函数点进行数据.模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,"模拟产生 ...

最新文章

  1. java 使用正则表达式从网页上提取网站标题
  2. 通过nodejs插入删除MongoDB数据
  3. 最优化:**回归/拟合方法总结
  4. python访问网页速度_python实现用于测试网站访问速率的方法
  5. Linux 监控命令 free
  6. Python 实现针对时间序列预测的特征选择
  7. 4999元!iQOO 9 Pro赛道版今日预售:创新性采用芳纶纤维材质
  8. 零基础开始学 Web 前端开发,有什么建议?(视频教程)
  9. LeetCode(183)—— 从不订购的客户(MySQL)
  10. Qt 多界面来回切换的问题以及Qt界面关闭与销毁
  11. 极光IM即时通讯初探
  12. bin文件转dat文件
  13. nopCommerce 3.9 大波浪系列 之 汉化-Roxy Fileman
  14. 马化腾:谈谈我创办腾讯这些年
  15. Mac改变系统截图存储路径
  16. 什么是瀑布图_什么是瀑布图以及为什么我需要一个
  17. Oracle数据库实例之进程架构(二)
  18. WireShark的过滤语法
  19. c++控制台密码管理系统
  20. iOS:多效果的CategoryView

热门文章

  1. android-x86编译
  2. 二分法求函数的零点c++
  3. C#阿里云OSS——存储
  4. python serial库文件下载_Pyserial python 串口驱动库pyserial - 下载 - 搜珍网
  5. WIN7在安装office2010时,出现错误:MSXML 6.10.1129.0缺失,解决方案详解
  6. 自制Microbit图形化编程小车
  7. 服务器 ip 网络共享 多服务器用同一个公网IP
  8. excel 根据起始日期计算到期日
  9. ffmpeg录制系统声音
  10. Studio 3T 破解教程