Nachverfolgung zu Arithmetik mit mehrfacher Genauigkeit mit Python -- Ich habe mich entschieden, diesen Weg nicht zu gehen; Stattdessen verwende ich die schnellen Zahlen mit doppelter Genauigkeit und gehe nicht über 1e-13 oder so hinaus. Es ist immer noch langsam und wird gegen Ende sehr langsam, weil die Anzahl der Iterationen steigt.
Time required for successive pictures goes up, slowly at first. Then it gets weird.Die für aufeinanderfolgende Bilder benötigte Zeit steigt zunächst langsam an. Dann wird es komisch.
Mehr sehen...
dir = "F:/raindrops/bin1/";
f=filesindirectory(dir);
dt=newtable("f",newcolumn("name",character,values(f)),
newcolumn("date",formula(creationdate(dir||name)),format("H:M:S")),
newcolumn("pic num",formula(num(substr(word(2,name,"_"),2)))),
newcolumn("seconds",formula(date-lag(date)))
);
dt<<RUNFORMULAS></RUNFORMULAS>
Nach einigem Studieren stellte ich fest, dass die Spitzen in der benötigten Zeit nichts mit dem jeweiligen Bild zu tun hatten und direkt darauf zurückzuführen waren, dass die Maschine gleichzeitig einen anderen Rendering-Prozess durchführte. Beide Bilder sehen sehr ähnlich aus, die großen schwarzen Bereiche erfordern die maximale Anzahl von Iterationen auf jedem Pixel.
~58K iterations for each pixel in the large black patch.~58.000 Iterationen für jedes Pixel im großen schwarzen Fleck.
Während dieser Spitzen Mixer konvertierte Frames, die von dieser JSL erstellt wurden
Mehr sehen...
nr = 384 / 2;
nc = 384 / 2;
bitmap = J( nr, nc, -Random Integer( 0, 255 * 255 * 255 ) );
New Window( "x", bb = Border Box( Text Box( "x" ) ) );
nn = 1e6;
//pngdir = "F:/raindrops/png1/";
//Create Directory( pngdir );
While( nn-- > 0,
For( i = 1, i <= 1, i += 1,
img = New Image( bitmap );
img << setsize( {nc - 2, nr - 2} ); // use JMP's image processing to shrink array to the center
x = (img << getpixels)[0, 0]; // then put the shrunken image back
bitmap[2 :: nr - 1, 2 :: nc - 1] = x[1 :: nr - 2, 1 :: nc - 2]; // the add fresh noise around the edge
bitmap[1, 0] = J( 1, nc, -Random Integer( 0, 255 * 255 * 255 ) );
bitmap[nr, 0] = J( 1, nc, -Random Integer( 0, 255 * 255 * 255 ) );
bitmap[0, 1] = J( nr, 1, -Random Integer( 0, 255 * 255 * 255 ) );
bitmap[0, nc] = J( nr, 1, -Random Integer( 0, 255 * 255 * 255 ) );
);
img << setsize( {1920 * 1, 1920 * 1} ); // stretch, a lot
img << filter(
"canny", // use the canny edge detector
largeThreshold( .001 )/*tracing begins when a large-value edge is found*/,
smallThreshold( .00001 )/*tracing stops when the edge value gets too small*/,
radius( 3 )/*a blur-filter, use 0 for no blurring*/,
Repeat( 3 )/* number of repeats of a box-blur; 3 approximates a gaussian-blur filter */
);
// img << saveimage( pngdir || Char( nn ) || ".png" );
If( Mod( nn, 1 ) == 0,
imgS = New Image( img );
imgS << scale( .9 ); // keep it on screen by shrinking a bit
(bb << child) << delete; // remove old content
bb << append( imgS ); // add new content
);
Wait( .1 );
);
in dieses Video (das ist ... interessant ...? Nicht annähernd genug Bandbreite für so viel Action.) Ich verwende nur den Videosequenzeditor von Blender, nicht die 3D-Bits, für die er am bekanntesten ist.
https://www.youtube.com/watch?v=RzlMcQiOXHA
Das Canny Kantendetektor ist ziemlich cool, aber auch nicht das, was ich will. Es sieht so aus, als könnte ich 9000 erreichen; 175 zu gehen. 6 weitere Stunden für die letzten 6 Sekunden?