Matlab

  • ich hoffe, das ist der richtige ort.


    Kennt sich jemand mit matlab aus und könnte mir behilflich sein? Ich möchte in einem bild bestimmte muster/öffnungen abzählen lassen, ich weiß allerdings nicht, wie ich das angehen könnte.

    Ich würde mich über jeden tipp freuen.

    Vielen Dank

  • Ich kenne deinen konkreten Anwendungsfall nicht bzw. das Bild/die Bilder aber eine Idee wäre (keine Ahnung ob es die beste ist oder im Internet besser Lösungen gibt) das Bild in eine Schwarz-Weiß-Grau-Bild wandeln (geht ggf. auch ohne diesen Schrit). Das Bild dann in eine Matrix mit den Grauwerten/Schwarzwerten verwandeln und dann einen entsprechenden Algorithmus (gibt hier veschiedene Möglichkeiten - von "einfachen" Algorithmen für die entsprechenden Form durch Bestimmung entsprechender Parameter bis hin zur AI-Lösungen) der dir die entsprechenden Muster-/Öffnugnen erkennt und ggf. dann im Nachgang makiert/einzeichnet.

  • Ich würde dir wie Karton empfehlen, openCV zu verwenden. Da gibt es für solche Anwendungsfälle viele gut dokumentierte Funktionen, die dir das direkte hantieren mit irgendwelchen Matrizen erspart. Vom ersten Blick her würde ich (bei einer Implementierung mit openCV) folgendes Versuchen:


    - der Hintergrund ist recht blass, daher würde ich das Bild in den HSV-Farbraum konvertieren

    - einen Threshold für den Saturation-Kanal suchen und das Bild so segmentieren, dass alle Pixel mit einem Saturation-Wert unter dem Threshold weiß und der Rest schwarz ist

    - Konturen im so erzeugten Binärbild suchen

    - Für die Konturen die Fläche berechnen

    - Dann kannst du dir die Anzahl der Flächen über einem bestimmten Grenzwert anzeigen lassen und damit arbeiten. An diesem Punkt kannst du noch weitere Sachen wie Schwerpunkt oder Bounding Boxen aus der Kontur herleiten.


    Das ist jetzt erst Mal ein grobes Vorgehen, wie ich das versuchen würde. Matlab habe ich noch nie für Bildverarbeitung verwendet, vielleicht gibt es da ähnliche Funktionen wie in openCV

  • Das muss nicht so sein, Matlab hat sicherlich auch solche Funktionen (wie raq sagte). Das allgemeine Vorgehen müsstest du in Matlab damit auch umsetzen können.