目录
- 1 背景
- 2、FPGA高端图像ISP培训课程
-
- 2.1、图像ISP培训课程架构
- 2.2、图像ISP培训课程内容
- 2.3、图像ISP培训课程1:采集IMX327相机RWA12原图
- 2.4、图像ISP培训课程2:课程1+Bayer转RGB显示
- 2.5、图像ISP培训课程3:课程2+AE自动曝光显示
- 2.6、图像ISP培训课程4:课程3+AWB自动白平衡显示
- 2.7、图像ISP培训课程5:课程4+CCM颜色校正显示
- 2.8、图像ISP培训课程6:课程5+Gamma伽马校正显示
- 2.9、图像ISP培训课程7:课程6+Resize图像缩放显示
- 2.10、图像ISP培训课程8:课程6+Enhance图像增强显示
- 2.11、图像ISP培训课程9:集成完整图像ISP处理显示
- 3、其他FPGA项目推荐
- 4、往期学员反馈
- 5、课程资料
FPGA高端图像ISP培训课程,提供工程源码+文档教程+FPGA开发板
FPGA高端图像ISP培训课程
1 背景
1.1、什么是FPGA图像ISP?
FPGA图像ISP(Image Signal Processor)指基于现场可编程门阵列(FPGA)硬件平台实现的图像信号处理器,主要用于对图像传感器(如CMOS/CCD)输出的原始数据(如Bayer格式)进行实时处理,生成高质量、可识别的数字图像。其核心在于结合硬件并行性与可编程性,满足高实时性、低延时的图像处理需求。以下从定义、技术构成、优势三方面详细解析:
FPGA图像ISP的核心构成
基础处理流程
ISP的核心任务是将传感器原始数据转化为可视图像,流程包含以下关键模块:
黑电平校正(BLC):消除传感器暗电流噪声
自动白平衡(AWB):根据环境光调整色温,确保白色物体真实还原
去马赛克(Demosaic):将Bayer格式的单通道数据插值为全彩RGB图像(核心算法)
颜色矫正矩阵(CCM):修正颜色偏差,匹配人眼感知
Gamma矫正:优化亮度非线性响应,提升对比度
边沿增强(EE)与降噪:锐化细节并抑制噪声
3A算法:自动对焦(AF)、自动曝光(AE)、自动白平衡(AWB)的动态控制
FPGA实现的特殊技术环节
区别于通用处理器或ASIC方案,FPGA需额外解决以下问题:
传感器接口适配:支持MIPI、LVDS等接口接入,处理全局快门/卷帘快门的差异数据
实时架构设计:传统行缓存架构易导致高延时,现代方案采用AXI-Stream等高速总线,消除消隐区浪费,提升带宽利用率至90%以上
软硬件协同:在FPGA内嵌软核(如ARM Cortex-M)实现3A算法动态调参,避免外挂单片机导致的延迟瓶颈
FPGA图像ISP的核心优势
FPGA方案在特定场景中具备不可替代性,优势如下:
对比:FPGA vs ASIC/CPU方案
FPGA在特定领域具备显著优势,但需权衡适用场景:
典型应用场景
FPGA图像ISP的核心价值体现在以下高要求领域:
医疗影像
内窥镜/手术机器人:依赖微秒级延时确保操作实时性(如米联客方案用于4K荧光内窥镜)
低光照增强:融合近红外数据提升暗场细节(Spectral Edge方案支持RGB-IR四通道处理)
自动驾驶与机器人
传感器融合:同时处理多路摄像头+雷达数据,低延时反馈控制
HDR重构:应对强逆光场景,保留高动态范围细节
工业视觉
高速缺陷检测(如半导体晶圆):300MHz频率支持μm级精度实时分析
红外-可见光双谱分析:FPGA灵活架构支持多光谱融合(如电力设备热斑检测)
总结
FPGA图像ISP是硬件加速的图像处理引擎,本质是通过可编程逻辑实现低延时、高定制的ISP流水线。其技术核心在于并行架构设计、传感器接口优化及软硬件协同调参。在实时性要求严苛(如医疗、自动驾驶)、场景多变(如多光谱融合)、或需长周期稳定供应(工业设备)的领域,FPGA方案具备显著优势,成为ASIC与CPU方案的重要补充。随着红外与可见光融合、8K视频处理等需求爆发,FPGA-ISP在边缘智能设备中的渗透率将持续提升
1.2、FPGA图像ISP就业前景
FPGA图像ISP岗位核心分析
行业现状与前景
现状:
技术壁垒高:ISP涉及复杂的图像处理流程(如3A算法、HDR、去噪、Demosaic等),需兼顾硬件实现与算法优化,调试周期长且模块间相互影响。
需求领域扩展:传统应用于医疗内窥镜、工业相机(如北京中科内镜、卓外医疗),现向智能汽车(自动驾驶传感器)、AI视觉(RGB-IR成像)延伸。
人才稀缺性:资深架构师年薪可达80万+(深圳岗位要求10年经验),但初级岗位多要求硕士学历或项目经验。
前景:
自动驾驶驱动:IEEE P2020工作组推动汽车ISP标准制定,催生新岗位需求。
国产替代加速:医疗与工业领域(如鑫图光电、卓外医疗)积极研发4K/荧光内窥镜,打破国外垄断。
从业要求
薪资与福利待遇
薪资范围(月薪·税前):
初级(0-3年):15-25K · 14薪(上海卓外医疗)
中级(3-5年):20-30K · 14薪(成都鑫图光电)
资深(5年+):40-60K · 16薪(深圳架构师岗位)
福利:
五险一金、项目奖金(5%-20%年薪)、带薪年假、体检、员工旅游。
部分企业提供落户支持(如上海)。
职业生涯可持续性
优势:
技术纵深强:FPGA+ISP技能组合难以被软件替代,医疗/汽车领域经验积累带来溢价。
转型方向广:可转向AI硬件加速、多模态传感器融合(如自动驾驶感知系统)。
挑战:
学习曲线陡峭:需持续跟进ISO/IEEE新标准(如HDR、3DNR)。
岗位地域集中:北京、上海、深圳、成都的医疗/芯片企业为主。
横向职业对比:FPGA图像ISP vs 软件开发 vs 文职
下表综合薪资、门槛、发展等维度对比:
薪资增长趋势:FPGA图像ISP岗3年经验平均年薪增幅达25%(医疗/汽车领域溢价最高)
1.3、本FPGA图像ISP培训课程的优势
本FPGA图像ISP培训课程和友商相比,优势如下:
2、FPGA高端图像ISP培训课程
本博客为FPGA高端图像ISP培训课程,需要学习者有一定的FPGA基础,如果学习者觉得太难,则可以去看看本博主之前发布的FPGA高端图像处理培训课程,该课程现对基础一些,博客链接如下:
点击直接前往
2.1、图像ISP培训课程架构
本图像ISP培训课程遵循从易到难、由点到面、循序渐进、前后呼应、前因后果的原则,分为9节课程,后一节课程由前一节课程发展而来,前后课程有因果关系、有易难渐进;图像ISP培训课程架构如下:
2.2、图像ISP培训课程内容
图像ISP培训课程包含如下内容:
1、9套课程对应的9套vivado工程源码
2、9套课程对应的9套视频讲解教程
3、ISP相关IP核官方数据手册文档
4、提供永久技术支持和答疑
5、FPGA开发板(K7-325T),板子为自愿考虑,可选择不要
6、IMX327相机,相机为自愿考虑,可选择不要
具体清单如下:
2.3、图像ISP培训课程1:采集IMX327相机RWA12原图
第一节课肯定是最简单的,没有任何图像ISP处理,只需要实现FPGA采集IMX327相机RWA12原图,然后输出显示即可;
之所以第一节课不加入图像ISP处理,是为了使学习者从最简单的图像采集入手,看看最原始的图像是有多差,然后一步步加入ISP图像处理后,图像由丑变美的过程,用视觉震撼来达到ISP图像处理的成就感;
FPGA工程设计架构
图像ISP培训课程1的FPGA设计架构如下:
本设计基于Xilinx的Kintex7-325T中端FPGA开发板,视频输入源为IMX327 MIPI摄像头,在SDK端通过i2c总线软件配置IMX327 为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@30Hz;IMX327 MIPI摄像头LVDS差分对经过权电阻网络实现MIPI-DPHY功能,即在MIPI物理层分离LP电路和HS电路,然后后接入FPGA的HS BANK的LVDS差分IO;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI CSI2-RX功能,即实现MIPI链路层和协议层解码功能,并输出AXI4-Stream格式的RAW12格式视频,时序为1个像素时钟输出一个像素数据,该IP由本博专供提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;但课程1我们不做处理,直接输出显示;然后使用Xilinx官方推荐的VDMA的图像缓存架构将视频缓存到板载的DDR3中;然后使用Xilinx官方推荐的AXI4-Stream to Video Out接收VDMA读出的视频,并转换为RGB视频流输出;然后使用本博主提供的、纯verilog代码实现的RGB转HDMI模块输出HDMI视频,输出分辨率为1920x1080@60Hz;最后通过板载HDMI接口输出到外部显示器显示即可;
Vivado工程源码解析
课程1的Vivado工程由Block Design和SDK软件组成;
Block Design完成FPGA逻辑设计;
SDK软件完成对Block Design中相关IP核的配置和IMX327的初始化配置;
Block Design设计截图如下:
其中粗红箭头为视频流走向;
SDK软件设计截图如下:
Vivado工程源码总体如下:
开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@30Hz;
输出:HDMI,分辨率1920x1080@60Hz;
图像缓存方案:Xilinx官方的VDMA方案;
图像缓存路径:DDR3;
图像ISP处理:无;
工程作用:输出IMX327 的RAW12原始图像,为后面的图像ISP处理做原始比较;
工程的资源消耗和功耗如下:
上板调试验证
图像ISP培训课程1:采集IMX327相机RWA12原图,上板调试验证视频如下:
RAW12原图显示
可以看到,RWA12图像为灰度图像,相比于友商ISP课程的RWA10,RWA12图像更为清晰;
但这样的图像是原始图像,没有耀眼的色彩和细腻的细节呈现,所以需要图像ISP处理;
2.4、图像ISP培训课程2:课程1+Bayer转RGB显示
FPGA工程设计架构
图像ISP培训课程2的FPGA设计架构如下:
本设计基于Xilinx的Kintex7-325T中端FPGA开发板,视频输入源为IMX327 MIPI摄像头,在SDK端通过i2c总线软件配置IMX327 为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@30Hz;IMX327 MIPI摄像头LVDS差分对经过权电阻网络实现MIPI-DPHY功能,即在MIPI物理层分离LP电路和HS电路,然后后接入FPGA的HS BANK的LVDS差分IO;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI CSI2-RX功能,即实现MIPI链路层和协议层解码功能,并输出AXI4-Stream格式的RAW12格式视频,时序为1个像素时钟输出一个像素数据,该IP由本博专供提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;课程2在课程1的基础上加入了Bayer转RGB处理,调用Xilinx官方的Color Filter Array Interpolation IP核实现Bayer转RGB,输入视频格式为RAW12;然后使用Xilinx官方推荐的VDMA的图像缓存架构将视频缓存到板载的DDR3中;然后使用Xilinx官方推荐的AXI4-Stream to Video Out接收VDMA读出的视频,并转换为RGB视频流输出;然后使用本博主提供的、纯verilog代码实现的RGB转HDMI模块输出HDMI视频,输出分辨率为1920x1080@60Hz;最后通过板载HDMI接口输出到外部显示器显示即可;
Vivado工程源码解析
课程2的Vivado工程由Block Design和SDK软件组成;
Block Design完成FPGA逻辑设计;
SDK软件完成对Block Design中相关IP核的配置和IMX327的初始化配置;
Block Design设计在前章节课程1的基础上加入了Color Filter Array Interpolation IP核,所以这里只截图新加入的ISP部分,截图如下:
SDK软件设计截图如下:
Vivado工程源码总体如下:
开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@30Hz;
输出:HDMI,分辨率1920x1080@60Hz;
图像缓存方案:Xilinx官方的VDMA方案;
图像缓存路径:DDR3;
图像ISP处理:Bayer转RGB,知识点为“RWA12转RGB算法与控制”;
工程作用:输出Bayer转RGB处理后的图像,并和前后处理效果做比较;
工程的资源消耗和功耗如下:
上板调试验证
图像ISP培训课程2:课程1+Bayer转RGB显示,上板调试验证视频如下:
Bayer转RGB显示
可以看到,相比于课程1的RAW12灰度原图,经过Bayer转RGB处理后的图像已经有了彩色效果;
但RGB色彩依然偏绿,这是因为没有更深刻、更细节的图像细节处理,所以还需要继续图像ISP处理;
这里顺便解释一下色彩偏绿的原因,IMX327的彩色滤光片阵列(CFA)为:
第一行:G-B-G-B…
第二行:R-G-R-G…
每个像素仅捕获一种颜色(R、G或B),通过特定排列模式覆盖传感器表面;
这种排列使得绿色像素占50%(人眼对绿色最敏感),红蓝各占25%,从而在节省成本的同时逼近全彩效果;
所以呈现的色彩偏绿;
而且,由于室内光线较弱,可以看到,输出的图像也光线较弱,这样的呈像是不符合工业要求的,就好比你的手机摄像,不能自动曝光,不能在暗环境中拍出清晰的视频,这样的手机你还愿意买吗?
2.5、图像ISP培训课程3:课程2+AE自动曝光显示
FPGA工程设计架构
图像ISP培训课程3的FPGA设计架构如下:
本设计基于Xilinx的Kintex7-325T中端FPGA开发板,视频输入源为IMX327 MIPI摄像头,在SDK端通过i2c总线软件配置IMX327 为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@30Hz;IMX327 MIPI摄像头LVDS差分对经过权电阻网络实现MIPI-DPHY功能,即在MIPI物理层分离LP电路和HS电路,然后后接入FPGA的HS BANK的LVDS差分IO;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI CSI2-RX功能,即实现MIPI链路层和协议层解码功能,并输出AXI4-Stream格式的RAW12格式视频,时序为1个像素时钟输出一个像素数据,该IP由本博专供提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;课程3在课程2的基础上加入了AE自动曝光处理;使用纯verilog实现的逐行视频平均亮度计算模块实现每一行视频的平均亮度计算,并在每行结束时将平均亮度值通过AXI4-Lite总线传输给SDK软件端做阈值比较,如果平均亮度低于阈值,则通过i2c总线写入递增的亮度值到AE配置寄存器,整个过程使用FPGA逻辑+SDK软件联合实现AE自动曝光;然后使用Xilinx官方推荐的VDMA的图像缓存架构将视频缓存到板载的DDR3中;然后使用Xilinx官方推荐的AXI4-Stream to Video Out接收VDMA读出的视频,并转换为RGB视频流输出;然后使用本博主提供的、纯verilog代码实现的RGB转HDMI模块输出HDMI视频,输出分辨率为1920x1080@60Hz;最后通过板载HDMI接口输出到外部显示器显示即可;
Vivado工程源码解析
课程3的Vivado工程由Block Design和SDK软件组成;
Block Design完成FPGA逻辑设计;
SDK软件完成对Block Design中相关IP核的配置和IMX327的初始化配置;
Block Design设计在前章节课程2的基础上加入了AE自动曝光处理,所以这里只截图新加入的ISP部分,截图如下:
SDK软件设计截图如下:
Vivado工程源码总体如下:
开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@30Hz;
输出:HDMI,分辨率1920x1080@60Hz;
图像缓存方案:Xilinx官方的VDMA方案;
图像缓存路径:DDR3;
图像ISP处理:AE自动曝光,知识点为“AE自动曝光算法与控制”;
工程作用:输出AE自动曝光处理后的图像,并和前后处理效果做比较;
工程的资源消耗和功耗如下:
上板调试验证
图像ISP培训课程3:课程2+AE自动曝光显示,上板调试验证视频如下:
AE自动曝显示
可以看到,相比于课程2的Bayer转RGB图像,经过AE自动曝光处理后的图像已经有了自动增强亮度的功能;
由于室内光线较弱,刚上电时,图像呈现的图像也光线较弱,随后在-AE自动曝的处理下,图像亮度逐渐增强,当达到阈值和最优视觉效果时,则停止继续增强亮度;就好比你的手机摄像,有自动曝光功能,在暗环境中拍出了清晰的视频,这样的手机你应该会考虑买吧?
但是,这样的图像依然不好看,虽然解决了亮度问题,但颜色偏绿,这是因为没有更深刻、更细节的图像细节处理,所以还需要继续图像ISP处理;
2.6、图像ISP培训课程4:课程3+AWB自动白平衡显示
FPGA工程设计架构
图像ISP培训课程4的FPGA设计架构如下:
本设计基于Xilinx的Kintex7-325T中端FPGA开发板,视频输入源为IMX327 MIPI摄像头,在SDK端通过i2c总线软件配置IMX327 为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@30Hz;IMX327 MIPI摄像头LVDS差分对经过权电阻网络实现MIPI-DPHY功能,即在MIPI物理层分离LP电路和HS电路,然后后接入FPGA的HS BANK的LVDS差分IO;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI CSI2-RX功能,即实现MIPI链路层和协议层解码功能,并输出AXI4-Stream格式的RAW12格式视频,时序为1个像素时钟输出一个像素数据,该IP由本博专供提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;课程4在课程3的基础上加入了AWB自动白平衡处理;调用Xilinx官方的Color Correction Matrix IP核实现AWB自动白平衡,输入像素位宽为12bit;然后使用Xilinx官方推荐的VDMA的图像缓存架构将视频缓存到板载的DDR3中;然后使用Xilinx官方推荐的AXI4-Stream to Video Out接收VDMA读出的视频,并转换为RGB视频流输出;然后使用本博主提供的、纯verilog代码实现的RGB转HDMI模块输出HDMI视频,输出分辨率为1920x1080@60Hz;最后通过板载HDMI接口输出到外部显示器显示即可;
Vivado工程源码解析
课程4的Vivado工程由Block Design和SDK软件组成;
Block Design完成FPGA逻辑设计;
SDK软件完成对Block Design中相关IP核的配置和IMX327的初始化配置;
Block Design设计在前章节课程3的基础上加入了Color Correction Matrix IP核,所以这里只截图新加入的ISP部分,截图如下:
SDK软件设计截图如下:
Vivado工程源码总体如下:
开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@30Hz;
输出:HDMI,分辨率1920x1080@60Hz;
图像缓存方案:Xilinx官方的VDMA方案;
图像缓存路径:DDR3;
图像ISP处理:AWB自动白平衡,知识点为“AWB自动白平衡算法与控制”;
工程作用:输出AWB自动白平衡处理后的图像,并和前后处理效果做比较;
工程的资源消耗和功耗如下:
上板调试验证
图像ISP培训课程4:课程3+AWB自动白平衡显示,上板调试验证视频如下:
AWB自动白平衡显示
可以看到,相比于课程3的Bayer转RGB图像,经过AWB自动白平衡理后的图像已经有了鲜艳亮丽的彩色;
且具有AE自动曝光的功能;
虽然图像已经接近自然环境颜色,但感觉还是太过生硬,特别是在人脸成像时,皮肤成像太过毛糙,没有细腻感,也就是说还没有达到初步美颜的效果,就好你的手机拍照,把冠希的拍成了本山,这样的手机你还会买吗?所以还需要继续图像ISP处理;
2.7、图像ISP培训课程5:课程4+CCM颜色校正显示
FPGA工程设计架构
图像ISP培训课程5的FPGA设计架构如下:
本设计基于Xilinx的Kintex7-325T中端FPGA开发板,视频输入源为IMX327 MIPI摄像头,在SDK端通过i2c总线软件配置IMX327 为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@30Hz;IMX327 MIPI摄像头LVDS差分对经过权电阻网络实现MIPI-DPHY功能,即在MIPI物理层分离LP电路和HS电路,然后后接入FPGA的HS BANK的LVDS差分IO;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI CSI2-RX功能,即实现MIPI链路层和协议层解码功能,并输出AXI4-Stream格式的RAW12格式视频,时序为1个像素时钟输出一个像素数据,该IP由本博专供提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;课程5在课程4的基础上加入了CCM颜色校正处理;调用Xilinx官方的Color Correction Matrix IP核实现CCM颜色校正,输入像素位宽为12bit;然后使用Xilinx官方推荐的VDMA的图像缓存架构将视频缓存到板载的DDR3中;然后使用Xilinx官方推荐的AXI4-Stream to Video Out接收VDMA读出的视频,并转换为RGB视频流输出;然后使用本博主提供的、纯verilog代码实现的RGB转HDMI模块输出HDMI视频,输出分辨率为1920x1080@60Hz;最后通过板载HDMI接口输出到外部显示器显示即可;
Vivado工程源码解析
课程5的Vivado工程由Block Design和SDK软件组成;
Block Design完成FPGA逻辑设计;
SDK软件完成对Block Design中相关IP核的配置和IMX327的初始化配置;
Block Design设计在前章节课程4的基础上加入了Color Correction Matrix IP核,所以这里只截图新加入的ISP部分,截图如下:
SDK软件设计截图如下:
Vivado工程源码总体如下:
开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@30Hz;
输出:HDMI,分辨率1920x1080@60Hz;
图像缓存方案:Xilinx官方的VDMA方案;
图像缓存路径:DDR3;
图像ISP处理:CCM颜色校正,知识点为“CCM颜色校正算法与控制”;
工程作用:输出CCM颜色校正处理后的图像,并和前后处理效果做比较;
工程的资源消耗和功耗如下:
上板调试验证
图像ISP培训课程5:课程4+CCM颜色校正显示,上板调试验证视频如下:
[video(video-jaCQZUiz-1752455632667)(type-csdn)(url-https://live.csdn.net/v/embed/485112)(image-https://v-blog.csdnimg.cn/asset/4572d581d68ee9034b729e76634a5bed/cover/Cover0.jpg)(title-CCM颜色校正显示]
可以看到,相比于课程4的AWB自动白平衡图像,经过CCM颜色校正理后的图像已经有了更为细腻的颜色呈现;
且具有AE自动曝光的功能;
当脸成像时,皮肤成像有了初步美颜的效果,演示视频没有对着人脸成像细节,因为博主长相实属残次品,免得污染学习者视觉;学习者可以拿到工程和FPGA开发板,对着自己的脸呈现体验前后效果;
虽然经过CCM颜色校正处理后的图像貌似已经很好,在友商的ISP课程看来已经达到教学目的了,但我们是FPGA开发工程师,是解决工业需求的,所以还需要进一步优化,最求完美,还需要继续图像ISP处理;
2.8、图像ISP培训课程6:课程5+Gamma伽马校正显示
FPGA工程设计架构
图像ISP培训课程6的FPGA设计架构如下:
本设计基于Xilinx的Kintex7-325T中端FPGA开发板,视频输入源为IMX327 MIPI摄像头,在SDK端通过i2c总线软件配置IMX327 为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@30Hz;IMX327 MIPI摄像头LVDS差分对经过权电阻网络实现MIPI-DPHY功能,即在MIPI物理层分离LP电路和HS电路,然后后接入FPGA的HS BANK的LVDS差分IO;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI CSI2-RX功能,即实现MIPI链路层和协议层解码功能,并输出AXI4-Stream格式的RAW12格式视频,时序为1个像素时钟输出一个像素数据,该IP由本博专供提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;课程6在课程5的基础上加入了Gamma伽马校正处理;调用Xilinx官方的Gamma Corection IP核实现Gamma伽马校正,输入像素位宽为12bit;然后使用Xilinx官方推荐的VDMA的图像缓存架构将视频缓存到板载的DDR3中;然后使用Xilinx官方推荐的AXI4-Stream to Video Out接收VDMA读出的视频,并转换为RGB视频流输出;然后使用本博主提供的、纯verilog代码实现的RGB转HDMI模块输出HDMI视频,输出分辨率为1920x1080@60Hz;最后通过板载HDMI接口输出到外部显示器显示即可;
Vivado工程源码解析
课程6的Vivado工程由Block Design和SDK软件组成;
Block Design完成FPGA逻辑设计;
SDK软件完成对Block Design中相关IP核的配置和IMX327的初始化配置;
Block Design设计在前章节课程5的基础上加入了Gamma Corection IP核,所以这里只截图新加入的ISP部分,截图如下:
SDK软件设计截图如下:
Vivado工程源码总体如下:
开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@30Hz;
输出:HDMI,分辨率1920x1080@60Hz;
图像缓存方案:Xilinx官方的VDMA方案;
图像缓存路径:DDR3;
图像ISP处理:Gamma伽马校正,知识点为“Gamma伽马校正算法与控制”;
工程作用:输出Gamma伽马校正处理后的图像,并和前后处理效果做比较;
工程的资源消耗和功耗如下:
上板调试验证
图像ISP培训课程6:课程5+Gamma伽马校正显示,上板调试验证视频如下:
Gamma伽马校正显示
可以看到,相比于课程5的CCM颜色校正图像,经过Gamma伽马校正理后的图像其实已经很难用肉眼看出明显区别了,说明我们的图像ISP处理的确已经到了优化的极限边缘,已经很难再做出明显的更好体验了;
但真的就此放弃吗?
不!!!我太想进步了!!!
所以还需要进一步优化,最求完美,还需要继续图像ISP处理;
2.9、图像ISP培训课程7:课程6+Resize图像缩放显示
FPGA工程设计架构
图像ISP培训课程7的FPGA设计架构如下:
本设计基于Xilinx的Kintex7-325T中端FPGA开发板,视频输入源为IMX327 MIPI摄像头,在SDK端通过i2c总线软件配置IMX327 为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@30Hz;IMX327 MIPI摄像头LVDS差分对经过权电阻网络实现MIPI-DPHY功能,即在MIPI物理层分离LP电路和HS电路,然后后接入FPGA的HS BANK的LVDS差分IO;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI CSI2-RX功能,即实现MIPI链路层和协议层解码功能,并输出AXI4-Stream格式的RAW12格式视频,时序为1个像素时钟输出一个像素数据,该IP由本博专供提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;课程7在课程6的基础上加入了Resize图像缩放处理;调用由HLS实现的、基于双线性插值算法的图像缩放IP核实现Resize图像缩放,输入像素位宽为8bit;然后使用Xilinx官方推荐的VDMA的图像缓存架构将视频缓存到板载的DDR3中;然后使用Xilinx官方推荐的AXI4-Stream to Video Out接收VDMA读出的视频,并转换为RGB视频流输出;然后使用本博主提供的、纯verilog代码实现的RGB转HDMI模块输出HDMI视频,输出分辨率为缩放后的图像分辨率;最后通过板载HDMI接口输出到外部显示器显示即可;
Vivado工程源码解析
课程7的Vivado工程由Block Design和SDK软件组成;
Block Design完成FPGA逻辑设计;
SDK软件完成对Block Design中相关IP核的配置和IMX327的初始化配置;
Block Design设计在前章节课程6的基础上加入了Resize图像缩放IP核,所以这里只截图新加入的ISP部分,截图如下:
SDK软件设计截图如下:
Vivado工程源码总体如下:
开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@30Hz;
输出:HDMI,分辨率为缩放后的图像分辨率;
图像缓存方案:Xilinx官方的VDMA方案;
图像缓存路径:DDR3;
图像ISP处理:Resize图像缩放,知识点为“Resize图像缩放算法与控制”;
工程作用:输出Resize图像缩放处理后的图像,并和前后处理效果做比较;
工程的资源消耗和功耗如下:
上板调试验证
图像ISP培训课程7:课程6+Resize图像缩放显示,上板调试验证视频如下:
缩放案例1:1920x1080缩放到300x300
1920x1080缩放到300x300显示
缩放案例2:1920x1080缩放到1280x720
1920x1080缩放到1280x720显示
缩放案例3:1920x1080缩放到960x1080
1920x1080缩放到960x1080显示
缩放案例4:1920x1080缩放到1920x540
1920x1080缩放到1920x540显示
可以看到,相比于课程6的Gamma伽马校正图像,经过Resize图像缩放理后的图像可以自由切换分辨率,且缩放后的图像没有失真,保持了原来的高质量呈现,符合工业需求,碾压友商提供的研学性质的、不具备工业应用价值的课程;
其实已经很好了,说明我们的图像ISP处理的确已经到了优化的极限边缘,已经很难再做出明显的更好体验了;
但真的就此放弃吗?
不!!!我太想进步了!!!
所以还需要进一步优化,最求完美,还需要继续图像ISP处理;
2.10、图像ISP培训课程8:课程6+Enhance图像增强显示
FPGA工程设计架构
图像ISP培训课程8的FPGA设计架构如下:
本设计基于Xilinx的Kintex7-325T中端FPGA开发板,视频输入源为IMX327 MIPI摄像头,在SDK端通过i2c总线软件配置IMX327 为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@30Hz;IMX327 MIPI摄像头LVDS差分对经过权电阻网络实现MIPI-DPHY功能,即在MIPI物理层分离LP电路和HS电路,然后后接入FPGA的HS BANK的LVDS差分IO;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI CSI2-RX功能,即实现MIPI链路层和协议层解码功能,并输出AXI4-Stream格式的RAW12格式视频,时序为1个像素时钟输出一个像素数据,该IP由本博专供提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;课程8在课程6的基础上加入了Enhance图像增处理;调用Xilinx官方的Image Enhancement IP核实现Enhance图像增强,输入像素位宽为12bit;需要补充说明的是,Image Enhancement IP核只支持YUV输入,所以在Image Enhancement IP核前面需要添加Xilinx官方的RGB to YCrCb Color-Space Converter IP核实现RGB转YUV444,在Image Enhancement IP核后面还需要添加Xilinx官方的YCrCb to RGB Color-Space Converter IP核实现YUV444转RGB;然后使用Xilinx官方推荐的VDMA的图像缓存架构将视频缓存到板载的DDR3中;然后使用Xilinx官方推荐的AXI4-Stream to Video Out接收VDMA读出的视频,并转换为RGB视频流输出;然后使用本博主提供的、纯verilog代码实现的RGB转HDMI模块输出HDMI视频,输出分辨率为缩放后的图像分辨率;最后通过板载HDMI接口输出到外部显示器显示即可;
Vivado工程源码解析
课程8的Vivado工程由Block Design和SDK软件组成;
Block Design完成FPGA逻辑设计;
SDK软件完成对Block Design中相关IP核的配置和IMX327的初始化配置;
Block Design设计在前章节课程6的基础上加入了Image Enhancement IP核,所以这里只截图新加入的ISP部分,截图如下:
SDK软件设计截图如下:
Vivado工程源码总体如下:
开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@30Hz;
输出:HDMI,分辨率为1920x1080@60Hz;
图像缓存方案:Xilinx官方的VDMA方案;
图像缓存路径:DDR3;
图像ISP处理:Enhance图像增强,知识点为“Enhance图像增强算法与控制”;
工程作用:输出Enhance图像增强处理后的图像,并和前后处理效果做比较;
工程的资源消耗和功耗如下:
上板调试验证
图像ISP培训课程8:课程6+Enhance图像增强显示,上板调试验证视频如下:
Enhance图像增强显示
可以看到,相比于课程6的Gamma伽马校正图像,经过Enhance图像增强理后的图像真的已经很难用肉眼看出明显区别了,说明我们的图像ISP处理的确已经到了优化的极限边缘,已经很难再做出明显的更好体验了;
但真的就此放弃吗?
是的!!!我真的放弃了!!!
2.11、图像ISP培训课程9:集成完整图像ISP处理显示
FPGA工程设计架构
图像ISP培训课程9的FPGA设计架构如下:
本设计基于Xilinx的Kintex7-325T中端FPGA开发板,视频输入源为IMX327 MIPI摄像头,在SDK端通过i2c总线软件配置IMX327 为 MIPI4 Lane RAW12模式,输出有效分辨率为1920x1080@30Hz;IMX327 MIPI摄像头LVDS差分对经过权电阻网络实现MIPI-DPHY功能,即在MIPI物理层分离LP电路和HS电路,然后后接入FPGA的HS BANK的LVDS差分IO;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI CSI2-RX功能,即实现MIPI链路层和协议层解码功能,并输出AXI4-Stream格式的RAW12格式视频,时序为1个像素时钟输出一个像素数据,该IP由本博专供提供;至此,MIPI视频解码工作完成,但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,所以还需进行图像处理操作,也就是图像ISP操作;
完整的图像ISP处理流程为:
调用Xilinx官方的Color Filter Array Interpolation IP核实现Bayer转RGB,输入视频格式为RAW12;
使用纯verilog实现的逐行视频平均亮度计算模块实现每一行视频的平均亮度计算,并在每行结束时将平均亮度值通过AXI4-Lite总线传输给SDK软件端做阈值比较,如果平均亮度低于阈值,则通过i2c总线写入递增的亮度值到AE配置寄存器,整个过程使用FPGA逻辑+SDK软件联合实现AE自动曝光;
1、Bayer转RGB:
调用Xilinx官方的Color Filter Array Interpolation IP核实现Bayer转RGB,输入视频格式为RAW12;
2、AWB自动白平衡:
调用Xilinx官方的Color Correction Matrix IP核实现AWB自动白平衡,输入像素位宽为12bit;
3、CCM颜色校正:
调用Xilinx官方的Color Correction Matrix IP核实现CCM颜色校正,输入像素位宽为12bit;
4、Gamma伽马校正:
调用Xilinx官方的Gamma Corection IP核实现Gamma伽马校正,输入像素位宽为12bit;
5、Resize图像缩放:
调用由HLS实现的、基于双线性插值算法的图像缩放IP核实现Resize图像缩放,输入像素位宽为8bit;
6、Enhance图像增强:
调用Xilinx官方的Image Enhancement IP核实现Enhance图像增强,输入像素位宽为12bit;需要补充说明的是,Image Enhancement IP核只支持YUV输入,所以在Image Enhancement IP核前面需要添加Xilinx官方的RGB to YCrCb Color-Space Converter IP核实现RGB转YUV444,在Image Enhancement IP核后面还需要添加Xilinx官方的YCrCb to RGB Color-Space Converter IP核实现YUV444转RGB;
然后使用Xilinx官方推荐的VDMA的图像缓存架构将视频缓存到板载的DDR3中;然后使用Xilinx官方推荐的AXI4-Stream to Video Out接收VDMA读出的视频,并转换为RGB视频流输出;然后使用本博主提供的、纯verilog代码实现的RGB转HDMI模块输出HDMI视频,输出分辨率为缩放后的图像分辨率;最后通过板载HDMI接口输出到外部显示器显示即可;
Vivado工程源码解析
课程9的Vivado工程由Block Design和SDK软件组成;
Block Design完成FPGA逻辑设计;
SDK软件完成对Block Design中相关IP核的配置和IMX327的初始化配置;
Block Design设计在前章节课程1的基础上加入了完整图像ISP处理,所以这里只截图新加入的ISP部分,截图如下:
其中粗红箭头为视频流走向;
SDK软件设计截图如下:
Vivado工程源码总体如下:
开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@30Hz;
输出:HDMI,分辨率为1920x1080@60Hz;
图像缓存方案:Xilinx官方的VDMA方案;
图像缓存路径:DDR3;
图像ISP处理:完整图像ISP处理,知识点为“全流程、完整的图像ISP处理与控制”;
工程作用:输出全流程、完整的图像ISP处理后的图像,并和前后处理效果做比较;
工程的资源消耗和功耗如下:
上板调试验证
图像ISP培训课程9:集成完整图像ISP处理显示,上板调试验证视频如下:
FPGA高端图像ISP培训课程
可以看到,图像质量从丑到美的过程,正是我们ISP一步步处理的结果;
3、其他FPGA项目推荐
可进入我的博客主页,找到置顶博客并打开,那篇博客是把握所有的博客都做了归类,方便你快速找到自己感兴趣的FPGA项目,博客链接如下:
点击直接前往
4、往期学员反馈
经该学员同意后,本人截图了聊天记录,这个学生就读于一个民办三本院校,学的电子信息工程,把自己关在寝室自学了一个月我的工程,顺利找到了一家他自己较为满意的工作;
5、课程资料
课程资料如下:
FPGA高端图像ISP培训课程