On Tue, 2003-07-29 at 14:01, Serghei Amelian wrote: > Stie cineva unde pot gasi documentatie referitoare la scalarea pixmap-urilor? > Ma intereseaza algoritmii de interpolare a pixelilor, chestii de astea. > Sau poate sa ma ajute cineva sa creez un algoritm de scalare mai rapid pentru > QFaxReader? Smooth-scaling-ul din QT merge super greu, pentru ca e generic, > pentru imagini cu orice adancime de culoare. Pe mine m-ar interesa un > algoritm care sa foloseasca la intrare imagini-fax (B/W, un singur bit/pixel) > si sa scoata pixmap in trepte de gri pe 8 biti. Sunt convins ar fi muult mai > rapid, deoarece cantitatea de date procesata ar fi mai mica. Oare daca > sectiunile critice ar fi scrise in assembler folosind toate facilitatile > procesoarelor moderne (ma refer la IA32, adica MMX, 3DNow!) nu ar fi si mai > rapid?
Ceea ce vrei tu se poate face prin filtrarea imaginilor folosind mai multe tipuri de filtre ca: Box, Bessel, Blackman, Cubic, Gaussian, Hanning, Hamming, Hermite, Sinc, Lanczos, Mitchell, Quadratic. Implementari la filtrele astea le gasesti in gimp, ImageMagick. Din cate stiu eu nu exista o implementare directa adica resize+conversie de la 1bpp la 8bpp, dar e usor de modificat implementarile din gimp. Pentru optimizare la MMX/3DNow!/SSE/SSE2, pornesti de la sursa assembler generata de compilatorul C pe care incepi sa o optimizezi folosind instructiuni si registrii speciali. S-ar putea ca gcc-ul sa faca direct optimizari pt MMX/3DNow!/SSE, dar daca faci in assembler rezultatele pot fi mai bune. O alta idee de marire a performantelor, este lucrul cu bucati de imagine de pana 256K (marimea cache a procesorului). Regards, Mihnea
