OpenCV - Bulanıklaştırma (Ortalama)
Bulanıklaştırma (yumuşatma), görüntü parazitini azaltmak için yaygın olarak kullanılan görüntü işleme işlemidir. İşlem, görüntüden kenarlar gibi yüksek frekanslı içeriği kaldırır ve pürüzsüz hale getirir.
Genel olarak bulanıklaştırma, görüntünün düşük geçişli bir filtre çekirdeği aracılığıyla kıvrılmasıyla (görüntünün her bir öğesi yerel komşularına eklenir, çekirdek tarafından ağırlıklandırılır) elde edilir.
Bulanıklaştırma (Ortalama)
Bu işlem sırasında, görüntü bir kutu filtresi (normalleştirilmiş) ile çevrilir. Bu süreçte, görüntünün merkezi öğesi, çekirdek alanındaki tüm piksellerin ortalaması ile değiştirilir.
Bu işlemi, yöntemi kullanarak bir görüntü üzerinde gerçekleştirebilirsiniz. blur() of imgprocsınıf. Bu yöntemin sözdizimi aşağıdadır -
blur(src, dst, ksize, anchor, borderType)
Bu yöntem aşağıdaki parametreleri kabul eder -
src - bir Mat Bu işlem için kaynağı (giriş görüntüsü) temsil eden nesne.
dst - bir Mat bu işlem için hedefi (çıktı görüntüsü) temsil eden nesne.
ksize - bir Size çekirdeğin boyutunu temsil eden nesne.
anchor - Çapa noktasını temsil eden tam sayı türünde bir değişken.
borderType - Çıktıda kullanılacak sınırın türünü temsil eden tamsayı türünde bir değişken.
Misal
Aşağıdaki program, bir görüntü üzerinde ortalama alma (bulanıklaştırma) işleminin nasıl gerçekleştirileceğini gösterir.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class BlurTest {
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 ="C:/EXAMPLES/OpenCV/sample.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
// Creating the Size and Point objects
Size size = new Size(45, 45);
Point point = new Point(20, 30);
// Applying Blur effect on the Image
Imgproc.blur(src, dst, size, point, Core.BORDER_DEFAULT);
// blur(Mat src, Mat dst, Size ksize, Point anchor, int borderType)
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap9/blur.jpg", dst);
System.out.println("Image processed");
}
}
Aşağıdakinin giriş görüntüsü olduğunu varsayalım sample.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 -