Einzelnen Beitrag anzeigen

Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#1

Regionen erkennen aus einer Matrix

  Alt 9. Jan 2011, 12:03
Hi,

ich hab hier eine Aufgabe über der ich schon seit einiger Zeit grübele:

Als Vorgabe besitze ich eine eindimensionale Matrix (bestehend aus Breite*Höhe):

Map: array[0..256 * 256 - 1] of Boolean;

Die Aufgabe ist nun sämtliche gesetzte Punkte zu zählen und Regionen zuzuordnen. Mein Grundgerüst schaut wie folgt aus:

Code:
procedure FindRegions(const Width, Height: Integer; const Map: array of Boolean; var Regions: array of Integer);
var tmp: integer;
  i, j: integer;
  x, y: integer;
begin
  // Regionen löschen
  Fillchar(Regions, sizeof(regions), 0);

  for y := 0 to Height - 1 do
    for x := 0 to Width - 1 do
    begin
     
    end;

  // Bubblesort von Groß, zu Klein
  for i := 0 to high(regions) - 2 do
    for j := 0 to high(regions) - 2 do
      if (i <> j) and (regions[i] > regions[j]) then
      begin
        tmp := regions[i];
        regions[i] := regions[j];
        regions[j] := tmp;
      end;
end;
Als Ausgabe sollte eine Integer Liste mit der Pixelanzahl der jeweiligen Regionen sein. Meine Idee ist anstelle des Map: array[0..256 * 256 - 1] of Boolean;
ein Map: array[0..256 * 256 - 1] of Integer; zu machen, dem bei der Initialisierung eine fortlaufende Nummer zu geben - der Einfachheit der Offset und die Punkte drumherum zu zählen und ggf. zusammenzuführen, also Punkt links, Punkt Oben, Punkt rechts <> 0, dann setze alle Punkte auf den Wert des ersten Punktes.
Das ganze hat aber Macken, weiß jemand von euch eventuell Rat?

Peter
  Mit Zitat antworten Zitat