OpenCV - Unschärfe (Mittelwertbildung)
Unschärfe (Glättung) ist die häufig verwendete Bildverarbeitungsoperation zur Reduzierung des Bildrauschens. Der Prozess entfernt hochfrequente Inhalte wie Kanten aus dem Bild und macht es glatt.
Im Allgemeinen wird die Unschärfe durch Falten (jedes Element des Bildes wird zu seinen lokalen Nachbarn hinzugefügt, gewichtet durch den Kernel) des Bildes durch einen Tiefpassfilterkern erreicht.
Unschärfe (Mittelwertbildung)
Während dieses Vorgangs wird das Bild mit einem Boxfilter (normalisiert) gefaltet. Bei diesem Vorgang wird das zentrale Element des Bildes durch den Durchschnitt aller Pixel im Kernelbereich ersetzt.
Sie können diesen Vorgang mit der Methode für ein Bild ausführen blur() des imgprocKlasse. Es folgt die Syntax dieser Methode:
blur(src, dst, ksize, anchor, borderType)
Diese Methode akzeptiert die folgenden Parameter:
src - A. Mat Objekt, das die Quelle (Eingabebild) für diese Operation darstellt.
dst - A. Mat Objekt, das das Ziel (Ausgabebild) für diese Operation darstellt.
ksize - A. Size Objekt, das die Größe des Kernels darstellt.
anchor - Eine Variable vom Typ Integer, die den Ankerpunkt darstellt.
borderType - Eine Variable vom Typ Integer, die den Typ des Rahmens darstellt, der für die Ausgabe verwendet werden soll.
Beispiel
Das folgende Programm zeigt, wie die Mittelung (Unschärfe) für ein Bild ausgeführt wird.
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");
}
}
Angenommen, das Folgende ist das Eingabebild sample.jpg im obigen Programm angegeben.
Ausgabe
Beim Ausführen des Programms erhalten Sie folgende Ausgabe:
Image Processed
Wenn Sie den angegebenen Pfad öffnen, können Sie das Ausgabebild wie folgt beobachten: