Diese Seite zeigt die Fähigkeiten und den Stil von Aurora Vision Library mit sehr kurzen Codeausschnitten. Beziehen Sie sich bitte auf die offiziellen Beispiele, die mit dem Produkt installiert werden, um vollständige Inspektionen und Beispielanwendungen anzuschauen.
Einige der typischen Bildverarbeitungswerkzeuge sind Glättungsfilter. Hier wird die Gauß- und Median-Bildrauschunterdrückung gezeigt. Beachten Sie, dass image1 die Eingabe und image2 die Ausgabe ist.
SmoothImage_Gauss( image1, NIL, 2.0f, 2.0f, 2.5f, image2 ); SmoothImage_Median( image1, NIL, NIL, SmoothImageMedianKernel::Box, 3, NIL, image2 );
Eingabe:
Ausgabe (Gauss):
Ausgabe (Median):
Eine Region ist eine Gruppe von Pixelorten oder ein komprimiertes binäres Bild. Der nachstehende Code zeigt die Extraktion einer Region von roten Pixeln und denen Nachbearbeitung.
Region region1, region2, region3, region4; ThresholdToRegion_HSx(image1, NIL, HSxColorModel::HSV, 0, 10, 190, 255, 65, 255, region1); CloseRegion(region1, KernelShape::Ellipse, 15, 15, region2); FillRegionHoles(region2, RegionConnectivity::EightDirections, NIL, 10000, region3); DrawRegion(image1, region3, NIL, Pixel(0, 255, 0), 1.0); OpenRegion(region3, KernelShape::Ellipse, 15, 15, region4); DrawRegion(image1, region4, NIL, Pixel(255, 0, 0), 1.0);
Eingabe:
Ausgabe:
DataMatrix-Codes werden in zwei Schritten gelesen: zunächst werden Kandidaten entdeckt und dann werden die Codes an den Fundstellen erkannt.
DataMatrixCodeParams codeParams; DataMatrixDetectionParams detectionParams; Conditional<DataCode> code; Array<Path> candidates; ReadSingleDataMatrixCode(image1, NIL, NIL, codeParams, detectionParams, code, candidates); if (code != NIL) { DrawingStyle style(DrawingMode::HighQuality, 1.0f, 3.0f, false, NIL, 2.0); DrawPath(image1, code.Get().Outline(), NIL, Pixel(255, 0, 0), style); DrawString(image1, code.Get().Text(), Location(10, 10), NIL, Anchor2D::TopLeft, Pixel(255, 0, 0), style, 18.0f, 0.0f, NIL); }
Eingabe:
Ausgabe:
Shape Fitting ermöglicht das Lokalisieren von Formen, deren geschätzte Orte vorher bekannt sind. Hier wird die Anpassung einer Strecke in zwei Schritten gezeigt: eine Fitting-Abbildung wird erstellt und dann das Fitting selbst durchgeführt.
// Create shape fitting map SegmentFittingField field(Segment2D(40.0f, 30.0f, 40.0f, 130.0f), 30.0f); SegmentFittingMap map; ImageFormat imageFormat(image1.Width(), image1.Height(), PlainType::UInt8, 3); CreateSegmentFittingMap(imageFormat, field, NIL, 12, 5, InterpolationMethod::Bilinear, map); // Fit the shape EdgeScanParams params; params.minMagnitude = 10.0f; params.edgeTransition = EdgeTransition::BrightToDark; Conditional<Segment2D> segment; FitSegmentToEdges(image1, map, params, Selection::Best, NIL, 0.1f, NIL, segment); if (segment != NIL) { DrawingStyle style(DrawingMode::HighQuality, 1.0f, 2.0f, false, NIL, 0.0f); DrawSegment(image1, segment.Get(), NIL, Pixel(255, 0, 0), style, MarkerType::None, 0.0f); }
Eingabe:
Ausgabe:
Diagnostik:
Musteranpassungstechniken ermöglichen das Lokalisieren von Objekten an beliebigen Orten und Rotationen. Ein Beispiel einer typischen Anwendung ist das Entdecken von Passermarken auf einer elektronischen Schaltung:
Image image1; LoadImage("fiducial_template.png", false, image1); Conditional<EdgeModel> model; CreateEdgeModel(image1, NIL, NIL, 0, NIL, 0.0f, 35.0f, 15.0f, -45.0f, +45.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, model); Image image2; LoadImage("fiducial_input.png", false, image2); Conditional<Object2D> object; if (model != NIL) { LocateSingleObject_Edges(image2, NIL, model.Get(), 1, 3, 10.0f, EdgePolarityMode::MatchStrictly, EdgeNoiseLevel::High, false, 0.7f, object); if (object != NIL) { DrawingStyle style(DrawingMode::HighQuality, 1.0f, 3.0f, false, NIL, 2.0); DrawRectangle(image2, object.Get().Match(), NIL, Pixel(255, 0, 0), style); } }
Muster:
Eingabe:
Ausgabe:
Aurora Vision Library unterstützt die Bildaufnahme von allen GigE Vision- und GenICam-kompatiblen Kameras und Frame Grabbern. Hier wird das Schema der Bildaufnahme von GigE Vision-Geräten gezeigt:
// Initialize acquisition GigEHandle hDev = GigEVision_OpenDevice("169.254.1.81"); GigEVision_StartAcquisition(hDev, "Mono8"); Image image1; while (true) { // Grab image GigEVision_ReceiveImage(hDev, image1); // Process image ProcessImage(image1); } // Finalize acquisition avl::GigEVision_StopAcquisition(hDev); avl::GigEVision_CloseHandle(hDev);