Пирамида — это операция над изображением, где
-
Входное изображение первоначально сглаживается с использованием определенного сглаживающего фильтра (например, гауссов, лапласиан), а затем сглаженное изображение подвергается субдискретизации.
-
Этот процесс повторяется несколько раз.
Входное изображение первоначально сглаживается с использованием определенного сглаживающего фильтра (например, гауссов, лапласиан), а затем сглаженное изображение подвергается субдискретизации.
Этот процесс повторяется несколько раз.
Во время операции пирамиды гладкость изображения увеличивается, а разрешение (размер) уменьшается.
Пирамида вверх
В «Пирамиде вверх» изображение сначала дискретизируется, а затем размывается. Вы можете выполнить операцию 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 . Ниже приводится синтаксис этого метода —
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
Если вы откроете указанный путь, вы можете наблюдать выходное изображение следующим образом —