aiwiki icon indicating copy to clipboard operation
aiwiki copied to clipboard

OpenCV IP misc BIN

Open junxnone opened this issue 5 years ago • 0 comments

OpenCV 二值化

  • cv2.threshold
  • cv2.adaptiveThreshold

普通二值化

ret, dst = cv2.threshold(src, thresh, maxval, type)
Type 公式 图解
cv2.THRESH_BINARY image image
cv2.THRESH_BINARY_INV image image
cv2.THRESH_TRUNC image image
cv2.THRESH_TOZERO image image
cv2.THRESH_TOZERO_INV image image
source image image

Examples

image -- | image

自适应二值化

  • 根据图像局部像素值来取阈值
void cv::adaptiveThreshold(InputArray 	src,
                      OutputArray 	dst,
                      double 	maxValue,
                      int 	adaptiveMethod,
                      int 	thresholdType,
                      int 	blockSize,
                      double 	C 
)	
参数 描述
maxValue 符合条件的值赋予的值, 二值化中的大值, 小值为 0
adaptiveMethod 使用的自适应算法 ADAPTIVE_THRESH_MEAN_C/ADAPTIVE_THRESH_GAUSSIAN_C
thresholdType 二值化方法
blockSize 计算阈值的邻域
C 减去的常数

自适应算法

ADAPTIVE_THRESH_MEAN_C

  • 取相邻区域均值
  • T(x,y) 为点 (x,y) 相邻区域 blockSize x blockSize 的均值 减去 C
  • 相当于用 boxfilter 求阈值

ADAPTIVE_THRESH_GAUSSIAN_C

  • 取相邻区域高斯加权和
  • T(x,y) 为点 (x,y) 相邻区域 blockSize x blockSize 的 高斯加权和 减去 C
  • 相当于用 GaussianBlur 求阈值

二值化方法

Enum 描述
THRESH_BINARY 大于阈值取大值,否则为 0
THRESH_BINARY_INV 与上面相反
THRESH_TRUNC 大于阈值取阈值,其他不变
THRESH_TOZERO 小于阈值取 0 ,其他不变
THRESH_TOZERO_INV 与上面相反
THRESH_OTSU Otsu 算法 选择最佳阈值
THRESH_TRIANGLE Triangle 算法选择最佳阈值

详情见 ThresholdTypes

dst = cv2.adaptiveThreshold(src, maxval, thresh_type, type, Block Size, C)
  • cv.ADAPTIVE_THRESH_MEAN_C - 阈值为邻近区域平均值
  • cv.ADAPTIVE_THRESH_GAUSSIAN_C - 阈值是权重为高斯窗的邻域值的加权和

image

Reference

junxnone avatar May 24 '19 08:05 junxnone