Kedves Attila!
Megválaszoltad a kérdést, kimondtad a bűvös szót! Annyira…
Tehát valamennyire torzulhat ide-oda az adat, attól függően hogy milyen adattal és transzformációval dolgozunk.
Ha valamilyen transzformációt csinálunk és az eredmény nem fér el a kijelölt helyen, akkor levágjuk különben Exception lesz a vége (környezettől függően a mellette lévő byteba írunk). Persze transzformálhatjuk ide oda, és az eredményt begyömöszölhetjük egy byte is, de az információt elvesztjük.
Onnantól, hogy nem tudjuk tárolni a számított értéket, dönthetünk, Min-re vagy Max-ra csonkítunk (középre még se tegyük). Így összhangban van az érzékeinkkel, hogy ha „fent” vesztünk értéket, akkor fent húzzuk meg a határt, ha lent (negatív) akkor nullánál. Mert a negatívból(sötétedés) megint világosat kaphatnánk és megint csodálkoznánk, hogy nincs összhangban az elvárttal
A kérdés inkább az, hogy miért transzformáljuk túl a képeket és megengedhető e? Véleményem szerint igen és pl. így előhozhatunk nem jól látható részeket, azon az áron, hogy a láthatóakból viszont elvesztünk. A program(szűrő) el tudná dönteni, hogy nem transzformál tovább, mert adatvesztés lesz, de akkor meg azon sopánkodunk, hogy nem látjuk jól a sötétben megbújó nyulat.
A Gimp miért engedi, hogy túl tranzsfomájunk a szűrőkkel? Gondolom, a döntést(minőség választást) a felhasználóra bízza, azért.
Az én leegyszerűsített példámnál jobb lesz, ha belinkelek egy nagyon profi frameworkot, amiket aztán magyaráznom sem kell, mert úgy működnek ahogy kifejlesztették őket a téma szakértői
Itt végig lehet nézni nagyon sok eljárást, és ha szükséges, akkor, pont úgy csonkolnak mint én tettem. Mindegy, hogy egy konstanst adok hozzá vagy egy jó bonyolult függvénnyel teszem ugyanezt.
Pl.: ConvulutionFilter (ebből az osztályból származik pl a Blur és a Sharpen is, azaz ezek is ugyanazt a kódot használják!) 421, 521 soroknál és persze érdemes tovább turkálni, hasonlók még jó pár helyen lesznek:
https://github.com/mdavid/aforge.net/bl ... olution.csMég egy gondolat. A programokban lehetnek olyan vizsgálatok, szűrések, amik nem nyilvánvalóak. Gondolok itt olyanra, hogy a fejlesztő a saját képeivel dolgozva megnézi a hisztogramját a képnek és ha valamely komponenst nem tart jónak, fel – le húzhat rajta szubjektív benyomásai alapján. Az ilyen „beégetett” kódolásnak az lehet az erdménye, hogy valami katyvasz lesz a válasz a nem megfelelő bementre, mert nem arra lett optimalizálva. De nem tudom, hogy vannak e hasonlók az említett programokban.
Az hogy a program magától ismerjen fel problémákat, ma már többé-!kevésbé megoldott (Wiki =>Neurális hálózatok). Azonban ebben az esetben ennyi információval (képekkel) ennek a „költsége” (fejlesztés/gép/gépidő/sikeresség) hatalmas és nem éri meg hobbi szinten a felhasználást. Marad a konkrét feladathoz való optimalizálás, kódbeégetés.
Remélem sikerült megfelelő választ adnom!
Üdv!
JE