Megosztás a következőn keresztül:


Kép

Fontos

A Databricks azt javasolja, hogy a bináris fájl adatforrásával töltsön be képadatokat a Spark DataFrame-be nyers bájtként. Lásd : Referenciamegoldás képalkalmazásokhoz az ajánlott munkafolyamathoz a képadatok kezeléséhez.

A kép adatforrása elvonja a képmegjelenések részleteit, és szabványos API-t biztosít a képadatok betöltéséhez. Képfájlok olvasásához adja meg az adatforrást format a következőként image: .

df = spark.read.format("image").load("<path-to-image-data>")

Hasonló API-k léteznek a Scala, a Java és az R esetében.

Importálhat beágyazott könyvtárstruktúrát (például használhat egy elérési utat), /path/to/dir/és a partíciófelderítést használhatja egy partíciókönyvtárral (például egy elérési /path/to/dir/date=2018-01-02/category=automobileúttal) rendelkező elérési út megadásával.

Képstruktúra

A rendszer a képfájlokat DataFrame-ként tölti be, amely egyetlen strukturálási típusú oszlopot tartalmaz, amelynek neve a következő mezőkkel van meghívva image :

image: struct containing all the image data
  |-- origin: string representing the source URI
  |-- height: integer, image height in pixels
  |-- width: integer, image width in pixels
  |-- nChannels
  |-- mode
  |-- data

ahol a mezők a következők:

  • nChannels: A színcsatornák száma. A jellemző értékek a szürkeárnyalatos képeknél 1, a színes képeknél 3 (például RGB), a színes képeknél pedig 4 alfa csatornával.

  • mode: Egész szám jelölő, amely az adatmező értelmezését jelzi. Megadja az adatok adattípusát és csatornasorrendét. A mező értéke várhatóan (de nem kényszerítve) megfeleltethető az alábbi táblázatban megjelenített OpenCV-típusok egyikének. Az OpenCV-típusok 1, 2, 3 vagy 4 csatornához és több adattípushoz vannak definiálva a képpontértékekhez. A csatorna sorrendje határozza meg a színek tárolási sorrendjét. Ha például egy tipikus háromcsatornás rendszerkép piros, kék és zöld összetevőkkel rendelkezik, hat lehetséges sorrend áll rendelkezésre. A legtöbb kódtár RGB-t vagy BGR-t használ. Három (négy) csatornás OpenCV-típus várhatóan BGR(A) sorrendben lesz.

    Típustérkép számokhoz az OpenCV-ben (adattípusok x csatornák száma)

    Típus C1 C2 C3 C4
    CV_8U 0 8 16 24
    CV_8S 0 9 17 25
    CV_16U 2 10 18 26
    CV_16S 3 11 19 27
    CV_32U 4 12 20 28
    CV_32S 5 13 21 29
    CV_64F 6 14 22 30
  • data: Bináris formátumban tárolt képadatok. A rendszer háromdimenziós tömbként jeleníti meg a képadatokat a módmező által megadott dimenzióalakzattal (magasság, szélesség, nChannels) és t típusú tömbértékekkel. A tömb sorszintű sorrendben van tárolva.

Képadatok megjelenítése

A Databricks display függvény támogatja a képadatok megjelenítését. Lásd a képeket.

Példa jegyzetfüzetre: Adatok olvasása és írása képfájlokba

Az alábbi jegyzetfüzet bemutatja, hogyan olvashat és írhat adatokat képfájlokba.

Kép adatforrás-jegyzetfüzete

Jegyzetfüzet beszerzése

A kép adatforrásának korlátozásai

A kép adatforrása dekódolja a képfájlokat a Spark DataFrame létrehozása során, növeli az adatméretet, és korlátozásokat vezet be a következő forgatókönyvekben:

  1. A DataFrame megőrzése: Ha a DataFrame-et egy Delta-táblában szeretné megőrizni a könnyebb hozzáférés érdekében, a dekódolt adatok helyett a nyers bájtokat kell megőriznie, hogy helyet takarítson meg.
  2. A partíciók elfojtása: A dekódolt képadatok elfojtása több lemezterületet és hálózati sávszélességet igényel, ami lassabb elegyítést eredményez. A lehető legnagyobb mértékben késleltetnie kell a kép dekódolását.
  3. Más dekódolási módszer kiválasztása: A kép adatforrása a javax rendszerkép IO-kódtárával dekódolja a képet, ami megakadályozza, hogy más képdekódoló kódtárakat válasszon a jobb teljesítmény érdekében, vagy testre szabott dekódolási logikát implementáljon.

Ezeket a korlátozásokat elkerülheti, ha a bináris fájl adatforrásával betölti a képadatokat, és csak szükség szerint dekódolja őket.