Digitális fényképek szűrése és konvertálása

Java: Cikkek Digitális fényképek szűrése és konvertálása

Egy tesztkép található a "Digitális fotók modellezése a ConvolveOp segítségével". A kép itt is megfogható. Az alábbi példákban a kép test.jpg. A képnek ugyanabban a könyvtárban kell lennie, ahol ellenőrizni fogja a példákat.

Először is létrehozunk egy alapot ezekhez a példákhoz. A következő program, PéldaFrame (példa a bázisra), megegyezik a ConvolveOp példáján látható példával. Csakúgy, mint a korábbi tippekben szereplő kód példák, a ExampleFramework JFrame-et használ, amely egy képet tartalmaz és a JSlider-et használja. Azonban, hogy megkönnyítsék a különböző szűrők és átalakítások megértését, a speciális effektusokkal kapcsolatos kód helyett gyors hozzáférési funkciókat helyeztünk el. A következetesség érdekében a szóban forgó képet szűrve (szűrve) szűrjük, ha szűrőket vagy átalakításokat alkalmaznak rá.

Használjuk az affin átalakításokat az első példában a kép növeléséhez és csökkentéséhez. Talán az átalakítások néhány matematikai részletére utal az "affin transzformációk megértése" számra. Létrehozhatod az affin transzformációkat, és átadsz két érvet. Ezután új képet készít a régiről az AffineTransformOp segítségével, amelyet már létrehozott. Végül megmondja a ExampleFramework objektumnak, hogy frissítse a képet a képernyőn. Itt van a kód, amely az alábbi lépéseket tartalmazza:

Az első argumentum határozza meg, hogy melyik létrehozott AffineTransform típust. Ebben az esetben a getScaleInstance () függvényre hivatkozva létrehozza a skálázást, és elküldi a vízszintes és a függőleges paramétereket. A második argumentum határozza meg az interpolációs típust. Ebben az esetben a TYPE_BILINEAR típusú (bilineáris típus) típust használja, amely az egyes képpontok értékét a szomszédos képpontok átlagaként kezeli. Más választása lehet TYPE_NEAREST_NEIGHBOR (legközelebbi szomszéd típusa), amely beilleszti a legközelebbi pixelértéket. Kísérletezzen minden egyes interpolációs típussal ebben a példában. Vegye figyelembe, hogy a TYPE_BILINEAR kissé lassabb, de jobb képminőséget nyújt. Bár a TYPE_NEAREST_NEIGHBOR érzékenyebb, a kép nagyításkor gyorsan szemcsés lesz.

Fordítsd le és futtasd a következő programot, ScaleExample.java, hogy láthasd ezt a konverziót.

Egy másik affin transzformáció egy rögzített pont körüli forgás. A kép középpontját kiszámíthatja. Ezután elküldheti ezt az információt, valamint azt a számot, amelyhez forgatni szeretné a képet, a getRotateInstance () függvényt. Az előző példához hasonlóan a TYPE_BILINEAR helyett TYPE_NEAREST_NEIGHBOR helyettesítheti az eredményeket. Itt vannak a forgatás változásai.

A RescaleOp () az első paraméterrel van inicializálva - a szorzó beállítva. Ha az eredeti képet szeretné ábrázolni, a szorzónak 1. A kép fényesebbé tételéhez az értéknek nagyobbnak kell lennie, mint egy, és az árnyékolásnál kisebbnek kell lennie. Az eltolás meghatározásához a második argumentumot is használhatja. Ezt az értéket a következőképpen egészítik ki:

Kísérletezzen különböző eltolási értékekkel a következő programban, a LinearBrightness.java (lineáris fényerő).

A LookupExample (mintakeresés) összeállítása és futtatása. Ne feledje, hogy a fényerő nagyon különbözik attól, amelyikben a LinearBrightness (lineáris megvilágítás) volt. Ha a csúszka mozgatásakor megváltoztatni kívánt pixeleket követni szeretné, akkor a setBrightnessFactor () függvénnyel választhatja azokat:

Az utolsó példában a ColorConvertOp segítségével a kép fekete-fehérben jeleníthető meg:

Több transzformációt is alkalmazhat. Ezután használhatja a LookupExample példa szűrőit a fekete-fehér képre, ahogy az a következő programban látható: GrayExample (szürke példa).

Ezekből az alapvető példákból kiindulva kísérletezhet, kombinálhat és bővíthet, ami kifinomult és érdekes szűrőket tesz a digitális képek számára.

A képekről bővebb információkért lásd: "Képek készítése"


Figyelmeztetés. mysql_connect () [function.mysql-csatlakozáshoz]: Nem lehet csatlakozni a helyi MySQL szerver segítségével socket '/tmp/mysql.sock' (2) A /pub/home/javaport/javaportal/books/show2b.php 11 vonalon

Figyelmeztetés. mysql_db_query () [function.mysql-db-query]: Nem lehet csatlakozni a helyi MySQL szerver segítségével socket '/tmp/mysql.sock' (2) A /pub/home/javaport/javaportal/books/show2b.php on 19. sor

Figyelmeztetés. mysql_db_query () [function.mysql-db-lekérdezés]: Egy link a szerver nem volt megállapítható a /pub/home/javaport/javaportal/books/show2b.php on line 19

Figyelmeztetés. mysql_fetch_array (): a megadott argumentum nem érvényes MySQL eredményforrás a /pub/home/javaport/javaportal/books/show2b.php oldalon 30
Tudja meg, mire gondolsz most.


[hiba történt az irányelv feldolgozása során]


Figyelmeztetés. mysql_connect () [function.mysql-csatlakozáshoz]: Nem lehet csatlakozni a helyi MySQL szerver segítségével socket '/tmp/mysql.sock' (2) A /pub/home/javaport/javaportal/news/worldnews.php on line 91

Figyelmeztetés. mysql_db_query () [function.mysql-db-query]: Nem lehet csatlakozni a helyi MySQL szerver segítségével socket '/tmp/mysql.sock' (2) A /pub/home/javaport/javaportal/news/worldnews.php on 93. sor

Figyelmeztetés. mysql_db_query () [function.mysql-db-lekérdezés]: Egy link a szerver nem volt megállapítható a /pub/home/javaport/javaportal/news/worldnews.php on line 93

Figyelmeztetés. mysql_fetch_array (): a megadott argumentum nem érvényes MySQL erőforrás a /pub/home/javaport/javaportal/news/worldnews.php oldalon 95