OpenCV - пирамиды изображений
Пирамида - это операция над изображением, при которой,
Входное изображение изначально сглаживается с использованием определенного сглаживающего фильтра (например, гауссовского, лапласовского), а затем сглаженное изображение подвергается субдискретизации.
Этот процесс повторяется несколько раз.
Во время работы пирамиды плавность изображения увеличивается, а разрешение (размер) уменьшается.
Пирамида вверх
В Pyramid Up изображение сначала увеличивается, а затем размывается. Вы можете выполнить операцию Pyramid Up на изображении, используяpyrUP() метод imgprocкласс. Ниже приводится синтаксис этого метода -
pyrUp(src, dst, dstsize, borderType)
Этот метод принимает следующие параметры -
src - Объект класса Mat представляющий исходное (входное) изображение.
mat - Объект класса Mat представляющий конечное (выходное) изображение.
size - Объект класса Size представляющий размер, до которого изображение должно быть увеличено или уменьшено.
borderType - Переменная целочисленного типа, представляющая тип используемой границы.
пример
Следующая программа демонстрирует, как выполнить операцию пирамиды вверх на изображении.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class PyramidUp {
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/chap13/pyramid_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Applying pyrUp on the Image
Imgproc.pyrUp(src, dst, new Size(src.cols()*2, src.rows()*2), Core.BORDER_DEFAULT);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap13/pyrUp_output.jpg", dst);
System.out.println("Image Processed");
}
}
Предположим, что ниже находится входное изображение pyramid_input.jpg указанные в вышеуказанной программе.
Вывод
При выполнении программы вы получите следующий вывод -
Image Processed
Если вы откроете указанный путь, вы можете наблюдать выходное изображение следующим образом:
Пирамида вниз
В Pyramid Down изображение сначала размывается, а затем дискретизируется. Вы можете выполнить операцию Pyramid Down с изображением, используяpyrDown() метод imgprocкласс. Ниже приводится синтаксис этого метода -
pyrDown(src, dst, dstsize, borderType)
Этот метод принимает следующие параметры -
src - Объект класса Mat представляющий исходное (входное) изображение.
mat - Объект класса Mat представляющий конечное (выходное) изображение.
size - Объект класса Size представляющий размер, до которого изображение должно быть увеличено или уменьшено.
borderType - Переменная целочисленного типа, представляющая тип используемой границы.
пример
Следующая программа демонстрирует, как выполнить операцию «Вниз пирамиды» на изображении.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class PyramidDown {
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/chap13/pyramid_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Applying pyrDown on the Image
Imgproc.pyrDown(src, dst, new Size(src.cols()/2, src.rows()/2),
Core.BORDER_DEFAULT);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap13/pyrDown_output.jpg", dst);
System.out.println("Image Processed");
}
}
Предположим, что ниже находится входное изображение pyramid_input.jpg указанные в вышеуказанной программе.
Вывод
При выполнении программы вы получите следующий вывод -
Image Processed
Если вы откроете указанный путь, вы можете наблюдать выходное изображение следующим образом:
Фильтрация среднего сдвига
В операции пирамиды среднего сдвига выполняется начальный этап сегментации изображения со средним сдвигом.
Вы можете выполнить операцию фильтрации со средним сдвигом пирамиды на изображении, используя pyrDown() метод imgprocкласс. Ниже приводится синтаксис этого метода.
pyrMeanShiftFiltering(src, dst, sp, sr)
Этот метод принимает следующие параметры -
src - Объект класса Mat представляющий исходное (входное) изображение.
mat - Объект класса Mat представляющий конечное (выходное) изображение.
sp - Переменная типа double, представляющая радиус пространственного окна.
sr - Переменная типа double, представляющая радиус цветового окна.
пример
Следующая программа демонстрирует, как выполнить операцию фильтрации среднего сдвига для данного изображения.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class PyramidMeanShift {
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/chap13/pyramid_input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Applying meanShifting on the Image
Imgproc.pyrMeanShiftFiltering(src, dst, 200, 300);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap13/meanShift_output.jpg", dst);
System.out.println("Image Processed");
}
}
Предположим, что ниже находится входное изображение pyramid_input.jpg указанные в вышеуказанной программе.
Вывод
При выполнении программы вы получите следующий вывод -
Image Processed
Если вы откроете указанный путь, вы можете наблюдать выходное изображение следующим образом: