OpenCV - Ngưỡng đơn giản
Thresholding là một phương pháp phân đoạn ảnh, nói chung nó được sử dụng để tạo ảnh nhị phân. Ngưỡng có hai loại cụ thể là ngưỡng đơn giản và ngưỡng thích ứng.
Ngưỡng đơn giản
Trong thao tác tạo ngưỡng đơn giản, các pixel có giá trị lớn hơn giá trị ngưỡng được chỉ định sẽ được gán với giá trị chuẩn.
Bạn có thể thực hiện thao tác ngưỡng đơn giản trên hình ảnh bằng phương pháp threshold() sau đó Imgproc class, Sau đây là cú pháp của phương thức này.
threshold(src, dst, thresh, maxval, type)
Phương thức này chấp nhận các tham số sau:
src - Một đối tượng của lớp Mat đại diện cho hình ảnh nguồn (đầu vào).
dst - Một đối tượng của lớp Mat đại diện cho hình ảnh đích (đầu ra).
thresh - Một biến kiểu kép đại diện cho giá trị ngưỡng.
maxval - Một biến kiểu kép đại diện cho giá trị sẽ được cung cấp nếu giá trị pixel lớn hơn giá trị ngưỡng.
type - Một biến kiểu số nguyên đại diện cho kiểu ngưỡng sẽ được sử dụng.
Thí dụ
Chương trình sau đây trình bày cách thực hiện thao tác ngưỡng đơn giản trên một hình ảnh trong OpenCV.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class Thresh {
public static void main(String args[]) {
// Loading the OpenCV core library
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// Reading the Image from the file and storing it in to a Matrix object
String file ="E:/OpenCV/chap14/thresh_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
Imgproc.threshold(src, dst, 50, 255, Imgproc.THRESH_BINARY);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap14/thresh_trunc.jpg", dst);
System.out.println("Image Processed");
}
}
Giả sử rằng sau đây là hình ảnh đầu vào thresh_input.jpg được chỉ định trong chương trình trên.
Đầu ra
Khi thực hiện chương trình, bạn sẽ nhận được kết quả sau:
Image Processed
Nếu bạn mở đường dẫn được chỉ định, bạn có thể quan sát hình ảnh đầu ra như sau:
Các loại ngưỡng đơn giản khác
Ngoài các THRESH_BINARYhoạt động được trình bày trong ví dụ trước, OpenCV phục vụ nhiều loại hoạt động ngưỡng khác nhau. Tất cả các loại này được đại diện bởi các trường tĩnh được xác định trước (giá trị cố định) củaImgproc lớp học.
Bạn có thể chọn loại hoạt động ngưỡng bạn cần, bằng cách chuyển giá trị được xác định trước tương ứng của nó cho tham số có tên type sau đó threshold() phương pháp.
Imgproc.threshold(src, dst, 50, 255, Imgproc.THRESH_BINARY);
Sau đây là các giá trị đại diện cho các loại hoạt động ngưỡng khác nhau và đầu ra tương ứng của chúng.
Hoạt động và mô tả | Đầu ra |
---|---|
THRESH_BINARY |
|
THRESH_BINARY_INV |
|
THRESH_TRUNC |
|
THRESH_TOZERO |
|
THRESH_TOZERO_INV |
|