OpenCV图像处理笔记[03]

13. 基础理论

    1. 二进制阈值化

    函数表示: Dst(x,y) = {maxVal if src(x,y) >thresh ; 0 otherwise

    说明:如果像素值比阈值大那么取最大值maxval,否则取最小值0

    1. 反二进制阈值化

    (则选定一个特定的灰度值作为阈值)

    函数表示:Dst(x,y) = {0 if src(x, y) > thresh ; maxVal otherwise

    说明: 如果像素值比阈值大那么取最小值0,否则取最大值maxval,与二进制阈值化的结果正好相反

    1. 截断阈值化

    函数表示:Dst (x, y) = {threshold if src(x,y) >thresh ; src (x,y) otherwise

    说明: 如果像素值比阈值大那么变成阈值,否则不变

    1. 反阈值化为0

    函数表示: Dst(x,y) = { 0 if src(x,y) > thresh ; src(x,y) otherwise

    说明:大于阈值的像素处理为0,否则保持不变

    1. 阈值化为0

    函数表示: Dst(x,y)={if src(x,y)> thresh ; 0 otherwise

    说明:大于阈值不变,小于阈值 的处理为0

14. threshold函数

  • 函数threshold

    retval, dst = cv2.threshold( src, thresh, maxval, type)

    • retval, 阈值
    • dst , 处理结果
    • src, 源图像
    • threshold , 阈值
    • maxval, 最大值
    • type, 类型
  • 二进制阈值化(也可以是二值阈值化)

    • 关键字: cv2.THRESH_BINARY

      import cv2
      a = cv2.imread("image\\lena512.bmp", cv2.IMREAD_UNCHANGED)
      r,b = cv2.threshold(a, 127, 255, cv2.THRESH_BINARY)
      

      大于阈值处理为255 (亮的处理为白色)

      小于或等于阈值处理为0 (暗的处理为黑色)

  • 反二进制阈值化

    • 关键字: cv2.THRESH_BINARY_INV

      import cv2
      a = cv2.imread("image\\lena512.bmp", cv2.IMREAD_UNCHANGED)
      r,b = cv2.threshold(a, 127, 255, cv2.THRESH_BINARY_INV) 
      

      大于阈值的处理为0 (亮的处理为黑色)

      小于或等于阈值的处理为255(暗的处理为白色)

  • 截断阈值化

    • 关键字: cv2.THRESH_TRUNC

      import cv2
      a = cv2.imread("image\\lena512.bmp", cv2.IMREAD_UNCHANGED)
      r,b = cv2.threshold(a, 127, 255, cv2.THRESH_TRUNC) 
      

      把大于阈值的都处理为阈值

      即:把比较亮的像素值都处理为了阈值

  • 反阈值化为0

    • 关键字: cv2.THRESH_TOZERO_INV

      import cv2
      a = cv2.imread("image\\lena512.bmp", cv2.IMREAD_UNCHANGED)
      r,b = cv2.threshold(a, 127, 255, cv2.THRESH_TOZERO_INV) 
      

      把比较亮的部分处理为0, 小于等于阈值的不变

  • 阈值化为0

    • 关键字: cv2.THRESH_TOZERO

      import cv2
      a = cv2.imread("image\\lena512.bmp", cv2.IMREAD_UNCHANGED)
      r,b = cv2.threshold(a, 127, 255, cv2.THRESH_TOZERO) 
      

      把比较亮的部分不变,比较暗的部分处理为0

15. 均值滤波

  • 任意一点的像素值,都是周围N*N像素值的均值
  • 函数blur 处理结果 = cv2.blur(原始图像,核大小)
    • 核大小:以(高度、宽度)的形式表示的元组

16. 方框滤波

  • boxFilter函数

    处理结果 = cv2.boxFilter(原始图像,目标图像深度,核大小,归一化属性(normalize))

    normalize属性 k=1/α[……]

    \(α=\begin{cases} \frac{1}{width * neight}, normalize =true \\ 1, normalize =false\end{cases}\)

    即当normalize =0时,不进行归一化处理。

    当normalize=1时,归一化处理,与均值滤波相同。

17. 高斯滤波

  • 让临近的像素具有更高的重要度,对周围像素计算加权平均值,较近的像素具有较大的权重值。

    GaussianBlur函数

    Dst= cv2.GaussianBlur(src, ksize, sigmax)

    • Sigmax :x方向差,控制权重 y方向的方差与x保持一致
    • Sigmax =0.3 *(( ksize-1) * 0.5)-1)+ 0.8

18. 中值滤波

  • 让临近的像素按照大小排列,取排列像素几种位于中间位置的值作为中值滤波后的像素值。

    MedianBlur函数

    Dst =cv2.medianBlur(src, ksize)

    • Ksize: 核大小,必须是比1大的奇数,如3,5,7等。
posted @ 2022-08-03 11:01  Hecto  阅读(99)  评论(0)    收藏  举报