لا يعني True الشيء نفسه في كل قناع. عند تجهيز خلايا صورة مكانية لمدخل نموذج، قد يعكس المساعد قبول الخلايا إذا نقل قناعا من تمثيل إلى آخر دون قراءة اصطلاحه. نثبت خليتين وقيمتيهما في ورقة، ثم نقارن قناع صلاحية GDAL بقناع مصفوفة NumPy المقنعة؛ لا نفتح صورة أو نعالج رصدا.
الخلاصة السريعة
في قناع الصلاحية غير الصفر يعني صالحا؛ أما True في قناع المصفوفة المقنعة فيعني غير صالح. [1] سمّ القناع قبل تفسيره.
- يوثق Rasterio أن قناع GDAL يقبل غير الصفر، وغالبا 255؛ وقناع numpy.ma يعكس المعنى، فـ True يستبعد الخلية. [1]
- نعلن للخليتين أ وب قناع صلاحية 255 و 0؛ يقابله في القناع المعكوس False و True، مع بقاء ترتيب الخليتين وقيمتيهما.
- قيمة البكسل ليست قيمة القناع؛ في ورقتنا قيمة أ هي 0 لكنها صالحة بحسب القناع المعلن، ولا نحول صفر البيانات تلقائيا إلى غياب.
- نقصر المثال على قناع الحزمة نفسها والنسخة والمواضع نفسها؛ قناع dataset_mask يخص الملف لا الحزمة وحدها. [1] الصلاحية هنا ليست شهادة دقة قياس.
أي قناع نقرأ؟
يعرض Rasterio قناع صلاحية GDAL بمصفوفة بايتات، حيث غير الصفر، عادة 255، يعني صلاحية البيانات. أما mask في numpy.ma.MaskedArray فـ True يعني أن العنصر غير صالح. [1]
نحتاج إذن اسم الحقل والتمثيل، لا كلمة قناع وحدها. نعني بالصلاحية هنا قبول الخلية حسب بيانات القناع المحدد، ولا نعني أن قيمتها صحيحة في العالم أو مناسبة لكل مهمة تعلم آلة. الخطأ في الاصطلاح يختار المجموعة المعاكسة حتى لو بقيت أبعادها صحيحة.
كيف يمثل قناعان الخليتين نفسيهما؟
نؤلف موضعين مرتبين أ ثم ب في حزمة واحدة. قيمة البيانات في أ صفر، وفي ب 8. ونعلن قناع صلاحية أ بالقيمة 255 وب بالقيمة 0. هكذا تقبل أ وتستبعد ب في بطاقتنا، بصرف النظر عن كبر الرقم 8.
إذا مثلنا الحكم نفسه بقناع المصفوفة المقنعة، تكون أ False وب True. لم نغير صفر البيانات إلى 255 أو العدد 8 إلى صفر؛ غيّرنا طريقة وصف قبول الموضع. هاتان قائمتان مختلفتا الوظيفة: بيانات وقناع.
المقارنة يدوية على بطاقة كاملة. لا نقول إن ملفا حقيقيا يحمل هذين الحكمين، ولا نفترض أن كل قناع مستخرج يطابق نسخة الصورة التي يعرضها المساعد.
لماذا لا يكفي النظر إلى صفر البيانات؟
نعلن صراحة أن أ صالحة رغم قيمتها الصفرية في مثالنا. لذلك حذف كل خلية قيمتها صفر سيحذف أ المقبولة. أما ب فهي مستبعدة رغم أن قيمتها 8، فلا تكفي قاعدة قبول القيم غير الصفرية للبيانات أيضا.
هذا لا يضع اصطلاح nodata عاما. إذا وصلت صورة أخرى بلا تعريف لغيابها، نقرأ توثيقها وقناعها قبل تصنيف الصفر. لا نخترع صلاحية كل أصفارها من مثالنا، ولا ننقل حكم ب إلى أي خلية تحمل 8.
ماذا نحفظ مع التحويل؟
يميز الدليل dataset_mask الذي يخص الملف عن read_masks الذي يخص الحزم. [1]
نحفظ معرف النسخة والحزمة وترتيب المواضع واصطلاح القناعين، ونراجع أن أ المقبولة تبقى مقبولة وأن ب المستبعدة تبقى مستبعدة بعد تغيير التمثيل. إذا تغيرت الحزمة أو محاذاة الشبكة، فلا يكفي قلب True و False لاستعادة التطابق.
لم نشغل Rasterio أو نصحح قيما أو نقس أداء نموذج. غرض الملخص أن يحفظ قرار كل موضع ومعنى تمثيله، ويترك دقة المصدر وملاءمة الخلايا للمهمة أسئلة تحتاج أدلتها.
المصادر ومتابعة القراءة
- Rasterio1.4.4 Nodata Masks (يفتح في نافذة جديدة)rasterio.readthedocs.io
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
