13.图像二值化(局部阈值法)

目录

        1 概念讲解

        2 函数详解

        3 数学原理

        3.1 MEAN方法

        3.2 GAUSSIAN方法

        4 代码实现

        1 概念讲解

        图像自适应二值化是一种将灰度图像转换为二值图像的方法,它将图像分成多个局部区域,并根据每个局部区域的特点动态地选择阈值。相比于全局阈值二值化,图像自适应二值化可以更好地处理光照不均匀或图像中存在强烈反差的情况。

        图像自适应二值化常用于文档扫描、字符识别、图像分割等领域,以提高对图像中细节和边缘的准确检测和分析能力。

        2 函数详解

        在OpenCV中,cv::adaptiveThreshold()函数用于执行图像自适应二值化操作。该函数的定义如下:

void adaptiveThreshold(
    InputArray src, // 输入图像(单通道灰度图像)
    OutputArray dst, // 输出二值图像
    double maxValue, // 超过阈值的像素值设置为的最大值
    int adaptiveMethod, // 自适应阈值计算方法(ADAPTIVE_THRESH_MEAN_C或ADAPTIVE_THRESH_GAUSSIAN_C)
    int thresholdType, // 阈值类型(THRESH_BINARY或THRESH_BINARY_INV)
    int blockSize, // 局部区域的尺寸,必须是奇数且大于1
    double C // 从平均值或加权平均值中减去的常数
);

        3 数学原理

        图像自适应二值化的数学原理基于局部像素的统计信息,其核心思想是根据局部区域内的像素值动态地计算阈值。

        具体而言,对于每个像素点,自适应二值化会计算以该像素为中心的局部区域的均值或加权均值,并将其作为阈值。然后,根据阈值将像素设置为黑色或白色。这样,就可以根据不同局部区域的特点,更好地处理光照变化和背景噪声等问题。

对于自适应二值化中的两种方法,即MEAN和GAUSSIAN,它们的公式如下:

        3.1 MEAN方法

        阈值计算方法:

threshold = mean - C

        3.2 GAUSSIAN方法

        阈值计算方法:

threshold = mean - C * standardDeviation

其中,mean表示局部区域内像素值的平均值,standardDeviation表示局部区域内像素值的标准差,C是一个常数,用于调整阈值的灵敏度。

        4 代码实现

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 读取图像
    cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);

    // 应用自适应二值化
    cv::Mat adaptiveImage;
    cv::adaptiveThreshold(image, adaptiveImage, 255, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 11, 2);

    // 显示原图和自适应二值化结果
    cv::imshow("Original Image", image);
    cv::imshow("Adaptive Threshold Image", adaptiveImage);
    cv::waitKey(0);

    return 0;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别叭叭儿—好好学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值