• 【CVAdd】Filter 滤波器


    本文内容为滤波器的介绍,滤波器的基础理解与基础操作。针对初学者合适,但是若为了掌握如何实现降噪以及高斯滤波等方案,请看后续博文,此博文面向基础科普。

    什么是滤波器

    滤波器,直译,过滤 颜色信息的 波动工具

    颜色信息的波动,可以这样理解:一张彩色的图像,是由RGB三个通道构成的,R代表红色通道,G代表绿色通道,B代表蓝色通道。而不同的颜色,是具有不同的能量以及不同的波长的;而在计算机视觉领域,颜色信息可以用数组、矩阵来表示,那么说明波长就可以用数组、矩阵来表示。我们就有效的将波动数字化,转化为矩阵来表示。

    工具,说的就是下图的蓝色的小方盒子,我们下图案例为锐化的案例,小方盒子取的是 3 ∗ 3 3*3 33 大小的矩阵,根据不同的需求,我们会更改小方盒子的大小,以及小方盒子里的值。

    所以,我们滤波这个动作,就是对图像矩阵的值做处理。
    在这里插入图片描述


    滤波器的一些常用操作

    滤波器可以实现哪些功能呢??

    降噪 De-noising

    在这里插入图片描述
    如上图所示,图片中存在很多白色的斑点,我们可以通过滤波器去实现去除图像上的噪点。


    超分辨率 Super-resolution

    在这里插入图片描述
    如上图所示,左侧图片非常的模糊,我们想“看得更清楚”,即将模糊的图像进行超分处理。


    图像修复 In-painting

    在这里插入图片描述
    左侧图片上存在一写手写的字体无法清除,我们可以通过滤波器进行图像修复。最常用的案例就是去除水印…


    图像的离散表示

    不论是降噪、超分辨率还是图像修复,其原理都是在原有图像上进行相关操作。
    所以首先我们来了解一些图像的基础知识。

    图像分割成数组

    我们可以把图像分割成若干个小方格,其中每个小方格称为一个像素点。若该图像的分辨率为 m ∗ n m*n mn,则我们可以将图像分割成为 m 行 ∗ n 列 m行*n列 mn 个小方格。由此,我们将一个图像转化为一个 m 行 n 列 m行n列 mn 的数组。数组中的每个元素包含着颜色信息。
    在这里插入图片描述


    二值图、灰度图与彩色图

    在这里插入图片描述
    根据图像的颜色信息看,我们可以将图像分为三类,二值图灰度图 以及 彩色图

    二值图: 图像的颜色信息只有黑和白,0表示黑色,1表示白色;
    灰度图: 灰度图每个像素点只有一个值表示颜色,像素值的范围为 [ 0 [0 [0~ 255 ] 255] 255]。灰度图也成为单通道图;
    彩色图: 彩色图每个像素点有三个值来表示颜色,所以称为三通道,即RGB三个通道。
    其实向下延伸,还存在四通道图,而四通道就是在三通道的基础上添加了 α 作为透明度,其取值范围为 [ 0 [0 [0~ 1 ] 1] 1]


    滤波器的操作

    平滑处理 Smooth

    在这里插入图片描述
    对图像做平滑处理,可能存在两个目的:
    (1)模糊图像,想做出图像模糊的效果;
    (2)消除噪声,改善图片的质量,消除图片中的噪声点。

    稍微介绍一个简单的方法:
    首先,我们将一张灰度图片转化为了数组的形式,然后我们通过 滑动平均 的处理方案,将该下面的 3 ∗ 3 3*3 33 数组在灰度图的数组中滑过,将所有值做平均处理。对比发现,之前0与90的突变被平滑到逐渐递减:
    在这里插入图片描述
    e . g . e.g. e.g. 红色方框: 1 9 ( 0 ∗ 8 + 90 ) = 10 \frac 1 9 (0*8+90)=10 91(08+90)=10
    e . g . e.g. e.g. 蓝色方框: 1 9 ( 0 ∗ 6 + 90 ∗ 3 ) = 30 \frac 1 9 (0*6+90*3)=30 91(06+903)=30

    在这里插入图片描述


    图像分割 Segmentation

    图像分割,是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。图像分割非常重要,而且分为很多子领域,我将只在此简单介绍,后期的博文将依次对各个领域做详细介绍。图像分割奠定了很多计算机视觉处理算法的基础。

    而图像分割,主要可以分为三个部分:
    1、语义分割(semantic segmentation)
    语义图像分割的目标是给图像中的每个像素都贴上对应的一类所代表的内容的标签,好比如将图片中进行分类,比如自动驾驶中,将实时图像中的轿车、旅行车、卡车分类为车,将街边的行人,正在过马路的行人,正在喝咖啡的行人分类为人…

    在这里插入图片描述

    2、实例分割(instance segmentation)
    什么是实例类的具体对象,即为实例
    所以在实例分割中,我们不仅要区分出是什么,还要在类别的基础上区别开不同的实例。
    而实例分割,运用到了语义分割的知识以及目标检测的知识。如下图所示:

    在这里插入图片描述
    在这里插入图片描述

    3、全景分割(panoptic segmentation)
    全景分割,是语义分割与实例分割的结合。区别于实例分割,不仅仅要把每个实例区分出来,而且必须对图像中的每个像素都做区分。

    在这里插入图片描述
    在这里插入图片描述


    最后,我们再来举几个例子,与概念无关,若对线性代数矩阵部分不太掌握的读者可以看下去。

    线性滤波器的一些基本操作

    保持不动

    在这里插入图片描述
    滤波后图像与原图像没有任何变化。原因为:
    在这里插入图片描述


    左右平移

    在这里插入图片描述
    具体的矩阵实现读者可以自行尝试。


    模糊

    在这里插入图片描述
    将原图片模糊化,矩阵的变化博文上述部分有涉及。


    锐化

    锐化可以简单的理解为“描边大师”。

    锐化的方式为通过强调与平均值的差异。

    在这里插入图片描述
    在这里插入图片描述
    红色: 很有意思的在于,原来一片区域都很小的值(0),现在更小了(-20,-10…);
    绿色: 原来一片区域都很大的值(90),现在几乎没有变化(90)
    蓝色: 原来一片区域只有一个很大的值,现在变得超级大。

    而这些一片区域只有一个很大的值往往是边缘线,当做锐化处理后,值将被放大,线将变得更加锐利。显示出来的效果就是描边 😃

    若我们想增大锐化的效果,可以增大滤波器中间的值,将其变大,从而使得锐化效果更加明显。
    在这里插入图片描述


    2022.11.4第五次修改
    于 海韵轩

  • 相关阅读:
    禁忌搜索算法TS求解连续函数最值
    【Verilog基础】异步FIFO不用格雷码会影响FIFO功能吗?异步FIFO读写指针同步带来的延迟会导致设计出错吗?(面试常问)
    原型模式与享元模式
    让开发回归简单模式-组件封装
    大模型扫盲之小白入门手记
    redis 键常用命令
    javaweb羽毛球俱乐部体育场地预约管理系统maven-ssm项目
    Numpy 详解
    网页设计成品DW静态网页Html5响应式css3 (餐厅 6页 带轮播图)
    矩阵上下翻转
  • 原文地址:https://blog.csdn.net/weixin_43098506/article/details/127417985