项目里有个算子,涉及滤波相关知识,年前花了半个下午整理,年后有些遗忘,就在这里做个汇总,顺便加深记忆。
项目里这个算子是配置模板参数,实现归一化盒子滤波和高斯滤波,其中,需要做下说明,归一化盒子滤波就是平滑线性滤波的均值滤波。说到这,很自然而然衍生出三个问题,或者说四个:什么是滤波?什么是平滑滤波?什么是线性滤波?均值滤波又是什么?
一个个来,什么是滤波,在这之前需要先解释一下模板和模板运算,一副图像的rgb或者yuv数据是很大的,我们在编码过程中需要利用分块思想,将每个小块又进行模板运算。(在编码还是dct过程用有待确认)那么模板运算很多种,怎么运算,也就是方法就是滤波,这个模板也会被叫做滤波器。
什么是平滑滤波?和锐化滤波相对,平滑是去噪声让整幅图像没有突兀的地方,各个小块之间衔接自然。
什么是线性滤波?做的运算是线性的,就可以理解为卷积啥的就是线性,很复杂的像中值滤波需要考虑周围小方块的就是非线性。
什么是均值滤波,就是整个小方块内的像素点取平均值代替原来的像素点。需要说明的是,均值滤波和高斯滤波都是线性滤波。
基础知识解决完了,还有一些相关的图像知识。RGB和YUV都是颜色编码方式,RGB简单,红绿蓝,三种原色,每个8bit,也就是一个像素点24bit。YUV是明亮度,色调和饱和度,同样24bit,但是因为YUV特殊的采样存储方式,可以大大减少数据量。
先说采样,三种方式,444,422,420,前面两种简单,解释下第三种,420,并不是完全不采U或者V分量,而是比如说,4个Y,2个U,4个Y,两个V这样交替。
存储方式,有package,planar两种模式,打包就是原本是啥样,就存成啥样,一个像素点三个分量罗列,一个点一个点的来,planar模式,就是一种分量一种分量的来。
很明显,在package模式下,是有很多细分情况的,也是因为采样方法有很多。
存在不足的地方,发现自己一个是对于图像处理只见一隅,不见全貌,另一个是对于边界模式好像还存在不小的疑问。