WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Bildausschnitt umranden und äußeren Bereich entfernen

 

Dave01
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2021, 23:58     Titel: Bildausschnitt umranden und äußeren Bereich entfernen
  Antworten mit Zitat      
Hallo Zusammen,

wir haben gerade an einem Projekt und benötigen bitte ein wenig Hilfe.

Aktuell laden wir > 400 Bilder (sollen in Zukunft > 100.000 werden) in das Programm, diese werden zugeschnitten, nach Kreisen gesucht, der Abstand ausgerechnet und in ein xls. File geschrieben.

Da der Bildzuschnitt nicht immer funktioniert, da die Position der Teile im Bild variiert, möchten wir gerne nach einer Umrandung suchen, die einer "8" gleicht (siehe Anhang), hier finden wir aktuell keine Möglichkeit, diese "8" zu bestimmen und den Rest des Bildes zu entfernen (potentielle Fehlermöglichkeit bei der Kreiserkennung).

Zusätzliche Frage: Die Abarbeitung der Bilder wurde derzeit als FOR-Schleife realisiert, gibt es hierfür eine effizientere Abarbeitungsmethode (aktuelle Bewertung ca. 1sek/Bild inkl. Schreiben in xls.).

Vielen Dank vorab & liebe Grüße
Dave

Anhang.png
 Beschreibung:

Download
 Dateiname:  Anhang.png
 Dateigröße:  28.68 KB
 Heruntergeladen:  255 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.487
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.06.2021, 10:11     Titel:
  Antworten mit Zitat      
Hallo,

zur Frage der 8 würde ich nach "Pattern Recognition" suchen.

Eine Alternative zu for kann imageDatastore sein. Meine Vermutung ist aber, dass weniger die for-Schleife an sich als deren Inhalt das Problem darstellt. Mit dem Profiler kannst du sehen, welche Zeilen die meiste Zeit benötigen.

Falls das Ergebnis eine Excel-Datei für alle Bilder sein soll, würde ich die Daten innerhalb von MATLAB sammeln und am Ende nach Excel schreiben.
Falls das Ergebnis eine Datei pro Bild sein soll, würde ich statt xls(x) ein anderes Format, z.B. csv (kann auch in Excel schön geöffnet werden) wählen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Dave01
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2021, 10:43     Titel:
  Antworten mit Zitat      
Vielen Dank, werden wir uns ansehen Smile

Harald hat Folgendes geschrieben:

Falls das Ergebnis eine Excel-Datei für alle Bilder sein soll, würde ich die Daten innerhalb von MATLAB sammeln und am Ende nach Excel schreiben.
Falls das Ergebnis eine Datei pro Bild sein soll, würde ich statt xls(x) ein anderes Format, z.B. csv (kann auch in Excel schön geöffnet werden) wählen.


Das Ergebnis ist eine Auflistung der berechneten Kreis- Abstände in einer Excel Spalte. Für uns ist es nicht notwendig die Bilder zu speichern.

Danke schonmal!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.487
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.06.2021, 10:59     Titel:
  Antworten mit Zitat      
Hallo,

eine andere Möglichkeit noch: eine Kreuzkorrelation (xcorr2) mit einer 8, so wie ihr sie zu sehen erwartet, als Vorlage.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Dave01
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2021, 19:57     Titel:
  Antworten mit Zitat      
Guten Abend!

Wir haben nun einiges probiert: Mit dem Profiler haben wir herausgefunden, welcher Schritt lange dauert und konnten so die Bewertung pro Bild von 1 sek auf 0,4 sek reduzieren, Prima! Wir hatten vorher in der Schleife in die xls geschrieben, jetzt speichern wir alles in eine Matrize und Schreiben es am Schluss in die xls. Danke, so passt das schon ganz gut!

Mit der 8- Suche haben wir noch ein paar Schwierigkeiten, mit den genannten Funktionen sind wir leider noch nicht weitergekommen, hätten aber eine Alternative als Vorschlag (imfindcircles, siehe bitte Anhang).

Das linke Bild zeigt die Suche der zwei Achterkreise, diese sind auch einfach zu finden weil sie mit der Größe im Bild einzigartig sind. Wenn wir anschließend die zwei kleinen Kreise finden möchten, variiert das Ergebnis zwischen den drei Kreisen, im Bild rechts dargestellt (auch wenn mit den Funktionen centers, radii, metric die Suche auf zwei Kreise reduziert wird).

Besteht die Möglichkeit, das Bild außerhalb der zwei gefunden Achterkreise Schwarz einzufärben?

Viele Grüße
Dave

Kreissuche.png
 Beschreibung:

Download
 Dateiname:  Kreissuche.png
 Dateigröße:  9.69 KB
 Heruntergeladen:  261 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.487
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.06.2021, 21:58     Titel:
  Antworten mit Zitat      
Hallo,

wenn die Verarbeitung der Bilder voneinander unabhängig ist, kann parfor eine weitere Beschleunigung liefern.

Zitat:
Besteht die Möglichkeit, das Bild außerhalb der zwei gefunden Achterkreise Schwarz einzufärben?

Sollte mit logischer Indizierung gehen. Mit x und y als Pixelvektoren bzw. -matrizen, Kreismittelpunkten (x1,y1) und Radius r1 und entsprechend für den zweiten Kreis:
Code:
M( (x-x1).^2 + (y-y1).^2 > r1^2 & (x-x2).^2 + (y-y2).^2 > r2^2 ) = 0; % oder was schwarz ist


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.