Java,OpenCV,图像阈值分割,阈值化,二值阈值化、截断阈值化等

图像阈值分割图像阈值分割,一种广泛应用的分割技术,利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取一个比较合理的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像 。
阈值分割法的特点是:适用于目标与背景灰度有较强对比的情况,重要的是背景或物体的灰度比较单一,而且总可以得到封闭且连通区域的边界 。
【Java,OpenCV,图像阈值分割,阈值化,二值阈值化、截断阈值化等】图像分割
图像颜色的零界点,图像的分割基准,基于此可完成图像的二值化,图像二值化可用于OCR成图像的分割(也是最为简单的一种),这种分割是基于图像像素值级别的差异,且一般的对象是灰度图像 。
图像阈值的进一步处理就是二值化,二值化包含但不限于“大于阈值为255,小于阈值为0”的处理模式 。
OCR (Optical Character Recognition,光学字符识别)
OCR指电子设备(如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程,即:针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术 。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生 。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等 。
阈值化
阈值化是一种将想要在图像中分析的区域分割出来的方法,每个像素值都与一个预设的阈值做比较,再根据比较的结果调整像素值 。
1、二值阈值化 -> Imgproc.THRESH_BINARY
2、阈值化到零 -> Imgproc.THRESH_TOZERO
3、截断阈值化 -> Imgproc.THRESH_TRUNC
4、反转二值阈值化 -> Imgproc.THRESH_BINARY_INV
5、反转阈值化到零 -> Imgproc.THRESH_TOZERO_INV
代码案例package com.what21.opencv01.demo04;import org.opencv.core.Core;import org.opencv.core.Mat;import org.opencv.imgcodecs.Imgcodecs;import org.opencv.imgproc.Imgproc;/** * 图像阈值分割(Imgproc.threshold) */public class OpenCVThreshold {static {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}/*** -DJAVA.library.path=D:/Apps/MyTool/opencv/build/java/x64* @param args*/public static void main(String[] args) {Mat src = https://www.isolves.com/it/cxkf/bk/2022-02-07/Imgcodecs.imread("D:/1.jpg");Imgcodecs.imwrite("D:/1-1.jpg", src);Mat dst = new Mat();Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_BINARY_INV);Imgcodecs.imwrite("D:/1-threshold_THRESH_BINARY_INV.jpg", dst);Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_TRUNC);Imgcodecs.imwrite("D:/1-threshold_THRESH_TRUNC.jpg", dst);Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_BINARY);Imgcodecs.imwrite("D:/1-threshold_THRESH_BINARY.jpg", dst);Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_TOZERO);Imgcodecs.imwrite("D:/1-threshold_THRESH_TOZERO.jpg", dst);Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_TOZERO_INV);Imgcodecs.imwrite("D:/1-threshold_THRESH_TOZERO_INV.jpg", dst);}}

Java,OpenCV,图像阈值分割,阈值化,二值阈值化、截断阈值化等

文章插图
1.jpg

Java,OpenCV,图像阈值分割,阈值化,二值阈值化、截断阈值化等

文章插图
1-threshold_THRESH_BINARY.jpg

Java,OpenCV,图像阈值分割,阈值化,二值阈值化、截断阈值化等

文章插图
1-threshold_THRESH_BINARY_INV.jpg

Java,OpenCV,图像阈值分割,阈值化,二值阈值化、截断阈值化等

文章插图
1-threshold_THRESH_TOZERO.jpg

Java,OpenCV,图像阈值分割,阈值化,二值阈值化、截断阈值化等

文章插图
1-threshold_THRESH_TOZERO_INV.jpg

Java,OpenCV,图像阈值分割,阈值化,二值阈值化、截断阈值化等

文章插图
1-threshold_THRESH_TRUNC.jpg




    推荐阅读