2016-10-19 6 views
0

Hallo Stackoverflowers,Finding Linienabstände in Schwellwertbild - R/C++ Bildverarbeitung

Ich habe eine Frage zu Bildverarbeitung. Ich werde eine kurze Einführung über mein Projekt geben, Dinge klären und meine Frage stellen.

Ich benutze R jetzt, mit EBImage Bibliothek. Danach werde ich diesen Code in C++ schreiben.

In der Materialanalyse wird die Mikrostrukturanalyse durchgeführt, um die Struktur von Stahl zu verstehen. Es gibt einige Hinweise zum Analysator.

Meine Pflicht ist; Finden der Linienabstände im Bild. Ich werde es anhand von Bildern erklären.

Bild wird von genommen: https://de.wikipedia.org/wiki/Perlit_(Stahl)

ich eine Collage Bild hinterlassen wird, weil ich nicht Bilder als 2. Erstes Foto mehr laden kann, ist das Bild von Perlit-Mikrostruktur. Zweites Foto ist nach der Vorverarbeitung ein Schwellenwertbild. Drittes Foto ist, was ich auf Paint gemacht habe, um Ihnen die Regionen zu zeigen, die ich finden muss.

  • das Bild Grauskalierung:

    1. Foto, "Pre-processing" wird durch tun getan. Filter
    2. Schließung durch 7x7 Gaußschen Kernel
    3. Dilating Filter nach 3x3 Box Kernel
    4. Median-Filter 7x7
    5. Thresholding Bild

Schwarzweiss-Bild in der Collage Foto ist das Ergebnis dieser Schritte.

Collage Photo of Perlit

Nun, wenn Sie dieses Bild betrachten, gibt es einige Linienabstände von Rotstift über Farbe gezeigt, in dem dritten Foto. Ich möchte eine Segmentierung machen, um sie zu zeigen.

Sie können deutlich sehen, dass ich winzige vertikale Linien losgeworden bin, klare Segmente gemacht.

Ich brauche Hilfe bei der Segmentierung. Ich lese gerade viele Computer Vision und Bildverarbeitungs Bücher, aber leider konnte ich keine gute Lösung finden. In EBImage gibt es einige Funktionen, aber "bwlabel" oder "Wasserscheide" hat mir nicht viel geholfen.

Die Segmentierung erfolgt in diesem Bild horizontal. Aber es würde ein Bild mit Gradientenlinienabständen geben.

Ich stelle diese Frage nicht für fertige Copy-Paste-Antworten.Ich möchte wirklich lernen, wie man das macht. Jede Hilfe wird sehr geschätzt.

Vielen Dank für das Lesen meiner Fragen.

Antwort

0

Es scheint ein horizontales Muster in der Struktur zu sein .. ist es immer so? Haben Sie versucht, diese Korrelation zu nutzen? Vielleicht extrahieren Sie vertical histogram (Histogramm über Reihen von Pixeln), und Maxima finden?

Ich las Ihre Frage, schon sah, dass Sie die Horizontalität berücksichtigen. Wenn Sie das wissen, wenn Sie nur die roten Bereiche malen wollen, dann haben Sie bereits eine gute binäre Maske, um sie zu malen. Oder wollen Sie nicht die kleinen weißen Flecken zwischen der dunklen Struktur malen?

Cheers

+0

Nein, es kann auch gradiental sein, nicht immer horizontal oder vertikal. – EMI

+0

Ich möchte die langen Zeilenabstände im Bild malen. Ich habe eine gute binäre Maske, aber ich möchte kleine Bereiche eliminieren. Linienabstände sollten länger sein. – EMI

+0

können Sie das Bild drehen, um die allgemeine Richtung der Muster zu analysieren? Frequenzanalyse oder Hough-Transformation? – Hennio