OpenCV - Görüntü Piramitleri
Piramit, bir görüntü üzerinde bir işlemdir.
Bir girdi görüntüsü, başlangıçta belirli bir yumuşatma filtresi (ör: Gauss, Laplacian) kullanılarak düzleştirilir ve ardından düzleştirilmiş görüntü alt örneklenir.
Bu işlem birçok kez tekrarlanır.
Piramit işlemi sırasında görüntünün düzgünlüğü artırılır ve çözünürlüğü (boyutu) azaltılır.
Piramit Yukarı
Pyramid Up'ta, görüntü başlangıçta yukarı örneklenir ve ardından bulanıklaştırılır. Pyramid Up işlemini bir görüntü üzerinde,pyrUP() yöntemi imgprocsınıf. Bu yöntemin sözdizimi aşağıdadır -
pyrUp(src, dst, dstsize, borderType)
Bu yöntem aşağıdaki parametreleri kabul eder -
src - Sınıfın bir nesnesi Mat kaynak (giriş) görüntüsünü temsil eder.
mat - Sınıfın bir nesnesi Mat hedef (çıktı) görüntüsünü temsil eder.
size - Sınıfın bir nesnesi Size görüntünün artırılacağı veya azaltılacağı boyutu temsil eder.
borderType - Kullanılacak kenarlık türünü temsil eden tam sayı türünde bir değişken.
Misal
Aşağıdaki program, bir görüntü üzerinde Pyramid Up işleminin nasıl gerçekleştirileceğini gösterir.
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");
}
}
Aşağıdakinin giriş görüntüsü olduğunu varsayalım pyramid_input.jpg yukarıdaki programda belirtilmiştir.
Çıktı
Programı çalıştırırken aşağıdaki çıktıyı alacaksınız -
Image Processed
Belirtilen yolu açarsanız, çıktı görüntüsünü aşağıdaki gibi gözlemleyebilirsiniz -
Piramit Aşağı
Pyramid Down'da, görüntü başlangıçta bulanıklaştırılır ve ardından aşağı örneklenir. Pyramid Down işlemini bir görüntü üzerinde,pyrDown() yöntemi imgprocsınıf. Bu yöntemin sözdizimi aşağıdadır -
pyrDown(src, dst, dstsize, borderType)
Bu yöntem aşağıdaki parametreleri kabul eder -
src - Sınıfın bir nesnesi Mat kaynak (giriş) görüntüsünü temsil eder.
mat - Sınıfın bir nesnesi Mat hedef (çıktı) görüntüsünü temsil eder.
size - Sınıfın bir nesnesi Size görüntünün artırılacağı veya azaltılacağı boyutu temsil eder.
borderType - Kullanılacak kenarlık türünü temsil eden tam sayı türünde bir değişken.
Misal
Aşağıdaki program, bir görüntü üzerinde Pyramid Down işleminin nasıl gerçekleştirileceğini göstermektedir.
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");
}
}
Aşağıdakinin giriş görüntüsü olduğunu varsayalım pyramid_input.jpg yukarıdaki programda belirtilmiştir.
Çıktı
Programı çalıştırırken aşağıdaki çıktıyı alacaksınız -
Image Processed
Belirtilen yolu açarsanız, çıktı görüntüsünü aşağıdaki gibi gözlemleyebilirsiniz -
Ortalama Vardiya Filtreleme
Ortalama Kaydırma piramidi işleminde, bir görüntünün ortalama kaydırma segmentasyonunun ilk adımı gerçekleştirilir.
Piramit Ortalama Kaydırma Filtreleme işlemini bir görüntü üzerinde, pyrDown() yöntemi imgprocsınıf. Bu yöntemin sözdizimi aşağıdadır.
pyrMeanShiftFiltering(src, dst, sp, sr)
Bu yöntem aşağıdaki parametreleri kabul eder -
src - Sınıfın bir nesnesi Mat kaynak (giriş) görüntüsünü temsil eder.
mat - Sınıfın bir nesnesi Mat hedef (çıktı) görüntüsünü temsil eder.
sp - Uzamsal pencere yarıçapını temsil eden double türünde bir değişken.
sr - Renk penceresi yarıçapını temsil eden double türünde bir değişken.
Misal
Aşağıdaki program, belirli bir görüntü üzerinde Ortalama Kayma Filtreleme işleminin nasıl gerçekleştirileceğini gösterir.
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");
}
}
Aşağıdakinin giriş görüntüsü olduğunu varsayalım pyramid_input.jpg yukarıdaki programda belirtilmiştir.
Çıktı
Programı çalıştırırken aşağıdaki çıktıyı alacaksınız -
Image Processed
Belirtilen yolu açarsanız, çıktı görüntüsünü aşağıdaki gibi gözlemleyebilirsiniz -