Image
Důležité
Databricks doporučuje použít zdroj dat binárního souboru k načtení dat obrázků do datového rámce Spark jako nezpracovaných bajtů. Viz Referenční řešení pro aplikace obrázků pro doporučené pracovní postupy pro zpracování dat obrázků.
Zdroj dat obrázku abstrahuje z podrobností o reprezentaci obrázků a poskytuje standardní rozhraní API pro načtení dat obrázků. Chcete-li číst soubory obrázků, zadejte zdroj format
dat jako image
.
df = spark.read.format("image").load("<path-to-image-data>")
Podobná rozhraní API existují pro Scala, Javu a R.
Můžete importovat vnořenou adresářovou strukturu (například použít cestu jako /path/to/dir/
) a zjišťování oddílů můžete použít zadáním cesty s adresářem oddílu (to znamená cestu, jako je /path/to/dir/date=2018-01-02/category=automobile
).
Struktura obrázku
Soubory obrázků se načtou jako datový rámec obsahující jeden sloupec typu struktury, který se nazývá image
s následujícími poli:
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
kde jsou pole:
nChannels
: Počet barevných kanálů. Typické hodnoty jsou 1 pro obrázky ve stupních šedé, 3 pro barevné obrázky (například RGB) a 4 pro barevné obrázky s alfa kanálem.mode
: Celočíselná příznak označující, jak interpretovat datové pole. Určuje datový typ a pořadí kanálů, ve které jsou data uložená. Hodnota pole se očekává (ale nevynucuje) pro mapování na jeden z typů OpenCV zobrazených v následující tabulce. Typy OpenCV jsou definovány pro 1, 2, 3 nebo 4 kanály a několik datových typů pro hodnoty pixelů. Pořadí kanálů určuje pořadí, ve kterém jsou barvy uloženy. Pokud máte například typický obrázek se třemi kanály s červenými, modrými a zelenými komponentami, existuje šest možných objednávek. Většina knihoven používá RGB nebo BGR. Očekává se, že tři (čtyři) typy OpenCV kanálu budou v pořadí BGR(A).Mapování typu na čísla v OpenCV (datové typy x počet kanálů)
Typ S1 C2 C3 C4 CV_8U 0 8 16 24 CV_8S 1 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
: Obrazová data uložená v binárním formátu. Data obrázku jsou reprezentována jako trojrozměrné pole s rozměry (výška, šířka, nChannels) a hodnotami pole typu t, určené režimem. Pole je uloženo v pořadí hlavního řádku.
Zobrazení dat obrázku
Funkce Databricks display
podporuje zobrazování dat obrázků. Viz obrázky.
Příklad poznámkového bloku: Čtení a zápis dat do souborů obrázků
Následující poznámkový blok ukazuje, jak číst a zapisovat data do souborů obrázků.
Poznámkový blok zdroje dat obrázku
Získejte poznámkový blok
Omezení zdroje dat obrázku
Zdroj dat obrázku dekóduje soubory obrázků během vytváření datového rámce Spark, zvětšuje velikost dat a zavádí omezení v následujících scénářích:
- Zachování datového rámce: Pokud chcete datový rámec zachovat v tabulce Delta pro snadnější přístup, měli byste zachovat nezpracované bajty místo dekódovaných dat, abyste ušetřili místo na disku.
- Náhodné prohazování oddílů: Náhodné prohazování dekódovaných dat obrázků zabírá více místa na disku a šířku pásma sítě, což vede k pomalejšímu náhodnému náhodnému prohazování. Dekódování obrázku byste měli co nejvíce zpozdit.
- Volba jiné dekódovací metody: Zdroj dat obrázku používá knihovnu Vstupně-výstupní operace image javax k dekódování obrázku, což vám brání v výběru jiných knihoven dekódování obrázků pro lepší výkon nebo implementaci přizpůsobené dekódovací logiky.
Tato omezení se dají vyhnout použitím zdroje dat binárního souboru k načtení dat obrázku a dekódování pouze podle potřeby.