c#-OpenCvSharp——阈值化、自适应阈值详解(附源码)

核心函数:

Cv2.Threshold()  图像阈值化
Cv2.Threshold(Mat src, Mat dst, double thresh, 
              double maxval, ThresholdTypes type);
  • Mat src 输入图像,可以是单通道或多通道的图像。

  • Mat dst 输出图像,其大小和类型与输入图像 src 相同。函数将计算的阈值应用于输入图像的每个像素,并将结果存储在输出图像 dst 中。

  • double thresh 阈值。这是一个用于将像素值分为两个区域的数值。如果像素值大于阈值,它将被分类为一个区域;如果小于等于阈值,它将被分类为另一个区域。

  • double maxval 当像素值大于阈值时,将其设置为的值。通常,这是一个较大的值,例如255。在二进制阈值化中,大于阈值的像素值将被设置为 maxval,而小于等于阈值的像素值将被设置为0。

  • ThresholdTypes type 阈值化的类型,是一个枚举值,用于指定阈值化的具体方式。
    注:

  • ThresholdTypes.Binary(二进制阈值化):

    • 作用: 将图像的每个像素值与指定的阈值进行比较,如果大于阈值,则将像素值设为最大值(通常是 255),否则设为最小值(通常是 0)。
  • ThresholdTypes.BinaryInv(反二进制阈值化):

    • 作用: 与 Binary 类似,但是反转了像素值的设定,大于阈值的像素值变为最小值,小于等于阈值的像素值变为最大值。
  • ThresholdTypes.Trunc(截断阈值化):

    • 作用: 将大于阈值的像素值截断为阈值。
  • ThresholdTypes.Tozero(被零截断):

    • 作用: 小于阈值的像素值被截断为零,大于等于阈值的像素值保持不变。
  • ThresholdTypes.TozeroInv(反被零截断):

    • 作用: 与 Tozero 类似,但是反转了像素值的设定。
  • ThresholdTypes.Mask(掩膜模式):

    • 作用: 在进行其他类型的阈值化操作时,将阈值化后的像素值应用到原图像上。
  • ThresholdTypes.Otsu(Otsu's二值化):

    • 作用: 根据大津法(Otsu's method)确定图像的自适应阈值。
  • ThresholdTypes.Triangle(三角形阈值化):

    • 作用: 根据图像的直方图中的三角形区域确定阈值。
 Cv2.AdaptiveThreshold()  自适应阈值化
Cv2.AdaptiveThreshold(Mat src, Mat dst, double maxValue, 
                      AdaptiveThresholdTypes adaptiveMethod, 
                      ThresholdTypes thresholdType, int blockSize, double C);
  • Mat src:输入图像。
  • Mat dst:输出图像,与输入图像 src 具有相同的大小和类型。
  • double maxValue:当像素值大于阈值时,将其设置为的值。
  • AdaptiveThresholdTypes adaptiveMethod:自适应方法的类型,决定如何计算局部阈值。
    • AdaptiveThresholdTypes.MeanC:计算邻域块的均值,阈值为均值减去常量 C
    • AdaptiveThresholdTypes.GaussianC:计算邻域块的加权和,权重由高斯窗口确定,阈值为和减去常量 C
  • ThresholdTypes thresholdType 阈值化的类型,是一个枚举值,用于指定阈值化的具体方式。与 Cv2.Threshold 函数中的枚举值一样,包括 Binary、BinaryInv、Otsu 等。

  • int blockSize 用于计算每个像素的邻域块大小。这是一个正奇数,例如3、5、7等。块的大小决定了计算每个像素的局部阈值时使用的像素邻域。

  • double C 从计算的局部阈值中减去的常量。该常量用于调整阈值的大小,可以为正数或负数。

猜你喜欢

转载自blog.csdn.net/m0_55074196/article/details/134812138