OpenCV图像处理笔记[03]
13. 基础理论
-
- 二进制阈值化
函数表示: Dst(x,y) = {maxVal if src(x,y) >thresh ; 0 otherwise
说明:如果像素值比阈值大那么取最大值maxval,否则取最小值0
- 反二进制阈值化
(则选定一个特定的灰度值作为阈值)
函数表示:Dst(x,y) = {0 if src(x, y) > thresh ; maxVal otherwise
说明: 如果像素值比阈值大那么取最小值0,否则取最大值maxval,与二进制阈值化的结果正好相反
- 截断阈值化
函数表示:Dst (x, y) = {threshold if src(x,y) >thresh ; src (x,y) otherwise
说明: 如果像素值比阈值大那么变成阈值,否则不变
- 反阈值化为0
函数表示: Dst(x,y) = { 0 if src(x,y) > thresh ; src(x,y) otherwise
说明:大于阈值的像素处理为0,否则保持不变
- 阈值化为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等。