zoukankan      html  css  js  c++  java
  • opencv-图像平滑处理

    一.原理

    平滑也称为模糊,平滑处理时需要用到一个滤波器,最常用的滤波器是线性滤波器,线性滤波器处理的输出像素值 (i.e. g(i,j)) 是输入像素值 (i.e. f(i+k,j+l))的加权和 ;

                                                                                                                                                                                                                                        g(i,j) = sum_{k,l} f(i+k, j+l) h(k,l)

    h(k,l)称为核,仅仅是一个加权系数,滤波器可以简单的理解为一个包含加权系数的窗口,当使用这个滤波器平滑处理图像时,将让这个窗口滑过图像。

    我主要介绍几种常见的滤波器。

    1.归一化滤波器

    最简单的滤波器,输出像素值是窗口内像素值的均值(所有像素加权数相等)

    • K = dfrac{1}{K_{width} cdot K_{height}} egin{bmatrix}
    1 & 1 & 1 & ... & 1 \
    1 & 1 & 1 & ... & 1 \
    . & . & . & ... & 1 \
    . & . & . & ... & 1 \
    1 & 1 & 1 & ... & 1
   end{bmatrix}


    2.高斯滤波器
    最有用的滤波器(不是最快的),高斯滤波器是将输入数组的每一个像素点与高斯内核卷积,将卷积和作为输出像素值。

    ../../../../_images/Smoothing_Tutorial_theory_gaussian_0.jpg

    2维高斯函数可以表达为 :

    G_{0}(x, y) = A  e^{ dfrac{ -(x - mu_{x})^{2} }{ 2sigma^{2}_{x} } +  dfrac{ -(y - mu_{y})^{2} }{ 2sigma^{2}_{y} } }

    其中 mu 为均值 (峰值对应位置), sigma 代表标准差 (变量 x 和 变量 y 各有一个均值,也各有一个标准差)

    3.中值滤波器

    中值滤波器将图像的每一个像素用领域(以当前像素为中心的正方形区域)像素的中值代替

    4.双边滤波器

    目前我们了解的滤波器都是为了 平滑 图像, 问题是有些时候这些滤波器不仅仅削弱了噪声, 连带着把边缘也给磨掉了。 为避免这样的情形 (至少在一定程度上 ), 我们可以使用双边滤波。

    类似于高斯滤波器,双边滤波器也给每一个邻域像素分配一个加权系数。 这些加权系数包含两个部分, 第一部分加权方式与高斯滤波一样,第二部分的权重则取决于该邻域像素与当前像素的灰度差值。

  • 相关阅读:
    C# 对串口的操作
    【STM32】手册理解
    【LCD MENU】710
    【交流采集——RMS(均方根)】电压和电流
    【DMA】配置及使用
    【ADC】ADC初始化的注意事项
    【电源】开关型功率变换器的基本结构
    【单片机】【710】逆变
    【单片机】【710】PWM
    【单片机】【710】振荡器和系统时钟
  • 原文地址:https://www.cnblogs.com/tanshengjiang/p/14648710.html
Copyright © 2011-2022 走看看