Java DIP - สร้างเอฟเฟกต์การซูม
การซูมเป็นกระบวนการขยายภาพเพื่อให้รายละเอียดในภาพสามารถมองเห็นได้ชัดเจนและโดดเด่นมากขึ้น
เราใช้ OpenCV ฟังก์ชัน resizeเพื่อใช้การซูมภาพ สามารถดูได้ที่ด้านล่างImgprocแพ็คเกจ ไวยากรณ์ได้รับด้านล่าง -
Imgproc.resize(source,destination, destination.size(),zoomFactor,zoomFactor,Interpolation);
ในฟังก์ชั่นปรับขนาดเราจะส่งอิมเมจต้นทางรูปภาพปลายทางและขนาดของมันปัจจัยการซูมและวิธีการแก้ไข
วิธีการแก้ไขที่มีอยู่มีอธิบายไว้ด้านล่าง -
ซีเนียร์ | วิธีการแก้ไขและคำอธิบาย |
---|---|
1 |
INTER_NEAREST เป็นการแก้ไขเพื่อนบ้านที่ใกล้ที่สุด |
2 |
INTER_LINEAR เป็นการแก้ไขทวิภาคี (ใช้โดยค่าเริ่มต้น) |
3 |
INTER_AREA เป็นการสุ่มตัวอย่างใหม่โดยใช้ความสัมพันธ์ของพื้นที่พิกเซล อาจเป็นวิธีที่ดีกว่าสำหรับการลดขนาดรูปภาพเนื่องจากให้ผลลัพธ์ที่อิสระมากกว่า |
4 |
INTER_CUBIC เป็นการแก้ไขแบบสองลูกบาศก์บนย่านพิกเซล 4x4 |
5 |
INTER_LANCZOS4 เป็นการแก้ไข Lanczos ในย่าน 8x8 พิกเซล |
นอกเหนือจากวิธีการปรับขนาดแล้วยังมีวิธีการอื่น ๆ ที่จัดเตรียมโดยคลาส Imgproc มีการอธิบายสั้น ๆ -
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
1 |
cvtColor(Mat src, Mat dst, int code, int dstCn) มันแปลงภาพจากพื้นที่สีหนึ่งไปเป็นอีกที่หนึ่ง |
2 |
dilate(Mat src, Mat dst, Mat kernel) ขยายภาพโดยใช้องค์ประกอบโครงสร้างเฉพาะ |
3 |
equalizeHist(Mat src, Mat dst) มันทำให้ฮิสโตแกรมของภาพสีเทาเท่ากัน |
4 |
filter2D(Mat src, Mat dst, int ddepth, Mat kernel, Point anchor, double delta) มันแปลงภาพด้วยเคอร์เนล |
5 |
GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX) มันเบลอภาพโดยใช้ฟิลเตอร์ Gaussian |
6 |
integral(Mat src, Mat sum) คำนวณอินทิกรัลของรูปภาพ |
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้คลาส Imgproc เพื่อใช้การซูมภาพ
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());
}
}
}
เอาต์พุต
เมื่อคุณรันโค้ดที่กำหนดจะเห็นผลลัพธ์ต่อไปนี้ -