OpenCV - Dilatation
Erosion und Dilatation sind die beiden Arten von morphologischen Operationen. Wie der Name schon sagt, sind morphologische Operationen die Menge von Operationen, die Bilder gemäß ihrer Form verarbeiten.
Basierend auf dem gegebenen Eingabebild wird ein "Strukturelement" entwickelt. Dies kann in einem der beiden Verfahren erfolgen. Diese zielen darauf ab, Rauschen zu beseitigen und die Unvollkommenheiten zu beseitigen, um das Bild klar zu machen.
Erweiterung
Diese Prozedur folgt der Faltung mit einem Kern einer bestimmten Form, wie beispielsweise einem Quadrat oder einem Kreis. Dieser Kernel hat einen Ankerpunkt, der sein Zentrum bezeichnet.
Dieser Kernel überlappt das Bild, um den maximalen Pixelwert zu berechnen. Nach der Berechnung wird das Bild in der Mitte durch einen Anker ersetzt. Mit diesem Verfahren vergrößern sich die Bereiche heller Bereiche und damit die Bildgröße.
Beispielsweise nimmt die Größe eines Objekts in weißem oder hellem Farbton zu, während die Größe eines Objekts in schwarzem oder dunklem Farbton abnimmt.
Sie können den Dilatationsvorgang für ein Bild mithilfe von ausführen dilate() Methode der imgprocKlasse. Es folgt die Syntax dieser Methode.
dilate(src, dst, kernel)
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.
kernel - A. Mat Objekt, das den Kernel darstellt.
Beispiel
Sie können die Kernelmatrix mit der vorbereiten getStructuringElement()Methode. Diese Methode akzeptiert eine Ganzzahl, die das darstelltmorph_rect Typ und ein Objekt des Typs Size.
Imgproc.getStructuringElement(int shape, Size ksize);
Das folgende Programm zeigt, wie die Dilatationsoperation an einem bestimmten Bild durchgeführt wird.
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 DilateTest {
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();
// Preparing the kernel matrix object
Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT,
new Size((2*2) + 1, (2*2)+1));
// Applying dilate on the Image
Imgproc.dilate(src, dst, kernel);
// Writing the image
Imgcodecs.imwrite("E:/OpenCV/chap10/Dilation.jpg", dst);
System.out.println("Image Processed");
}
}
Eingang
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: