Aracılığıyla paylaş


Görsel

Önemli

Databricks, görüntü verilerini Spark DataFrame'e ham bayt olarak yüklemek için ikili dosya veri kaynağını kullanmanızı önerir. Görüntü verilerini işlemek için önerilen iş akışı için bkz . Görüntü uygulamaları için başvuru çözümü.

Görüntü veri kaynağı , görüntü gösterimlerinin ayrıntılarından soyutlar ve görüntü verilerini yüklemek için standart bir API sağlar. Görüntü dosyalarını okumak için veri kaynağını format olarak imagebelirtin.

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

Scala, Java ve R için benzer API'ler vardır.

İç içe dizin yapısını içeri aktarabilirsiniz (örneğin, gibi /path/to/dir/bir yol kullanın) ve bölüm dizinine sahip bir yol belirterek bölüm bulma özelliğini kullanabilirsiniz (örneğin, gibi /path/to/dir/date=2018-01-02/category=automobilebir yol).

Görüntü yapısı

Görüntü dosyaları, aşağıdaki alanlarla adlı image tek bir yapı türü sütunu içeren bir DataFrame olarak yüklenir:

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

alanlar şunlardır:

  • nChannels: Renk kanallarının sayısı. Tipik değerler gri tonlamalı görüntüler için 1, renkli görüntüler için 3 (örneğin RGB) ve alfa kanalı olan renkli görüntüler için 4'tür.

  • mode: Veri alanının nasıl yorumlandığını gösteren tamsayı bayrağı. Verilerin depolandığı veri türünü ve kanal sırasını belirtir. Alanın değerinin aşağıdaki tabloda görüntülenen OpenCV türlerinden biriyle eşleneceği beklenir (ancak zorunlu değildir). OpenCV türleri 1, 2, 3 veya 4 kanal için ve piksel değerleri için çeşitli veri türleri için tanımlanır. Kanal sırası, renklerin depolandığı sırayı belirtir. Örneğin, kırmızı, mavi ve yeşil bileşenler içeren tipik bir üç kanal resminiz varsa, altı olası sıralama vardır. Çoğu kitaplık RGB veya BGR kullanır. Üç (dört) kanallı OpenCV türünün BGR(A) sırada olması beklenir.

    OpenCV'de Tür ile Sayı Eşlemesi (veri türleri x kanal sayısı)

    Tür C1 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: İkili biçimde depolanan görüntü verileri. Görüntü verileri, boyut şekli (yükseklik, genişlik, nChannels) ve mod alanı tarafından belirtilen t türündeki dizi değerleriyle 3 boyutlu bir dizi olarak temsil edilir. Dizi, birincil satır sırasına göre depolanır.

Görüntü verilerini görüntüleme

Databricks display işlevi görüntü verilerinin görüntülenmesini destekler. Bkz. Resimler.

Not defteri örneği: Görüntü dosyalarına veri okuma ve yazma

Aşağıdaki not defterinde, görüntü dosyalarının nasıl okunduğu ve bu dosyalara nasıl veri yazacakları gösterilmektedir.

Görüntü veri kaynağı not defteri

Not defterini alma

Görüntü veri kaynağının sınırlamaları

Görüntü veri kaynağı Spark DataFrame oluşturulurken görüntü dosyalarının kodunu çözer, veri boyutunu artırır ve aşağıdaki senaryolarda sınırlamalar getirir:

  1. DataFrame'i kalıcı hale getirmek: Daha kolay erişim için DataFrame'i bir Delta tablosunda kalıcı hale getirmek istiyorsanız, disk alanından tasarruf etmek için kodu çözülen veriler yerine ham baytları kalıcı hale getirmelisiniz.
  2. Bölümleri karıştırma: Çözülen görüntü verilerini karıştırmak daha fazla disk alanı ve ağ bant genişliği alır ve bu da daha yavaş karıştırmaya neden olur. Görüntünün kodunu çözmeyi mümkün olduğunca geciktirmelisiniz.
  3. Diğer kod çözme yöntemini seçme: Görüntü veri kaynağı, daha iyi performans için diğer görüntü kod çözme kitaplıklarını seçmenizi veya özelleştirilmiş kod çözme mantığı uygulamanızı engelleyen javax Görüntü GÇ kitaplığını kullanarak görüntünün kodunu çözer.

Bu sınırlamalar, görüntü verilerini yüklemek için ikili dosya veri kaynağı kullanılarak ve yalnızca gerektiğinde kod çözme yoluyla önlenebilir.