OpenCV - piramidy obrazu
Piramida to operacja na obrazie, w której
Obraz wejściowy jest początkowo wygładzany przy użyciu określonego filtra wygładzającego (np. Gaussa, Laplaca), a następnie wygładzany obraz jest poddawany próbkowaniu.
Ten proces powtarza się wielokrotnie.
Podczas działania piramidy zwiększa się gładkość obrazu i zmniejsza rozdzielczość (rozmiar).
Pyramid Up
W Pyramid Up obraz jest wstępnie próbkowany, a następnie rozmyty. Możesz wykonać operację Pyramid Up na obrazie za pomocąpyrUP() metoda imgprocklasa. Poniżej znajduje się składnia tej metody -
pyrUp(src, dst, dstsize, borderType)
Ta metoda akceptuje następujące parametry -
src - Przedmiot z klasy Mat reprezentujący obraz źródłowy (wejściowy).
mat - Przedmiot z klasy Mat reprezentujący obraz docelowy (wyjściowy).
size - Przedmiot z klasy Size reprezentujący rozmiar, do którego obraz ma zostać powiększony lub zmniejszony.
borderType - zmienna typu całkowitego reprezentująca typ obramowania, który ma być użyty.
Przykład
Poniższy program demonstruje, jak wykonać operację Pyramid Up na obrazie.
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");
}
}
Załóżmy, że poniżej jest obraz wejściowy pyramid_input.jpg określone w powyższym programie.
Wynik
Podczas wykonywania programu otrzymasz następujący wynik -
Image Processed
Jeśli otworzysz określoną ścieżkę, możesz obserwować obraz wyjściowy w następujący sposób -
Piramida w dół
W Pyramid Down obraz jest początkowo rozmyty, a następnie próbkowany w dół. Możesz wykonać operację Pyramid Down na obrazie przy użyciupyrDown() metoda imgprocklasa. Poniżej znajduje się składnia tej metody -
pyrDown(src, dst, dstsize, borderType)
Ta metoda akceptuje następujące parametry -
src - Przedmiot z klasy Mat reprezentujący obraz źródłowy (wejściowy).
mat - Przedmiot z klasy Mat reprezentujący obraz docelowy (wyjściowy).
size - Przedmiot z klasy Size reprezentujący rozmiar, do którego obraz ma zostać powiększony lub zmniejszony.
borderType - zmienna typu całkowitego reprezentująca typ obramowania, który ma być użyty.
Przykład
Poniższy program demonstruje, jak wykonać operację Pyramid Down na obrazie.
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");
}
}
Załóżmy, że poniżej jest obraz wejściowy pyramid_input.jpg określone w powyższym programie.
Wynik
Podczas wykonywania programu otrzymasz następujący wynik -
Image Processed
Jeśli otworzysz określoną ścieżkę, możesz obserwować obraz wyjściowy w następujący sposób -
Filtrowanie z przesunięciem średnim
W operacji piramidy z przesunięciem średnim wykonywany jest początkowy etap segmentacji obrazu z przesunięciem średnim.
Operację filtrowania piramidowego z przesunięciem średnim można wykonać na obrazie przy użyciu funkcji pyrDown() metoda imgprocklasa. Poniżej znajduje się składnia tej metody.
pyrMeanShiftFiltering(src, dst, sp, sr)
Ta metoda akceptuje następujące parametry -
src - Przedmiot z klasy Mat reprezentujący obraz źródłowy (wejściowy).
mat - Przedmiot z klasy Mat reprezentujący obraz docelowy (wyjściowy).
sp - zmienna typu double reprezentująca przestrzenny promień okna.
sr - Zmienna typu double reprezentująca promień okna koloru.
Przykład
Poniższy program demonstruje, jak wykonać operację filtrowania z przesunięciem średnim na danym obrazie.
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");
}
}
Załóżmy, że poniżej jest obraz wejściowy pyramid_input.jpg określone w powyższym programie.
Wynik
Podczas wykonywania programu otrzymasz następujący wynik -
Image Processed
Jeśli otworzysz określoną ścieżkę, możesz obserwować obraz wyjściowy w następujący sposób -