aiwiki
aiwiki copied to clipboard
OpenCV IP misc BIN
OpenCV 二值化
- cv2.threshold
- cv2.adaptiveThreshold
普通二值化
ret, dst = cv2.threshold(src, thresh, maxval, type)
Type | 公式 | 图解 |
---|---|---|
cv2.THRESH_BINARY | ![]() |
![]() |
cv2.THRESH_BINARY_INV | ![]() |
![]() |
cv2.THRESH_TRUNC | ![]() |
![]() |
cv2.THRESH_TOZERO | ![]() |
![]() |
cv2.THRESH_TOZERO_INV | ![]() |
![]() |
source image |
![]() |
Examples
-- |
自适应二值化
- 根据图像局部像素值来取阈值
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
- 阈值是权重为高斯窗的邻域值的加权和