12

碎碎思 · 2022年06月13日

优秀的 Verilog/FPGA开源项目介绍(二十六)- ISP (图像信号处理)

介绍

查看《ISP算法及架构分析介绍

今天项目的顺序就是先介绍几个关于ISP算法架构的项目,包括python、matlab、c等高级语言实现的ISP算法架构,最后介绍一个FPGA实现ISP的项目。

openISP

https://github.com/cruxopen/openISP

87f077fe547056d2349100f4da3e2167.png

项目介绍

用python实现的ISP架构,该架构涉及到的知识如下:

a42c6993da5e225f80c67c6114eca510.png

下图是最新实现的模块:

03cccef016efa3d54706356fc4c455c3.png

主要模块如下:

  • 死点校正
  • 黑电平补偿
  • 镜头阴影校正
  • 抗混叠噪声滤波器
  • AWB 增益控制
  • 降噪(拜耳领域)
  • 去马赛克
  • 伽玛校正
  • 颜色校正矩阵
  • 色彩空间转换
  • 亮度/色度噪声过滤器
  • 亮度降噪
  • 双边过滤
  • 非局部均值去噪
  • 边缘增强
  • 假色抑制
  • 色相/饱和度控制
  • 亮度/对比度控制

关于项目的其他介绍,可以查看项目代码

isp

https://github.com/mushfiqulalam/isp

用python实现的ISP架构,整体项目架构不如OpenISP,但是有几个算法是OpenISP没有的,可以综合两者看下,主要实现的算法如下:

=> 黑电平校正[e]

=> 渐晕/镜头阴影校正[e]

=> 坏像素校正[e]

=> 通道增益白平衡[e]

=> Bayer denoise[d]

=> Demosaic[m]

=> Demosaic 伪影减少 [m]

=> 颜色校正[e]

=> Gamma[e]

=> 色差校正 [m]

=> 色调映射[e]

=> 颜色增强[m]

=> 降噪[e]

=> 锐化[e]

=> 失真校正[e]

其中,[e]、[m] 和 [d] 分别表示当前算法上的简单、中等或困难。

利用 MATLAB 和 DCRAW 处理数码相机 RAW 文件的完整流程

http://t.csdn.cn/ZV6j8

这篇文章非常详细地介绍了利用matlab处理RAW图像流程,包括每一步处理后图像的现象以及代码,非常值得一看~

matlab_isp

https://github.com/EricMiukyQin/Raw_image_processing_pipeline

https://github.com/WaterdropsKun/ISP_Matlab

https://github.com/sauravgupta139/Image_Processing

https://github.com/xiaoshipipi/ISP_matlab

以上都是matlab实现ISP架构的源码,但是项目不完整,没有说明,建议结合上面文章一起了解相关函数作用。

ISP-pipeline-hdrplus

https://github.com/jhfmat/ISP-pipeline-hdrplus

173a866b3a59fc6b996b9f2ec70530ed.png

Matlib 是一个开源(C/C++)图像算法库,可在多平台(Window、Linux、Android)下使用,包含各种常规图像处理算法,所有功能均采用底层优化技术,包括(Neon、Openmp、Linebuf、Mempool等),性能比OpenCV快,代码只有1M,非常简化,没有依赖,使用起来非常方便,我们可以在上面使用neon指令窗口平台开发,开发使用非常友好,可以快速将开发集成到自己的代码中。

bc372423e48599006e88b8a6fdd4e68a.png

这也是使用c/c++开发的ISP架构,据作者介绍,自己也是非常喜欢ISP这个领域,项目里也有作者建立的交流群,

039a9989f06691fe62ee7430ffa39630.png

zynq_isp

https://github.com/bxinquan/zynq_camera_vdma_lcd

介绍

本项目基于zynq-7020(正点原子启明星+OV5640+4.3'800x480)实现了ISP图像处理(将ov5640的isp关闭,在7020上实现ISP功能),输出到LCD和HDMI,软件基于SDK裸机开发

实现的算法

处理模块

  • isp_dpc - 坏点校正 (5x5领域内的8个临近像素同时大于或同时小于中心像素,且差值大于门限,则认为坏点,使用中值替换)
  • isp_blc - 黑电平校正 (RGGB四通道分别减去配置好的黑电平值)
  • isp_bnr - 拜耳降噪 (可选择的高斯滤波器)
  • isp_dgain - 数字增益 (直接乘以配置好增益值)
  • isp_demosaic - 去马赛克 (G基于边缘方向上插值 RB基于色差恒定理论插值)
  • isp_wb - 白平衡增益 (RGB三通道乘以配置的增益值)
  • isp_ccm - 色彩校正矩阵 (RGB三通道乘以配置的3x3矩阵)
  • isp_csc - 色彩空间转换 (基于整数优化的RGB2YUV转换公式)
  • isp_gamma - Gamma校正 (对亮度基于查表的Gamma校正)
  • isp_2dnr - 2d降噪(7x7双边滤波降噪)
  • isp_ee - 边缘增强 (基于特定的3x3滤波器)

统计模块

  • isp_stat_ae - 自动曝光统计 (支持统计选取区域内亮度总和与像素个数,支持RGGB四通道直方图统计)
  • isp_stat_awb - 自动白平衡统计 (支持符合白点限定条件的RGB三通道数值总和与白像素个数,支持RGB三通道直方图统计)

ISP Lite IP

位置: zynq_camera_vdma_lcd/xil_ip_repo/xil_isp_lite_1.0

这个项目包含了常规的算法,基本可以覆盖常规的SNSOR,虽然项目介绍的比较少(基本齐全),但是提供了Vivado的完整工程,包含所有的源码,亲测编译没问题,功能尚未验证。

总结

今天介绍了3个主流高级语言(MATLAB、C/C++、Python)实现的ISP架构,前面三个平台架构适合学习ISP架构,如果之前没有任何高级语言的基础,建议使用python(人生苦短,我用Python)入门。最后FPGA实现的方案也是非常值得学习的,ZYNQ020价格不贵,值得深入学习。

还有就是最近使用HLS实现的ISP架构也很快和大家见面了,还在努力中...

最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面有什么感兴趣方面的项目,大家可以在后台留言或者加微信留言,今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。

原文:OpenFPGA
作者:碎碎思

相关文章推荐

更多FPGA技术干货请关注FPGA 的逻辑技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
10512
内容数
513
FPGA Logic 二三事
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息