Algorithmus zum Finden von Farbklecksen auf Bildern

Neue Frage »

Thomas Auf diesen Beitrag antworten »
Algorithmus zum Finden von Farbklecksen auf Bildern
Hi Ihr,

kennt ihr einen Algorithmus, mit dem man Farbkleckse auf Bildern zählen kann?
Die Farbkleckse haben einen deutlichen Kontrast zum Hintergrund, und sind natürlich in einem Farbton - haben aber natürlich unterschiedliche Farben.

Ich kann den Farbwert jedes Pixels ermitteln - ich müsste nur ähnlichfarbige zusammenhängende Bereiche ermitteln.

Wie kann man sowas machen?

Gruß,
Thomas
carsten Auf diesen Beitrag antworten »

Auf Bildern verschiedene Objekte zu unterscheiden heisst "segmentation".

Ich hoer gerade eine Vorlesung namens "digital image processing", und da kommt das auch drin vor. Pdf-Datei ueber Segmentation:
http://ultima.cs.unr.edu/cs674/unit5/unit5.pdf
Da geht es aber "nur" um graue Bilder. Das sollte aber kein Problem sein von einer Farbe auf 3 zu erweitern (ich nehem mal an, du hast die RGB Farbwerte).

Die Idee aehnlichfarbige Pixel zusammenzuschmeissen ist relativ einfach, ich versuch das mal anhand von "grau" zu erklaeren.
Du hast ein Bild und zu jedem Pixel einen Grauwert. Die ganze Grauskala von schwarz bis weiss teilt man geeignet in Intervalle ein. Die Grenzen kann man entweder per Hand bestimmen, oder aus dem Histogramm geeignete Grenzwerte ermitteln. (Histogramm ist einfach ein Diagramm was auf der x-Achse alle Grauwerte stehen hat und auf der y-Achse den prozentualen Anteil wie oft diese Farbe im Bild vorkommt). Geeignete Grenzen sind sowas wie lokale Minima.
Jetzt hat man gewisse Intervalle der Graustufen. Aus jedem Intervall nimmst du einen Farbwert heraus, die Mitte zum Beispiel. Und fuer alle Pixel schaust du dann in welchem Intervall sie liegen und weist ihnen entsprechend deinen Repraesentanten zu (so eine Art Aequivalenzrelation Augenzwinkern ).

Danach hast du dann ein Bild mit nur noch wenigen verschiedenen Farbtoenen. Und wenn die Grenzen sinnvoll gewaehlt worden sind, sollten alle Pixel eines Farbkleckses ein und die selbe Farbe haben.

Die Kleckse jetzt noch zu zaehlen sollte nicht so schwer sein.
Man koennte aus den farbigen Klecksen jetzt noch schwarze Kleckse auf weissem Hintergrund machen (geht analog). Und da koennte man einfach alle schwarzen Pixel in "Schubkaesten" schmeissen. Alle schwarzen Pixel die "Nachbarn" sind in eine Schublade und dann zum Schluss die Schublaeden zaehlen.
Thomas Auf diesen Beitrag antworten »

Hi carsten,

vielen Dank für die ausführliche Antwort. Ich werde mir mal das Skript ansehen, und mir die Sache durch denk Kopf gehen lassen und eventuell mal ausprobieren.

Falls noch wer andere Vorschläge hat, her damit Augenzwinkern

Gruß,
Thomas
mathemaduenn Auf diesen Beitrag antworten »

Hallo Thomas,
Carstens Ansatz bezieht sich ja darauf global nach ähnlichen Farben zu suchen. man kann das auch lokal machen.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
int zeile(Bildfeld,Markierungsfeld,i,j,marker)
{
int inhalt=0,k=i-1,start=i,ende=i;
while(Markierungsfeld[i][j]==0&&aehnlich(i,j,marker))
{
   Markierungsfeld[i][j]=marker;
   inhalt++;
   i++;
   ende=i;
}
i=k;
while(Markierungsfeld[i][j]==0&&aehnlich(i,j,marker))
{
   Markierungsfeld[i][j]=marker;
   inhalt++;
   start=i;
   i--;
}
for(k=start;k<ende;k++)
{
  if(Markierungsfeld[k][j+1]==0&&aehnlich(k,j+1,marker))
      inhalt+=zeile(Bildfeld,Markierungsfeld,k,j+1,marker);
  if(Markierungsfeld[k][j-1]==0&&aehnlich(k,j-1,marker))
      inhalt+=zeile(Bildfeld,Markierungsfeld,k,j-1,marker);
}
return inhalt;
}

Die Funktion aehnlich müsste true zurückgeben wenn der Punkt eben ähnlich zu den markierten in seiner Umgebung ist. Durch die Rekursion wird so der Flächeninhalt des Farbkleckses bestimmt und gleichzeitig die Fläche markiert. Rufst Du die Funktion zeile für jeden Punkt des Bildfeldes auf und zählst wann sie nicht null ist erhälst du die Anzahl der Farbkleckse. Das Markierungsfeld müsste mit null initialisiert werden und der wert für marker nat. nicht null sein. So das ungefähre Prinzip.
gruß
mathemaduenn
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »