OpenCV - filtr skrzynkowy

Operacja filtra pudełkowego jest podobna do operacji uśredniania rozmycia; nakłada dwustronny obraz na filtr. Tutaj możesz wybrać, czy pudełko ma być znormalizowane, czy nie.

Możesz wykonać tę operację na obrazie za pomocą boxFilter() metoda imgprocklasa. Poniżej znajduje się składnia tej metody -

boxFilter(src, dst, ddepth, ksize, anchor, normalize, borderType)

Ta metoda akceptuje następujące parametry -

  • src - A Mat obiekt reprezentujący źródło (obraz wejściowy) dla tej operacji.

  • dst - A Mat obiekt reprezentujący miejsce docelowe (obraz wyjściowy) dla tej operacji.

  • ddepth - Zmienna typu integer reprezentująca głębokość obrazu wyjściowego.

  • ksize - A Size obiekt reprezentujący rozmiar rozmazanego jądra.

  • anchor - zmienna typu integer reprezentująca punkt zakotwiczenia.

  • Normalize - Zmienna typu boolean określająca pogodę jądra powinna zostać znormalizowana.

  • borderType - Obiekt będący liczbą całkowitą reprezentujący typ używanego obramowania.

Przykład

Poniższy program demonstruje, jak wykonać operację Box Filter na obrazie.

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 BoxFilterTest {
   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/chap11/filter_input.jpg";
      Mat src = Imgcodecs.imread(file);

      // Creating an empty matrix to store the result
      Mat dst = new Mat();

      // Creating the objects for Size and Point
      Size size = new Size(45, 45);
      Point point = Point(-1, -1);

      // Applying Box Filter effect on the Image
      Imgproc.boxFilter(src, dst, 50, size, point, true, Core.BORDER_DEFAULT);

      // Writing the image
      Imgcodecs.imwrite("E:/OpenCV/chap11/boxfilterjpg", dst);

      System.out.println("Image Processed");
   }
}

Załóżmy, że poniżej jest obraz wejściowy filter_input.jpg określone w powyższym programie.

Wynik

Podczas wykonywania programu otrzymasz następujące dane wyjściowe -

Image Processed

Jeśli otworzysz określoną ścieżkę, możesz obserwować obraz wyjściowy w następujący sposób -