【博文连载】3X3 Bayer阵列恢复的HDL-VIP实现 2024-05-22 09:57:49 由于Bayer阵列的恢复,密切关系到奇偶行、即奇偶像素的坐标,因此如果没有处理好这方面的参数,势必会导致Bayer阵列恢复的失败。这里通过奇偶行、像素的地址,来实现Bayer阵列的恢复算法,如下所示:其中OddLINE_OddPOINT为奇数行奇数像素,OddLINE_Even_POINT为奇数行偶数像素,EvenLINE_OddPOINT为偶数行,奇数像素,EvenLINE_EvenPOINT为偶数行,偶数像素。通过CASE语句,描述了最简单的3X3的Bayer阵列恢复,因此如果Sensor输出的顺序发生改变,只需要修改这几个参数就OK了。不过分析前文中,我们优化过的3X3阵列生成方案,得到的波形如下所示:由于我们只进行了行边缘像素的镜像操作,列边缘像素的镜像操作略复杂,这里没有做处理,因此从图中可知,输出的3X3阵列,奇数行的中心实际上为原图像的偶数行。因此我们人为的修改奇、偶行的参数,如下所示:此时刚好将列对换了,但由于我们的行为完整的镜像操作,因此保持可以直接转换过去。再次我们只需修改localparam参数即可。。。这一步非常的重要!!最后,由于Bayer阵列的恢复消耗了2个时钟,因为认为的将行场信号偏移2个时钟,如下所示:这样,我们便得到了完整的,Bayer阵列恢复后的,RGB888的视频流数据。这部分的Modelsim仿真波形,如下所示:VIP_RAW8_RGB888的例化如下所示:最后,将Video_Image_Processor模块输出的RGB888,转换为RGB565(因为VIP Mini板卡的SDRAM只有16bit;VIP Big支持32bit可以直接连续存储RGB888 24bit的像素)后输出给SDRAM输入端口。全编译并下载测试,得到恢复后的RGB图像。这里Bingo通过Bayer阵列图像的显示、恢复后的彩色图像显示,以及RGB565采集、PC RAW8Bit图像采集的显示进行对比分析,如下所示:(1) Bayer阵列图像通过灰度显示:从图中可见,直接将RAW,通过R = G = B = RAW也能显示,近似于灰度的图像,但由于相邻像素的彩色深度不同,会有网格的现象。这种方式用来验证CMOS Sensor输出的Bayer阵列图像是否正确,是一种有效的方法。如果想更透彻的研究Bayer,可以借助Matlab来做实验,如下是Bingo将通过RGB图像转换你的Bayer阵列图像,以及原图(仅做参考):(2) Bayer阵列恢复后的RGB888→RGB565图像通过3X3阵列恢复,将得到的Bayer阵列恢复成了彩色图像。(3) 直接输出的RGB565图像上图为CMOS直接输出的RGB565图像,与(2)中由Bayer阵列恢复得到的彩色图像对比,可见恢复后的图像色彩更鲜艳,而CMOS直接输出的RGB565图像,细节略显模糊。。。这主要是传感器由于面积功耗等局限性,不能在里面做较为复杂的算法,只是简单的2行插值,因此恢复结果有较大的局限性。虽然我们目前也只是实现了简单的Bayer恢复,但竟然已经比Sensor输出的RGB565好了,真的是无语。。。(4) PC端RAW8Bit图像采集最后,通过USB_VIP_Panle软件,采集8Bit的RAW阵列,通过软件恢复后的图像如上所示。可见该图质量明显优于FPGA Bayer恢复的图像。这个原因主要是由于PC端得到的是RGB888的24Bit的彩色图像,而在板卡这边,由于硬件资源的局限,得到的是16Bit的RGB565图像;并且更重要的,为了更优秀的画质,在PC端考了了Bayer恢复方向梯度上的因素,因此PC的效果秒败了FPGA。如果想要知道这部分算法实现的内容,请参考配套软件的源代码,谢谢!但从算法层面考虑,我们已经实现了基本的3*3 Bayer阵列的恢复算法。至于这种算法的优越性,是否有提升的空间,毋庸置疑,美好的未来是你们的。 赞 (0) 相关推荐 海思平台(hi3559/hi3519/hi3516/hi3518)下的ISP功能介绍及问题调试总结(包括黑光成像/逆光成像/降噪/宽动态wdr/偏色等问题) 海思平台下的ISP功能介绍及问题调试 平台说明 该调试是在海思平台下进行的(我用的是3559,在3519/3516测试也是没有问题的,只是部分参数稍微有差异.其海思他系列处理器的ISP调试大体上也是一 ... 深空摄影(45) · 第五章 · 第二节 · 2 Bayer Drizzle 2-2 Bayer Drizzle 如果以RGB三通道中的某一通道来审视彩色相机,拜耳滤镜就会形成另一种意义上的photosite.在采用SuperPixel的方式获取颜色时,图像的长宽被缩短到原来的 ... 【博文连载】动态Sobel阀值的HDL实现 完美是没有极限的,前面我们已经实现了固定阀值下,图像的边缘检测结果.不过如何能手动输入,或者控制阀值的大小,那其实更完美一点点. 既然我们能够在努力一点点,为何要放弃??? OK,Bingo这里打算教 ... 【博文连载】Sobel边缘检测算法的HDL实现 FPGA中针对以上矩阵进行算法移植.由于直接计算会因为负值而得到错误的结果,用补码表示比较繁琐,需要用到unsigned 以及signed类型,不适合FPGA的运算. cnblog有真oo无双的代码, ... 【博文连载】行阉割、水平像素镜像的优化版3X3实现 在图像算法中,无论是进行均值滤波.中值滤波,还是Sobel边缘检测算法.腐蚀运算.膨胀运算算法中,我们都是用的到了3X3的矩阵,即教程设计的VIP_Matrix_Generate_3X3_8Bit,关 ... 【博文连载】Median_Filter均值滤波算法的实现 ChinaAET<电子应用技术>出版过一篇值得参考的<基于FPGA的实时中值滤波器的硬件实现>,该文采用FPGA+SRAM实现了实时中值滤波,思维值得参考(当然Bingo认为实 ... 【博文连载】边缘检测算法介绍 所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征.边缘存在于目标.背景和区域之间,所以,它是图像分割所依赖的最重要的依据.由于边缘是位置的标志,对灰度的变化不敏感,,因此,边缘 ... 【博文连载】中值滤波算法的介绍 言归正传,我们先挑一个相对最简单的滤波算法(其实均值滤波更简单,但是它对边缘的保持太差,那就稍微努力点用中值滤波吧).进行中值滤波不仅可以去除孤点噪声,而且可以保持图像的边缘特性,不会使图像产生显著的 ... 【博文连载】【VGA+USB】灰度图像的均值滤波算法实现 图像处理算法可以在RGB域处理,也可以在灰度域处理,牛逼的还可以在Bayer处理.但是大部分目标识别.跟踪.检测等图像处理算法,都是灰度域处理的,因为灰度除了没有色度,以及包含了基本图像处理所需的信息 ... 【博文连载】Bingo版HDL-VIP时序约定 在6.3节中Bayer恢复RGB,其实我们已经或多或少的接触到Bingo设计的VIP模块了.并且我们通过CMOS_RGB565_Capture模块(当然RAW.YCbCr模式的采集,接口不变),已经得 ... 【博文连载】PCIe扫盲——关于PCIe参考时钟的讨论 本文来聊一聊PCIe系统中的参考时钟,主要参考资料为PCIe Base Spec和CEM Spec.在1.0a和1.1版本的PCIe Base Spec中并没有详细的关于参考时钟的描述,而是在与之对应 ...