
عندما يلتقط معظم الأشخاص صورة ، فإنهم يحتاجون فقط إلى الضغط على زر الغالق الموجود في الكاميرا أو الهاتف ، وستظهر صورة جاهزة للعرض ، عادةً بتنسيق JPEG المعروف ، على الشاشة على الفور تقريبًا. ومع ذلك ، في بعض الحالات ، يلزم مزيد من التحكم في إنتاج JPEG بالذات. على سبيل المثال ، قد ترغب في زيادة أو تقليل نشاط وظيفة إزالة الضوضاء ، أو قد تشعر أن الألوان ليست صحيحة تمامًا.
ثم تأتي ملفات RAW للإنقاذ. في هذا السياق ، فإن الصورة الأولية هي نقل مباشر للبيانات الواردة من وحدات البكسل في مصفوفة الصورة ، ولم تخضع لمعالجة إضافية... عادةً ما تكون هذه الملفات بتنسيق صورة Bayer قياسي نسبيًا ، سميت باسم Bryce Bayer ، الذي اخترع هذه التقنية في عام 1974 أثناء العمل مع Kodak. تكمن الفكرة في منع معالج معالجة الصور المدمج (ISP) من تحويل صورة Bayer الخام إلى صورة قابلة للعرض ، ولكن القيام بذلك بنفسك باستخدام برنامج منفصل ، يُسمى عادةً محول RAW.

