Hallo,
ich habe folgendes Problem:
Ich möchte in einem 2-Dimensionales Array (momentan nur aus bestehend 0 und 1 Feldern = einem Binärbild) Seqmente finden und zusammenhängende 1er Felder mit einem gemeinsamen Label beschriften (in diesem Falle geht dann das Label von 2 bis n und wird gesetzt indem ich einfach die 1 im Feld mit dem jeweiligen Wert ueberschreibe.
Das ganze versuche ich rekursiv, habe aber ein Problem bei der Uebergabe des Arrays (=grid[resX][resY]) an die Rekursion.
Wäre super wenn mir jemand einen Tipp geben könnte was ich falsch mache. Bin nicht so wirklich erfahren in C++ und vorallem nicht mit Rekursionen. Das macht mir diverse Gehirnverknotungen
//******************************************************************************************
//initialisierung der Array-Grössen (momentan global)
int resX = 500;
int resY = 500;
...
//segmentierungsfunktion
void doSegmentation(int **grid, int x, int y, int label) {
grid[x][y] = label;
//gehe ueber alle 8 nachbarn des aktuellen pixels und gehe in rekursion wenn ein Pixel mit 1 belegt ist (d.h. nicht 0 und nicht schon gelabelt)
for (int dy=-1; dy<=1; dy++) {
for (int dx=-1; dx<=1; dx++) {
if(grid[x+dx][y+dy] == 1) {
//TODO: ueberpruefe hier ob nachbar vorhanden und != grid[x][y]
doSegmentation(grid, x+dx, y+dy, label);
cout<<"in recursion"<<endl;
}
else
continue;
}
}
return;
}
......
//startpunkt der Rekursion
int label = 2;
//gehe ueber 2 dim array von 1 bis res-2
//wenn pixel ==1 gehe in rekursion
for(int i=1; i<resX-1; i++) {
for(int j=1; j<resY-1; j++){
if(grid[i][j]==1) {
doSegmentation(grid, i, j, label); //uebergabe grid an rekursion
}
label++;
}
}
//******************************************************************************************
compilerfehler ist momentan folgender:
cannot convert 'int(*)[((resY-1)+1]' to 'int**' for argument '1' to 'void doSegmentation(int**,int,int,int)'
*******************************************************************************************
viele gruesse,
marie