圖像閾值分割
圖像閾值分割,一種廣泛應用的分割技術,利用圖像中要提取的目標區域與其背景在灰度特性上的差異,把圖像看作具有不同灰度級的兩類區域(目標區域和背景區域)的組合,選取一個比較合理的閾值,以確定圖像中每個像素點應該屬于目標區域還是背景區域,從而產生相應的二值圖像。
閾值分割法的特點是:適用于目標與背景灰度有較強對比的情況,重要的是背景或物體的灰度比較單一,而且總可以得到封閉且連通區域的邊界。
圖像分割
圖像顏色的零界點,圖像的分割基準,基于此可完成圖像的二值化,圖像二值化可用于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 = 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);
}
}
1.jpg
1-threshold_THRESH_BINARY.jpg
1-threshold_THRESH_BINARY_INV.jpg
1-threshold_THRESH_TOZERO.jpg
1-threshold_THRESH_TOZERO_INV.jpg
1-threshold_THRESH_TRUNC.jpg