OpenCV - Làm mờ (Trung bình)
Làm mờ (làm mịn) là thao tác xử lý hình ảnh thường được sử dụng để giảm nhiễu hình ảnh. Quá trình loại bỏ nội dung tần số cao, như các cạnh, khỏi hình ảnh và làm cho hình ảnh trở nên mượt mà.
Nói chung, hiện tượng mờ được thực hiện bằng cách xoay vòng (mỗi phần tử của hình ảnh được thêm vào các vùng lân cận cục bộ của nó, được tính trọng số bởi hạt nhân) hình ảnh thông qua một nhân bộ lọc thông thấp.
Làm mờ (Trung bình)
Trong thao tác này, hình ảnh được đối chiếu với một bộ lọc hộp (chuẩn hóa). Trong quá trình này, phần tử trung tâm của hình ảnh được thay thế bằng giá trị trung bình của tất cả các pixel trong vùng nhân.
Bạn có thể thực hiện thao tác này trên hình ảnh bằng phương pháp blur() sau đó imgproclớp học. Sau đây là cú pháp của phương thức này:
blur(src, dst, ksize, anchor, borderType)
Phương thức này chấp nhận các tham số sau:
src - A Mat đối tượng đại diện cho nguồn (hình ảnh đầu vào) cho hoạt động này.
dst - A Mat đối tượng đại diện cho đích (hình ảnh đầu ra) cho hoạt động này.
ksize - A Size đối tượng đại diện cho kích thước của hạt nhân.
anchor - Một biến kiểu số nguyên đại diện cho điểm neo.
borderType - Một biến kiểu số nguyên đại diện cho kiểu đường viền được sử dụng cho đầu ra.
Thí dụ
Chương trình sau đây trình bày cách thực hiện thao tác lấy trung bình (làm mờ) trên ảnh.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class BlurTest {
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 ="C:/EXAMPLES/OpenCV/sample.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Creating the Size and Point objects
Size size = new Size(45, 45);
Point point = new Point(20, 30);
// Applying Blur effect on the Image
Imgproc.blur(src, dst, size, point, Core.BORDER_DEFAULT);
// blur(Mat src, Mat dst, Size ksize, Point anchor, int borderType)
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap9/blur.jpg", dst);
System.out.println("Image processed");
}
}
Giả sử rằng sau đây là hình ảnh đầu vào sample.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: