image annotateImages

Standardfall: Visuelle Qualitätskontrolle für Elektronikbauteile

Scénario de test & Cas d'usage

Geschäftskontext

Ein Hersteller von Elektronikkomponenten verwendet ein automatisiertes Inspektionssystem, um potenzielle Defekte wie Kratzer oder falsche Lötstellen zu erkennen. Die Ergebnisse (Bilder und Defektkoordinaten) werden in einer CAS-Tabelle gespeichert. Ziel ist es, diese Defekte durch das Zeichnen von farbigen Rechtecken direkt auf den Bildern zu visualisieren, um die manuelle Überprüfung durch Qualitätsingenieure zu beschleunigen. Die Farbe des Rechtecks soll den Schweregrad des Defekts anzeigen.
Über das Set : image

Bildverarbeitung, -manipulation und -analyse.

Entdecken Sie alle Aktionen von image
Datenaufbereitung

Erstellt eine simulierte Tabelle mit Bild-IDs und Annotationsdaten für Defekte. Jeder Defekt hat Koordinaten (x, y, Breite, Höhe) und einen Schweregrad. Es wird angenommen, dass die Bilder bereits in 'casuser.inspektionsbilder' geladen sind.

Kopiert!
1DATA casuser.defekt_koordinaten;
2 LENGTH bild_id $50 defekt_typ $20;
3 INFILE DATALINES DLM=',';
4 INPUT bild_id $ schweregrad x y breite hoehe defekt_typ $;
5 DATALINES;
6bauteil_001.jpg,1,50,50,100,80,Kratzer
7bauteil_001.jpg,2,200,150,30,30,Loetfehler
8bauteil_002.png,1,20,30,120,100,Kratzer
9bauteil_003.jpg,3,300,250,50,50,Riss
10;
11RUN;
12 
13/* Annahme: Die Bildtabelle existiert bereits. Hier wird sie nur simuliert. */
14DATA casuser.inspektionsbilder;
15 LENGTH _name_ $50 _path_ $100;
16 _name_ = 'bauteil_001.jpg'; _path_='/path/bauteil_001.jpg'; OUTPUT;
17 _name_ = 'bauteil_002.png'; _path_='/path/bauteil_002.png'; OUTPUT;
18 _name_ = 'bauteil_003.jpg'; _path_='/path/bauteil_003.jpg'; OUTPUT;
19RUN;
20 
21PROC SQL;
22 CREATE TABLE casuser.bilder_mit_defekten AS
23 SELECT a.*, b.schweregrad, b.x, b.y, b.breite, b.hoehe, b.defekt_typ
24 FROM casuser.inspektionsbilder a
25 JOIN casuser.defekt_koordinaten b ON a._name_ = b.bild_id;
26QUIT;

Étapes de réalisation

1
Zeichnen von gelben Rechtecken für Defekte mit niedrigem Schweregrad (schweregrad=1).
Kopiert!
1PROC CAS;
2 image.annotateImages /
3 images={TABLE={name='bilder_mit_defekten', where='schweregrad=1'}}
4 annotations={{
5 /* Oben */
6 {annotation={annotationType='LINES', representation={representationType='MULTI_COLUMN', x1='x', y1='y', x2_expr='x + breite', y2='y'}, r=255, g=255, b=0, thickness=2}},
7 /* Unten */
8 {annotation={annotationType='LINES', representation={representationType='MULTI_COLUMN', x1='x', y1_expr='y + hoehe', x2_expr='x + breite', y2_expr='y + hoehe'}, r=255, g=255, b=0, thickness=2}},
9 /* Links */
10 {annotation={annotationType='LINES', representation={representationType='MULTI_COLUMN', x1='x', y1='y', x2='x', y2_expr='y + hoehe'}, r=255, g=255, b=0, thickness=2}},
11 /* Rechts */
12 {annotation={annotationType='LINES', representation={representationType='MULTI_COLUMN', x1_expr='x + breite', y1='y', x2_expr='x + breite', y2_expr='y + hoehe'}, r=255, g=255, b=0, thickness=2}}
13 }}
14 casOut={name='annotierte_bilder_temp', caslib='CASUSER', replace=true};
15RUN;
2
Zeichnen von roten Rechtecken für Defekte mit hohem Schweregrad (schweregrad > 1) auf denselben Bildern.
Kopiert!
1PROC CAS;
2 image.annotateImages /
3 images={TABLE={name='bilder_mit_defekten', where='schweregrad > 1'}}
4 annotations={{
5 {annotation={annotationType='LINES', representation={representationType='MULTI_COLUMN', x1='x', y1='y', x2_expr='x + breite', y2='y'}, r=255, g=0, b=0, thickness=3}},
6 {annotation={annotationType='LINES', representation={representationType='MULTI_COLUMN', x1='x', y1_expr='y + hoehe', x2_expr='x + breite', y2_expr='y + hoehe'}, r=255, g=0, b=0, thickness=3}},
7 {annotation={annotationType='LINES', representation={representationType='MULTI_COLUMN', x1='x', y1='y', x2='x', y2_expr='y + hoehe'}, r=255, g=0, b=0, thickness=3}},
8 {annotation={annotationType='LINES', representation={representationType='MULTI_COLUMN', x1_expr='x + breite', y1='y', x2_expr='x + breite', y2_expr='y + hoehe'}, r=255, g=0, b=0, thickness=3}}
9 }}
10 casOut={name='annotierte_bilder_final', caslib='CASUSER', replace=true};
11RUN;

Erwartetes Ergebnis


Die finale Ausgabetabelle 'annotierte_bilder_final' enthält die Bilder mit den annotierten Defekten. Bilder mit mehreren Defekten unterschiedlichen Schweregrades zeigen sowohl gelbe als auch rote Rechtecke. Die Aktion verarbeitet erfolgreich die Koordinaten und Ausdrücke, um die Rechtecke korrekt zu zeichnen.