OpenCV 笔记(7):基于阈值的图像分割

本文详细介绍了OpenCV中的阈值分割技术,包括threshold()函数的5种处理类型,如THRESH_BINARY、THRESH_BINARY_INV等,并深入讲解了全局阈值分割中的OTSU算法和Triangle算法,以及适用于光照不均图像的自适应阈值分割。通过实例展示了这些方法在图像二值化中的应用。
摘要由CSDN通过智能技术生成

Part11.  阈值分割

图像分割是图像进行视觉分析和模式识别的基本前提,而阈值分割是最简单的图像分割方法。阈值分割是基于灰度值或灰度值的特性来将图像直接划分为区域,实现简单而且计算速度快。

8cbe2174a3ffa390d794b2a4c8370e81.jpeg
传统图像分割方法.png

11.1 threshold() 函数的5种处理类型

前面的文章提过,OpenCV 提供了基于灰度值的阈值分割函数 threshold(),在使用 threshold() 时先要将图像灰度化。

这个 threshold() 函数提供了 5 种阈值化类型。

  • THRESH_BINARY

将小于阈值的像素点灰度值置为0;大于阈值的像素点灰度值置为最大值(255)。

  • THRESH_BINARY_INV

将大于阈值的像素点灰度值置为0;小于阈值的像素点灰度值置为最大值(255)。

  • THRESH_TRUNC

小于阈值的像素点灰度值不变;大于阈值的像素点灰度值置为该阈值。

  • THRESH_TOZERO

大于阈值的像素点灰度值不变;小于阈值的像素点灰度值置为0

  • THRESH_TOZERO_INV

小于阈值的像素点灰度值不变;大于阈值的像素点置为0

下面的例子,通过获取图像的均值作为阈值,来分别展示这五种阈值分割的使用:

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

int main(int argc,char *argv[])
{
    Mat src = imread(".../landscape.jpg");
    imshow("src",src);

    Mat gray;
    cvtColor(src,gray,COLOR_BGR2GRAY);
    Scalar m = mean(gray);
    int thresh = m[0];

    Mat dst;
    threshold(gray, dst,thresh,255, THRESH_BINARY);
    imshow("thresh_binary",dst);

    threshold(gray, dst,thresh,255, THRESH_BINARY_INV);
    imshow("thresh_binary_inv",dst);

    threshold(gray, dst,thresh,255, THRESH_TRUNC);
    imshow("thresh_trunc",dst);

    threshold(gray, dst,thresh,255, THRESH_TOZERO);
    imshow("thresh_tozero",dst);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值