effizient programmieren - suche tips...



  • Bei der Überprüfung oder beim Schreiben der "NEUEN" Werte in die "ALTEN" Werte wirst Du wahrscheinlich ähnliche Prüfungsroutinen (Setze NEU Werte, wenn ALT Wert in einem Interval [a,b] liegt) haben, die wenn Du sie in einem 10er Block zusammenführst, schneller sind. Hab ich das richtig verstanden ?

    na ja, ich spar mir eigentlich die prüfroutinen. wenn mein alter wertebereich von 0-255 geht und ich meine intervallgrenzen berechnet habe (sind ja nicht ganz linear über den wertebereich verteilt), dann leg ich mir erstmal ein array mit 256 einträgen an und jeder eintrag enthält den meinen intervallgrenzen entsprechenden neuen wert, d.h angenommen array[180] = 7 (--> alter wert 180 entspricht neuem wert 7)
    nun kann ich meinen voxelhaufen durchlaufen und brauch für jeden punkt nur noch:

    img(x,y,z) = array[img(x,y,z)]

    damit sollte ich mir jede menge vergleiche sparen, denke ich...

    (übrigens hat sich mein geschwindigkeitsproblem irgendwie in luft aufgelöst... kann es mir nur so erklären, dass die einführung des arrays und das löschen ein paar ziemlich dämlicher statements ausschlaggebend was. hatte ja vorher in meinen for-schleifen noch eine weitere for-schleife zum auffinden des neuen wertes + 3 weitere statements. jetzt steht in meinen for-schleifen nur noch 1 statement 👍 )



  • Gregor_ schrieb:

    musicman schrieb:

    July schrieb:

    was verstehst du unter "umskalierung von grauwerten"? das ist doch das, was ich machen will und was ich die ganze zeit zu erklären versuche, oder nicht???

    Genau, und das macht der Algo den ich grad gepostet habe.

    Glaube ich nicht. Ich glaube, dass der Code, den du da gepostet hast, nur Unsinn macht. 😉

    😕 😕
    Ich denke, der Algorithmus macht genau eine lineare Skalierung eines Arrays, oder??



  • musicman schrieb:

    Gregor_ schrieb:

    musicman schrieb:

    July schrieb:

    was verstehst du unter "umskalierung von grauwerten"? das ist doch das, was ich machen will und was ich die ganze zeit zu erklären versuche, oder nicht???

    Genau, und das macht der Algo den ich grad gepostet habe.

    Glaube ich nicht. Ich glaube, dass der Code, den du da gepostet hast, nur Unsinn macht. 😉

    😕 😕
    Ich denke, der Algorithmus macht genau eine lineare Skalierung eines Arrays, oder??

    Ja, ok. Das stimmt natürlich schon. Es wird aber nicht auf die angesprochenen 32 Werte skaliert, sondern etwas ganz anderes gemacht.

    Was ist denn dein maxVal? Der maximale Wert, der im alten Bild auftauchen kann? Gehen wir mal davon aus, dass das 255 ist und gehen wir auch davon aus, dass oldVal[i] für ein i 255 ist. Dann ist der neue Wert 255*255/32=2032,03125. Oder soll maxVal der neue maximale Wert sein? Dann wäre bei oldVal[i]=255 der neue Wert (mit maxVal=32) 255*32/32=255. Dann würde also garnichts passieren. Die Formel sollte eher folgendermaßen aussehen:

    neuerWert = alterWert*neuerMaximalwert/alterMaximalwert.



  • @Gregor:
    Ok, sorry, da hab ich wohl was anderes getippt als ich eigentlich gemeint hab. Bei mir aufm Schmierzettel steht es immer noch korrekt 😉
    Im Beitrag hab ich's jetzt auch korrigiert.


Anmelden zum Antworten