- 博客(25)
- 收藏
- 关注
原创 图像锐化(Sharp)
图像锐化模块是ISP中的重量级模块,它决定了ISP最终输出的清晰度,该模块一般都在Y域做,紧跟在降噪的后面,把降噪丢失的细节补充回来。
2024-10-17 20:40:24 892
原创 去坏点(Defect Correct)
常规思路是直接把RAW图拆成R、G、B三个通道各自独立的三张图,但是在实际应用中,存在G通道不平衡的情况,简单来说光在经过滤镜的时候,由于光的能量会溢出,两个G分量会受到旁别颜色的影响,所以和R同一行的G被标记为Gr,和B同一行的被标记为Gb。效果提升了很多,但是也不算特别优秀,在帽子的羽毛处可以看出检测的结果并不是很好,羽毛处的一些边缘被标记成了坏点,此外,背景区域也有不少坏点漏检测,这说明坏点检测部分还有可以提升的空间,如果加入边缘检测辅助坏点判断,也许可以获得更好的效果。乍一看效果似乎还不错?
2024-09-02 16:51:54 1135
原创 第一章 图像降噪
图1是一个特别简单的ISP,只画出了ISP的刚需模块,其中降噪是贯穿ISP的重量级模块,不同的厂家有不同的结构,但是一般来说,ISP中的图像降噪会在RAW域或者是YUV域。在RAW域做降噪的好处是噪声形态没有被改变,此时的噪声还是来自sensor的白噪声,在这个位置做降噪不能开太大的力度,如果降噪力度过大,图像中的边界和细节就会被抹平,会影响图像最终的清晰度,但是不做RAW域降噪也会有问题。回忆一下。
2024-07-22 16:39:27 1191
原创 ISP | CCM和Gamma
在图像信号处理器(ISP)中,颜色校正矩阵(Color Correction Matrix,简称CCM)和Gamma是刚需模块,无论是哪个厂家的ISP,里面都肯定有CCM和Gamma模块,而且肯定是CCM在Gamma前面,在调试的时候,CCM和Gamma也有千丝万缕的关系,所以这两个模块放在一起理解比较合适。
2024-07-05 09:57:45 1452
原创 ISP算法 | 黑电平(BLC)
但是在高增益的情况下,OB的均值可能没变,但是方差变大了,这就是说OB的波动变大,此时如果还按照OB的均值来减,就有可能有较多的残余,且RGB分量会有明显的不平衡,后面再受到白平衡(Rgain、Bgain)的影响,图像暗处会偏紫。黑电平(Black Level)这个概念其实在不同的位置有不同的叫法,对于sensor厂家来说,黑电平指的是OB(Optical Black),就是光学上的绝对暗区,处于绝对暗区的像素是不曝光的,OB在sensor中的排列顺序如下图1所示。
2024-05-28 20:20:31 1238
原创 颜色空间(三)——RGB、Lab、HSV和YUV
图26中最外面那一圈标记出了光的波长,可以看见不同波长光分布的疏密程度有差别,蓝光和红光要密一些,绿色最稀疏,这意味着颜色的分布并不均匀。我们知道舌形图是XYZ颜色空间映射到X+Y+Z=1平面上的,而XYZ颜色空间是CIE通过颜色匹配实验测试出来的,它代表的是人眼对颜色的感知特性,这一定程度上说明,人眼对颜色的感知是不均匀的。
2024-05-26 11:43:37 2611
原创 图像处理算法 | 颜色空间(二)
接上篇内容,。还是强调一下以下内容来自于ICCV 2023的一个PPT,名称为《Understanding the in-camera rendering pipeline & the role of AI and deep learning》。到这里需要解释一下楼主为什么要把颜色空间拿出来写这么多,因为颜色是图像处理的基础。从摄影到算法,从P图到AI,都绕不开颜色,本号是专注ISP的,ISP中的白平衡、CCM、3DLUT、图像增强等模块,都是在和颜色打交道,既然绕不过去,那就只能学。
2024-04-29 09:05:51 1371
原创 图像处理算法 | 颜色空间(一)
CIE是这么做的,如图5所示,左边是测试色,右边是匹配色,匹配色是由R、G、B三个基光产生的,然后准备一个观测者,正对着观察颜色(要求视野为2度,这个角度人眼的色锥细胞最集中),然后不断的增加或者减少匹配色的三分量的比例,把这个比例记录下来,就获得了某个颜色的色匹配系数,把可见光的380nm~780nm全观测一遍,就获得了色匹配函数(图6所示)。最后得到的结果是图3中的曲线,注意这里的y轴,y轴代表的是测试光(或参考光)的匹配功率,也就是说,为了匹配参考光,source light需要调整到多大?
2024-04-20 10:26:18 1218
原创 ISP算法 | 白平衡(White Balance)
图2中还有一个柠檬,无论在什么光源下,柠檬都是黄色的,可以简单的理解为,如果选定黄色作为色彩平衡的目标,那么柠檬的黄色叠加光源的颜色,此时就很难分辨出光源的真实颜色了,但是如果选择白色,这个问题就不存在了。注意,光源的色温与光源本身的温度是两回事,通常两者是不相同的。也不是所有的色偏都需要被白平衡矫正,有时候色偏会让拍摄的图像呈现独特的氛围感,比如图4所示的这幅图像,给它橘色和蓝色两种不同的光源,得到的图像如图5所示,在暖光源的条件下,图像偏红,感觉更温馨,在冷光源的条件下,图像偏蓝,感觉更清冷。
2024-04-13 12:14:02 3649 1
原创 ISP算法 | Demosaic(二)
按照上述公式做出的结果如图8所示,会发现图像整体的清晰度好了一些,栅栏这里看起来的边缘会锐利一些,伪彩也变淡了一些,但是边缘仍然有很多锯齿,说明需要方向插值,根据上篇文章的介绍的demosaic插值原则,这里要从已知信息更多的G分量入手,坚持不懈的继续改进。R缺少的数据要多一点,除了插值中心点,还需要插值上下和左右的像素,插值公式如(2)所示,需要注意的是,尽量用已知的像素来做插值,不要用插值后的像素做下一次插值,被插值出的像素不一定是准确的,如果再拿来做一次插值,还会引入新的问题。
2024-04-01 21:54:09 1562 6
原创 图像处理算法 | Non-Local Means(下)
然后套用公式(5),用得到的w乘以当前搜索块就能得到当前的滤波结果,把搜索窗口内所有的权重块和滤波块累加起来,最后用滤波块的结果除以累加权重,最后得到一个块的滤波结果。此外,分析一下按像素做的特点,按照上篇《Non-Local Means(上)》公式(1)它把窗口内的差值做了求和,这一步其实是会让一些比较大的孤立噪声在相邻的窗口内持续的起作用,造成相邻块计算出的权重也比较小,平坦区域的降噪力度在部分区域变小,最后降噪力度不均匀,严重的时候还会产生伪纹理。具体算法实现已公开发表在Github,
2023-12-16 23:54:12 205
原创 图像处理算法 | Non-local Means(上)
这里的分子上有个max,对d^2-2sigma^2做了一个截止到0的限制,这样做的好处是,如果d^2-2sigma^2的差值是负数,则说明搜索块和当前块很接近,这个时候直接用max把差值置为0,此时权重为1,是块内的最大权重,如果这个差值很大,说明搜索块和当前块差异很大,差很大的块是不能贡献滤波系数的,此时exp函数会给出一个很小的权重,起到一个丢弃当前块的作用。前面的这个就是权重累加的作用,用w(p,q)的值和搜索块的中心点相乘,然后累加起来,除以归一化权重,就能得到最终的NML滤波结果。
2023-11-15 21:34:46 526
原创 图像处理算法 | 联合双边滤波(Joint Bilateral)
它就是在说,图像中的每个pixel都是以块为单位计算的,要经过两个高斯核获得滤波权重,所以图像中的核就是一个二维系统,图像中所有的pixel都要从里面过一遍,找到了合适的系统就能得到满意的效果。图6左边的I就是输入图像,右边的guide是I经过3×3高斯的结果,图中的(b)~(e)是根据guide计算出的权重,最终的混合权重作用在(a)上,和图5的值域权重相比,图6的值域权重要更干净一些,最终的混合权重几乎没什么噪点,纹理区域的边界也更清晰,所以联合双边滤波优于双边滤波。思路有了,现在开始做测试。
2023-10-16 21:05:33 443 1
原创 RTL硬件实现 | 定点化
RTL硬件实现是不能用浮点数计算的,必须要转换成整数才可以,所以任何算法在做硬件实现之前都要经过定点化这一步,定点化做的好,不仅可以简化逻辑,还可以节省不少硬件资源,下面介绍几种常用的定点化方法。
2023-10-01 12:25:27 291
原创 RTL硬件实现 | 基本数值运算
RTL的数值运算有很多需要注意的地方,特别是涉及到负数的时候,本章从最基础的数值存储(补码)开始,给出加减法、乘法和绝对值的实现方法,只涉及组合逻辑,不涉及时序逻辑,时序逻辑要多考虑一步,下次再说。
2023-10-01 12:25:10 194
原创 图像处理算法 | 图像边缘检测
由于本章要讨论的是各种求导算子对图像的处理效果,而Canny其实是一种算法,对于一个边缘检测算法来说,还需要配合阈值提取清晰的图像边界,但是本章不涉及阈值部分,所以Canny这里直接使用了matlab中的函数,这个函数给边缘检测的结果做了二值化,看看效果就好。Dog全称为Difference of Gaussian,就是两个Gauss做减法,本质上是一个带通滤波器,它的作用是把特别高频的分量给剔除,保留中频部分,当然也具备降噪性能,由于高斯核是可调节大小的,所以通过调整高斯核就可以调整边缘提取的频段。
2023-09-16 14:27:29 222
原创 图像处理算法 | 图像求导
(c)图是二阶导,二阶导是一阶导的导数,它描述的是亮度变化速度的快慢,也就是亮度变化的加速度,图像的亮度不可能一直沿某个方向增加或者是减少,速度达到最大后必定要转向,二阶导描述的就是这种转向的变化,在速度转向的时候,加速度过零点给速度另一个方向的增量,所以二阶导会产生双边缘效应,它描述了进入边缘和离开边缘的过程。以x轴方向的求导为例,一阶导定义了一个[1,-1]的算子,二阶导定义了一个[1,-2,1]的算子,用这两个算子对图像做卷积,就可以获得图像求导的结果。1. 首先要有一个方向,x或y方向。
2023-09-16 13:36:14 362 1
原创 图像处理算法 | 双边滤波
因为在图像中,有一个空间相似性的概念,当前pixel的亮度和其周围像素的亮度值接近的概率会高一些,离当前像素位置越远,则差异越大,高斯滤波就是基于这个概念设计的。双边的效果虽然好,但是双边的复杂度也很高,为O(Nr2),而且随着窗口r增大,计算量会进一步飙升,有不少论文都提出了改进算法,比如一种3维网格的快速双边算法,这种网格的快速双边算法做RTL硬件实现代价太大,从这里也可以看出来,对实现来说,挑选算法的重要性,有可能改进后复杂度下降了,反而不能硬件实现了。先说结论,双边滤波对孤立点的滤波效果不好。
2023-08-31 21:50:01 343
原创 图像处理算法 | 中值滤波
判断一个滤波器是否优秀,只要看它是否在去除噪声的同时还能保持住边界,从这个角度出发,中值滤波对椒盐噪声的降噪效果还不错,虽然图像被模糊了,但是椒盐噪声去除的很干净。前面的高斯滤波和均值滤波都是线性滤波器,在数字图像处理中,凡是算子(kernel)可以显式的写出来的滤波器,都是线性滤波器,比如高斯算子,sobel算子,拉普拉斯算子等。中值滤波就没有kernel了,简单的画个图,对于一个3×3的窗口,其中值滤波的结果就是窗口内9个数据排序,取中间的那个作为输出,下图中就是取45作为当前窗口的输出。
2023-08-01 19:41:48 1240
原创 图像处理算法 | 高斯滤波
1. 高斯滤波原理高斯滤波器的本质是一个二维低通系统,它通常是以一个矩阵的形式出现,比如式(1)这个5×5高斯核(又称为kernel),用它对图像做卷积,图像的高频分量会被打到低频,最终呈现的效果就是图像变模糊了。gaus_kenal=[4612646918961218361812691896461264](1)gaus{\_}kenal = \begin{bmatrix} 4& 6 &12 & 6 & 4\\ 6& 9 & 18 & 9 &am
2023-07-15 17:45:09 1305
原创 图像处理算法 | 先从卷积开始
如果我想知道我的收入在一年内的哪3个月最好(楼市旺季),那么我设计h(n)=[1,1,1];这就是为什么公式上面说h(n)需要翻转一下,因为在计算储蓄的这个情景下,我们的计算是沿时间(按月领工资,“月”就是时间)进行的,0.9对应的是“现在”,0.28对应的才是“过去”,我们习惯于把n作为x轴,越往右边,n应该越大,但是实际上0.9^n要表达的意思是,随着月份n的增加过去的收入被我不断消费掉了,所以不是h(n)必须要翻转,而是在时间这个坐标轴下,“过去”应该在“现在”的左边才合理,也就是下图3的样子。
2023-07-05 11:32:44 189 1
原创 本专栏介绍
从最基础的部分开始学习,把里面的常用滤波器都拆解出来,用matlab实现,让自己更直观的体会到每个基础的滤波器对图像的作用,然后再进入到图像处理中的每一个模块的学习,对每个模块的经典算法,并且找到相关的论文中详细记录其中的精华部分,用matlab实现。通过以上工作,逐步实现一个简单的如下图所示的ISP。更进一步的,为以后进入IC行业打基础,我会针对基础的图像处理算法给出RTL硬件实现的多种方案,作为一种思路整理和知识储备记录下来,如果时间充足,我想自己用verilog实现它们并用fpga仿真。
2023-06-15 16:25:00 115 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人