OpenCV3 Java图像阈值和图像生成(Imgproc.threshold)

图形处理 09/12 阅读 11627 views次 人气 34
摘要:

图像颜色的零界点,图像的分割基准,基于此可完成图像的二值化。图像二值化可用于OCR成图像的分割(也是最为简单的一种)。这种分割是基于图像像素值级别的差异,且一般的对象是灰度图像。

OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。


图像阈值的进一步处理就是二值化,二值化包含但不限于“大于阈值为255,小于阈值为0”的处理模式。

阈值化是一种将想要在图像中分析的区域分割出来的方法,每个像素值都与一个预设的阈值做比较,再根据比较的结果调整像素值。

二值阈值化 -> Imgproc.THRESH_BINARY

阈值化到零 -> Imgproc.THRESH_TOZERO

截断阈值化 -> Imgproc.THRESH_TRUNC

反转二值阈值化 -> Imgproc.THRESH_BINARY_INV

反转阈值化到零 -> Imgproc.THRESH_TOZERO_INV


代码案例:

package com.what21.opencv.demo;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class Threshold {
 
	public static void main(String[] args) {
		try{
			System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
			
			Mat src=Imgcodecs.imread("D:/ShareData/internet.jpg",Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
			//读取图像到矩阵中,取灰度图像
			if(src.empty()){
				return ;
			}
			Imgcodecs.imwrite("D:/ShareData/internet2.jpg", src);
			//输出灰度图像值
			Mat dst=new Mat();
			//定义新矩阵
			Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_BINARY_INV);
			Imgcodecs.imwrite("D:/ShareData/threshold_THRESH_BINARY_INV.jpg", src);
			
			Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_TRUNC);
			Imgcodecs.imwrite("D:/ShareData/threshold_THRESH_TRUNC.jpg", src);
			
			Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_BINARY);
			Imgcodecs.imwrite("D:/ShareData/threshold_THRESH_BINARY.jpg", src);
			
			Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_TOZERO);
			Imgcodecs.imwrite("D:/ShareData/threshold_THRESH_TOZERO.jpg", src);
			
			Imgproc.threshold(src, dst, 100.0, 200.0, Imgproc.THRESH_TOZERO_INV);
			Imgcodecs.imwrite("D:/ShareData/threshold_THRESH_TOZERO_INV.jpg", src);
			
		}catch(Exception e){
			e.printStackTrace();
		}
 
	}
 
}


评论

该文章不支持评论!

分享到: