Java DIP - Tạo hiệu ứng thu phóng
Phóng to là quá trình phóng to hình ảnh để các chi tiết trong hình ảnh trở nên rõ ràng và nổi bật hơn.
Chúng tôi sử dụng OpenCV chức năng resizeđể áp dụng tính năng phóng to hình ảnh. Nó có thể được tìm thấy dướiImgprocgói hàng. Cú pháp của nó được đưa ra dưới đây:
Imgproc.resize(source,destination, destination.size(),zoomFactor,zoomFactor,Interpolation);
Trong chức năng thay đổi kích thước, chúng tôi chuyển hình ảnh nguồn, hình ảnh đích và kích thước của nó, hệ số thu phóng và phương pháp nội suy để sử dụng.
Các phương pháp nội suy có sẵn được mô tả dưới đây:
Sr.No. | Phương pháp nội suy & Mô tả |
---|---|
1 | INTER_NEAREST Đây là phép nội suy láng giềng gần nhất. |
2 | INTER_LINEAR Nó là phép nội suy song tuyến (được sử dụng theo mặc định). |
3 | INTER_AREA Nó đang lấy mẫu lại bằng cách sử dụng quan hệ vùng pixel. Nó có thể là một phương pháp ưa thích để giải mã hình ảnh, vì nó cho kết quả tự do hơn. |
4 | INTER_CUBIC Nó là phép nội suy hai khối trên vùng lân cận 4x4 pixel. |
5 | INTER_LANCZOS4 Nó là phép nội suy Lanczos trên vùng lân cận 8x8 pixel. |
Ngoài phương thức thay đổi kích thước, còn có các phương thức khác được cung cấp bởi lớp Imgproc. Chúng được mô tả ngắn gọn -
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | cvtColor(Mat src, Mat dst, int code, int dstCn) Nó chuyển đổi một hình ảnh từ không gian màu này sang không gian màu khác. |
2 | dilate(Mat src, Mat dst, Mat kernel) Nó làm giãn hình ảnh bằng cách sử dụng một phần tử có cấu trúc cụ thể. |
3 | equalizeHist(Mat src, Mat dst) Nó cân bằng biểu đồ của một hình ảnh thang độ xám. |
4 | filter2D(Mat src, Mat dst, int ddepth, Mat kernel, Point anchor, double delta) Nó biến đổi một hình ảnh với hạt nhân. |
5 | GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX) Nó làm mờ hình ảnh bằng cách sử dụng bộ lọc Gaussian. |
6 | integral(Mat src, Mat sum) Nó tính tích phân của một hình ảnh. |
Thí dụ
Ví dụ sau minh họa việc sử dụng lớp Imgproc để áp dụng tính năng thu phóng cho hình ảnh.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;
public class Main {
public static void main( String[] args ) {
try {
int zoomingFactor = 2;
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
Mat source = Highgui.imread("image.jpg", Highgui.CV_LOAD_IMAGE_GRAYSCALE);
Mat destination = new Mat(source.rows() * zoomingFactor, source.cols()* zoomingFactor,source.type());
Imgproc.resize(source, destination, destination.size(), zoomingFactor,zoomingFactor,Imgproc.INTER_NEAREST);
Highgui.imwrite("zoomed.jpg", destination);
} catch (Exception e) {
System.out.println("Error: "+e.getMessage());
}
}
}
Đầu ra
Khi bạn thực thi mã đã cho, kết quả sau sẽ được nhìn thấy: