الصورة
هام
توصي Databricks باستخدام مصدر بيانات الملف الثنائي لتحميل بيانات الصورة في Spark DataFrame كوحدات بايت أولية. راجع الحل المرجعي لتطبيقات الصور لسير العمل الموصى به لمعالجة بيانات الصورة.
يلخص مصدر بيانات الصورة تفاصيل تمثيلات الصور ويوفر واجهة برمجة تطبيقات قياسية لتحميل بيانات الصورة. لقراءة ملفات الصور، حدد مصدر format
البيانات ك image
.
df = spark.read.format("image").load("<path-to-image-data>")
توجد واجهات برمجة تطبيقات مماثلة ل Scala وJava وR.
يمكنك استيراد بنية دليل متداخلة (على سبيل المثال، استخدام مسار مثل /path/to/dir/
) ويمكنك استخدام اكتشاف القسم عن طريق تحديد مسار مع دليل قسم (أي، مسار مثل /path/to/dir/date=2018-01-02/category=automobile
).
بنية الصورة
يتم تحميل ملفات الصور ك DataFrame يحتوي على عمود واحد من نوع البنية يسمى 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
حيث تكون الحقول:
nChannels
: عدد قنوات الألوان. القيم النموذجية هي 1 لصور تدرج الرمادي، و3 للصور الملونة (على سبيل المثال، RGB)، و4 للصور الملونة مع قناة ألفا.mode
: علامة عدد صحيح تشير إلى كيفية تفسير حقل البيانات. يحدد نوع البيانات وترتيب القناة التي يتم تخزين البيانات فيها. من المتوقع تعيين قيمة الحقل (ولكن لا يتم فرضها) إلى أحد أنواع OpenCV المعروضة في الجدول التالي. يتم تعريف أنواع OpenCV لقنوات 1 أو 2 أو 3 أو 4 وأنواع بيانات متعددة لقيم البكسل. يحدد ترتيب القناة الترتيب الذي يتم تخزين الألوان به. على سبيل المثال، إذا كان لديك صورة قناة ثلاثية نموذجية بمكونات حمراء وأزرق وأخضر، فهناك ستة طلبات محتملة. تستخدم معظم المكتبات إما RGB أو BGR. من المتوقع أن تكون ثلاثة (أربعة) أنواع OpenCV للقناة بترتيب BGR(A).تعيين النوع إلى الأرقام في OpenCV (أنواع البيانات × عدد القنوات)
نوع C1 جـ2 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
: بيانات الصورة المخزنة بتنسيق ثنائي. يتم تمثيل بيانات الصورة كصفيف ثلاثي الأبعاد مع شكل البعد (الارتفاع والعرض وnChannels) وقيم الصفيف من النوع t المحدد بواسطة حقل الوضع. يتم تخزين الصفيف بترتيب صف رئيسي.
عرض بيانات الصورة
تدعم الدالة Databricks display
عرض بيانات الصورة. راجع الصور.
مثال دفتر الملاحظات: قراءة البيانات وكتابتها إلى ملفات الصور
يوضح دفتر الملاحظات التالي كيفية قراءة البيانات وكتابتها في ملفات الصور.
دفتر ملاحظات مصدر بيانات الصورة
قيود مصدر بيانات الصورة
يقوم مصدر بيانات الصورة بفك تشفير ملفات الصور أثناء إنشاء Spark DataFrame، ويزيد من حجم البيانات، ويقدم قيود في السيناريوهات التالية:
- استمرار DataFrame: إذا كنت تريد الاحتفاظ ب DataFrame في جدول Delta لتسهيل الوصول إليه، فيجب عليك الاحتفاظ بالبايت الخام بدلا من البيانات التي تم فك ترميزها لتوفير مساحة على القرص.
- تبديل الأقسام عشوائيا: يؤدي تبديل بيانات الصورة التي تم فك ترميزها إلى الحصول على مساحة إضافية على القرص وعرض النطاق الترددي للشبكة، مما يؤدي إلى تبديل أبطأ. يجب عليك تأخير فك ترميز الصورة قدر الإمكان.
- اختيار طريقة فك ترميز أخرى: يستخدم مصدر بيانات الصورة مكتبة Image IO ل javax لفك ترميز الصورة، ما يمنعك من اختيار مكتبات فك ترميز الصور الأخرى للحصول على أداء أفضل أو تنفيذ منطق فك ترميز مخصص.
يمكن تجنب هذه القيود باستخدام مصدر بيانات الملف الثنائي لتحميل بيانات الصور وفك ترميزها فقط حسب الحاجة.