Пирамида — это операция над изображением, где
- Входное изображение первоначально сглаживается с использованием определенного сглаживающего фильтра (например, гауссов, лапласиан), а затем сглаженное изображение подвергается субдискретизации.
- Этот процесс повторяется несколько раз.
Входное изображение первоначально сглаживается с использованием определенного сглаживающего фильтра (например, гауссов, лапласиан), а затем сглаженное изображение подвергается субдискретизации.
Этот процесс повторяется несколько раз.
Во время операции пирамиды гладкость изображения увеличивается, а разрешение (размер) уменьшается.
Пирамида вверх
В «Пирамиде вверх» изображение сначала дискретизируется, а затем размывается. Вы можете выполнить операцию Pyramid Up над изображением, используя метод pyrUP () класса imgproc . Ниже приводится синтаксис этого метода —
pyrUp(src, dst, dstsize, borderType)
Этот метод принимает следующие параметры —
- src — Объект класса Mat, представляющий исходное (входное) изображение.
- mat — Объект класса Mat, представляющий целевое (выходное) изображение.
- размер — объект класса Size, представляющий размер, до которого изображение должно быть увеличено или уменьшено.
- borderType — переменная целочисленного типа, представляющая тип используемой границы.
src — Объект класса Mat, представляющий исходное (входное) изображение.
mat — Объект класса Mat, представляющий целевое (выходное) изображение.
размер — объект класса 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 над изображением, используя метод pyrDown () класса imgproc . Ниже приводится синтаксис этого метода — | УправлениеАналитик данных с нуля85 400 ₽3 881.82 ₽/мес.Подробнее
pyrDown(src, dst, dstsize, borderType)
Этот метод принимает следующие параметры —
- src — Объект класса Mat, представляющий исходное (входное) изображение.
- mat — Объект класса Mat, представляющий целевое (выходное) изображение.
- размер — объект класса Size, представляющий размер, до которого изображение должно быть увеличено или уменьшено.
- borderType — переменная целочисленного типа, представляющая тип используемой границы.
src — Объект класса Mat, представляющий исходное (входное) изображение.
mat — Объект класса Mat, представляющий целевое (выходное) изображение.
размер — объект класса 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, представляющая радиус цветного окна.
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