Portál AbcLinuxu, 1. května 2025 03:28
Operácie nad floatmi sú omnoho pomalšieAle ty tam máš double. Operace nad floatama jsou pomalejší než celočíselý, ale operace nad double precision jsou obvykle afaik ještě pomalejší...
Zaujímava tema, aj ked trochu mi chýba kontext. To v akom programe píšeš? Alebo to je niečo všeobecné windowsovské? Ten jazyk je C#? (nie je to podstatné, v podstate sa +- dá uhádnuť čo si v tom robil)
Vstupom je predpokladám RGB obrázok v int 0-255 - teda štandartne jpg a podobné formáty, správne?
gammu neriešiš?
nie sú rozdielné výsledky oproti defaultnému saturovaniu dané hlavne iným algoritmom?
Ak som správne pochopil algoritmus, tak použitím floatu sa vyhneš dvom zaukruľovaniam - a to pri výpočte grey (priemeru RGB, môže to vyjsť ako x, x.3333 alebo x.6666) a následne finálnej hodnoty kanála, kde sa navyše vo vzorci použije už zaokrúlené gray.
Nevraviac o tom že pri int sa zaokruľovanie deje dosť primitívne - smerom dole pri kladných číslach - čo je dalšia strata presnosti.
Takže double je podľa mna zbytočné, inak máš samozrejme pravdu, floatmi zachárniš nejaké informácie...
Prečo si sa rozhodol vytvárať 2D array veľkosti obrázka, jednoduché iterovanie a prepisovanie pixelov si nezvažoval? Ale je problém s rýchlosťou čítania a zápisu do image (alebo ako sa to ten objekt volá.....)? Windows neumožnuje načítavať obrázok po riadkoch/stlpcoch- tým by si sa vyhol alokácii veľkého množstva pamäte, a rýchlosť by možno až tak neutrpela...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.