تسجل صورة Bayer لونًا واحدًا فقط لكل بكسل كما هو موضح. في
بعض الأحيان تتم مقارنة الصورة الأولية بتقنية التصوير الفوتوغرافي السلبية القديمة ، وعلى الرغم من أن العديد من الشركات المصنعة للكاميرات تستخدم تنسيقها الخاص ، فإن النوع الأكثر شيوعًا من ملفات RAW هو Digital Negative (أو DNG ) ، الذي وصفته Adobe في عام 2004. ويبقى السؤال - كيف تحصل على ملفات DNG من Raspberry Pi بحيث يمكن معالجتها باستخدام محول RAW المفضل لديك.
الحصول على صورة أولية من Raspberry Pi
سيكون العديد من القراء على دراية بتطبيق raspistill ، الذي يستقبل صور JPEG من الكاميرا. يحتوي Raspistill على الأمر -r الذي يلحق البيانات الأولية بنهاية ملف JPEG. سيستمر عارضو JPEG في عرض هذا الملف كالمعتاد ، متجاهلين عدد ميغا بايت من البيانات الأولية المرفقة في الخلف. يمكن الحصول على ملف JPEG + RAW باستخدام الأمر الموجود في الجهاز:
raspistill -r -o image.jpg
لسوء الحظ ، تنسيق JPEG + RAW هو فقط ما يخرج من الكاميرا ولا يدعمه محول RAW. لاستخدامه ، نحتاج إلى تحويله إلى تنسيق DNG.
PyDNG
تقوم هذه الأداة بتحويل ملف Raspberry Pi الأصلي JPEG + RAW إلى DNG. يمكن تنزيل PyDNG من github.com/schoolpost/PyDNG ، وهناك أيضًا إرشادات أكثر تفصيلاً هناك. باختصار ، نحتاج إلى اتباع الخطوات التالية:
git clone https://github.com/schoolpost/PyDNG
cd PyDNG
pip3 install src/. # PyDNG Python3
يمكن استخدام PyDNG كجزء من نصوص Python النصية الكبيرة ، أو تشغيلها بمفردها. بالاستمرار مع مثال raspistill ، يمكننا الدخول في سطر الإدخال:
python3 examples/utility.py image.jpg
يمكن معالجة ملف DNG الناتج باستخدام محولات RAW مختلفة. بعضها مجاني (على سبيل المثال ، RawTherapee أو dcraw ، على الرغم من أن الأخير لم يعد مطورًا أو مدعومًا) ، وهناك العديد من الخيارات التجارية المعروفة (Adobe Camera Raw أو Lightroom).
توازن اللون الأبيض ومصفوفات الألوان
تتمثل إحدى مشكلات التعامل مع ملفات RAW باستخدام Raspberry Pi في هذه المرحلة في الحصول على ألوان ذات معنى. قبل ذلك ، تم عرض الصور بانحياز أخضر ، حيث لم يتم إجراء موازنة للألوان ، وعادة ما يكون اللون الأخضر هو قناة الألوان الأكثر حساسية. لجعل الأمور أسوأ ، نظرًا لأن قيم RGB في الصورة الخام تعكس ببساطة حساسية وحدات البكسل المستشعر لأطوال موجية مختلفة ، فهي بداهة لا ترتبط بدقة مع الألوان التي نراها بأعيننا. هذا هو المكان الذي يكون فيه توازن اللون الأبيض ومصفوفات الألوان مفيدًا.
نحتاج إلى المضاعفات البيضاء الصحيحة لجعل الأجزاء المحايدة من المشهد تبدو محايدة. يمكننا أن نستخدم تخمينًا مستنيرًا عنهم ، موجودًا في ملف JPEG + RAW (أو يمكنك قياس قيمتك الخاصة في مكان ما في الصورة - على سبيل المثال ، على بطاقة رمادية). ثم يلزم وجود مصفوفات وجداول بحث لتحويل الألوان من الكاميرا إلى sRGB أو Adobe RGB.
النتائج
المحاولات السابقة لتحويل RAW والنتائج التي تم الحصول عليها بعد تطبيق الإصدار المحدث من PyDNG.
ملفات DCP
بالنسبة للأشخاص المطلعين على ملفات DNG ، فإننا نقدم روابط لملفات DCP (ملف تعريف الكاميرا DNG) مع ملف تعريف الكاميرا (بتنسيق ثنائي). جرب ملفات مختلفة ، نشجع المستخدمين على التجربة وإنشاء ملفاتهم الخاصة ونشر النتائج!
- ملف تعريف اللون الأساسي المدمج في PyDNG ، تظهر النتائج أعلاه. إنه صغير نسبيًا ويمكن عرضه كملف JSON .
- ملف تعريف أكبر محسّن مع جداول مرجعية لتقديم ألوان متوازنة.
- على غرار السابق ، ولكن مع بعض الإصلاحات لتحسين لون البشرة والسماء.
ومع ذلك ، فإن هذه الملفات لها العديد من الخصائص:
- تمت معايرتها لكاميرا Raspberry Pi عالية الجودة محددة ، وليست وحدة نمطية متوسطة.
- كانت مصادر الضوء هي التي في متناول أيدينا - على وجه الخصوص ، يبدو أن مصباح D65 ينتقل بشكل غير دقيق إلى حد ما.
- تعمل المعايرة فقط إذا كانت درجة حرارة اللون لا تختلف كثيرًا عن مصدري اللون المتضمنين في المعايرة - في حالتنا ، هذا هو النطاق من 2900 كلفن إلى 6000 كلفن.
لذلك ، لا يزال هناك مجال للتحسين. ومع ذلك ، فقد أظهرت الاختبارات التي أجريت على العديد من الوحدات أن هذه المعلمات تمثل خطوة مهمة إلى الأمام.
شكر وتقدير
Jack Hogan لمعايرة مصفوفة الألوان باستخدام DCamProf و Zsabe Nagi لإضافة ميزات جديدة إلى PyDNG.
مواد إضافية
- هناك العديد من الموارد التي تصف تحويل صورة Bayer الأولية إلى صورة RGB أو YUV قابلة للعرض. على سبيل المثال ، مقال في مدونة جاك .
- لفهم دور مصفوفات الألوان التي تلعبها في ملف DNG ، راجع مواصفاتها . على وجه الخصوص ، تم تناول هذا في الفصل 6.