Ich wäre ja froh wenn es das wäre.
Die Daten liegen sequentiell im Speicher. K ist der Zähler für das kontinuierliche Array, i und j die für Zeilen und Spalten.
Dabei gilt : k = i * image.size().width + j
Das hier:
Code:
for( i = 0, k = 0 ; i < image.size().height ; i++ ) {
for( j = 0 ; j < image.size().width ; j++, k++ ) {
image_data[k][0] = image.at<double>(i, j);
image_data[k][1] = 0.0;
}
}
entspricht dem hier:
Code:
/* load images' data to FFTW input*/
for( k = 0 ; k < size ; k++ ) {
image_data[k][0] = ((double *) image.data)[k];
image_data[k][1] = 0.0;
}
Der fancy image.at operator erspart einem nur den Pointer-Typecast und man kann direkt Pixel adressieren ohne sich über die Repräsentation im Speicher im klaren zu sein. (Deswegen muss hier auch explizit dach (double*) gecasted werden weil ich den Datentyp kenne.) Zweiteres ist halt schneller aber hässlicher.
Lesezeichen