رؤية الحاسب

تكوين الصورة

كما يعرف الغالب، فإن ترميز كل شيء في الحاسب -كالحروف والأرقام- يكون عن طريق نظام العد الثنائي (مثال: 011001). ولكن كيف تحفظ الصورة في الحاسب؟

تقسم الصورة التي نراها على الشاشة إلى وحدات صغيرة جداً تسمى البكسل. كل بكسل يعرض لوناً معيناً يتم ترميزه عن طريق الأرقام كما سيفصل بعد قليل. فبهذه الطريقة يتم ترميز الصورة كاملة عن طريق مصفوفة من الأرقام التي تدل على قيمة اللون لكل بكسل. طبعاً كما ذكرت سابقاً فإن الأرقام بدورها يتم ترميزها عن طريق نظام العد الثنائي، ففي النهاية كل شيء في الحاسب يحفظ عن طريق الأصفار والآحاد. المثال التالي يوضح كيف ترمّز صورة ذات تدرجات رمادية (بدون ألوان):

في هذا المثال، العمق اللوني (color depth) للصورة يساوي 8 بت (bit)، ممّا يعني أن كل بكسل يمكن أن يحمل قيمة بين 0 إلى 255، ما يمثل 256 تدرج رمادي (2 أس 8). وكلّما زاد العمق اللوني، كلّما زاد عدد الألوان (أو التدرجات) المتاحة. الصورة التالية تبين الفرق بين الأعماق اللّونية: 8 بت و 4 بت و 2 بت.

في المثال السابق كانت الصورة ذات تدرجات رمادية. يمكن تمثيل الصور ذات الألوان عن طريق ترميز كل لون على حدة. توجد العديد من طرق ترميز الألوان وأشهرها RGB حيث تحفظ قيم الألوان الأحمر والأخضر والأزرق كل على حدة. من الطرق الأخرى لترميز الألوان: (CMYK) و (HCI) و (Luv)، كل طريقة لها خصائصها المميزة ودواعي استعمالها.

دقة الصورة (resolution) تشير إلى إمكانية عرض التفاصيل الدقيقة في الصورة، وكلما زادت الدقة زادت إمكانية عرض تفاصيل أدق. هناك العديد من الطرق لقياس دقة الصورة، أذكر هنا طريقتين هما الأكثر استخداماً:

1- عدد البكسلات في الصورة، وهذا يتم إما عن طريق حساب ارتفاع الصورة في العرض (مثل: 512×512 بكسل) أو المجموع الكلّي للبكسلات. الارتفاع×العرض غالباً يستخدم في الحاسب إمّا في المعالجة أو العرض، أمّا مجموع البكسلات فغالباً ما يستخدم في الكاميرات (مثال: 3.1 ميجابكسل = 1536×2048 بكسل). لا تعد هذه الطريقة معياراً جيداً لدقة الصورة إذا استخدمت لوحدها.
2- الدقة المكانية (spatial resolution)، وهي مقياس لمقدار القرب بين الخطوط التي يمكن تمييزها عن بعض في الصورة. وضوح الصورة يقاس عن طريق الدقة المكانية وليس عن طريق عدد البكسلات. ومن التعريفات الأكثر انتشاراً للدقة المكانية: أكبر عدد من الخطوط التي يمكن تمييزها في وحدة قياس معينة [1]. من الأمثلة على ذلك: دقة الشاشة غالباً ما تكون بين 72 إلى 100 بكسل لكل إنش (pixel per inch – ppi)، وفي مجال الطباعة غالباً ما يستخدم مصطلح نقطة لكل إنش (dots per inch – dpi).

بالإضافة إلى هذين التعريفين للدقة، هناك العديد من التعريفات الأخرى، مثل دقة الحسّاس الذي التقطت به الصورة وعمق الألوان كما شرحته سابقاً وبعض التعريفات المخصّصة لمجالات معينة كالاستشعار عن بعد (remote sensing) والفضاء وبعض الصور الطبيّة.

ضغط الصورة قبل حفظها من الأمور المهمة بسبب الحاجة لتوفير المساحة على القرص الصلب وكذلك لتسهيل وتسريع نقل الصور من خلال الشبكات والإنترنت. مهمة ضغط الصورة هي التعرف على التفاصيل غير المهمة أو المتكررة لتقليص حجم الصورة في الذاكرة. هناك أسلوبان لضغط الصور: مضيّع للتفاصيل (lossy) ومحافظ على التفاصيل (lossless). في الأسلوب الأول يتم ضياع بعض التفاصيل خلال عملية الضغط بينما يتم في الأسلوب الثاني ضغط الصورة قدر الإمكان بما لا يضيع أي تفصيل في الصورة.

توجد العديد من صيغ الملفات التي يمكن حفظ الصورة من خلالها، كل صيغة لها ما يميّزها، كطريقة ضغط الصورة وعمق الألوان وغيرها. فمثلاً صيغة jpeg تستخدم أسلوب الضغط المضيع للتفاصيل. أمّا صيغة gif تستخدم أسلوب ضغط غير مضيع للتفاصيل ولكن العمق المسموح للألوان هو 8 بت فقط. صيغة bmp لا تستخدم أي أسلوب ضغط، لهذا تجد أن حجم ملفاتها غالباً ما يكون كبيراً.

سأقوم بذكر بعض الأمثلة لتوضيح المفاهيم السابقة. المثال المستخدم هو صورة لشبه الجزيرة العربية حفظها الله. الصورة معروضة في الشكل التالي بالألوان والتدرجات الرمادية، بالإضافة إلى بعض خصائص الصورة.

الصورة تم حفظها بصيغة jpeg وهي -كما ذكر سابقاً- تضغط الصورة بشكل يضيع التفاصيل كما سأوضح لاحقاً. حجم الصورة هو 2286×2504 بكسل ما يساوي قرابة الـ 5.7 ميجابكسل بمصطلح الكاميرات الرقمية. كما أن الدقة المكانية للصورة تساوي 96 نقطة لكل إنش.

فيما يلي مربع مكون من 12×12 بكسل تم أخذه من الزاوية اليسرى العلوية من الصورة الرمادية. تم تكبير هذا المربع حتى تتضح البكسلات فيها، وهي المربعات الصغيرة، وعلى يمين المربع تم عرض القيم الفعلية للبكسلات. كلما اقترب العدد للصفر فهو يتجه للسواد، الأسود الداكن = 0 والأبيض الناصع = 255.

كما تم شرحه سابقاً، فإن العمق اللوني يمثل العدد المتاح من الألوان الذي يمكن استخدامه. الصورة الأصلية عمقها اللوني 24 بت مما يتيح استخدام 16777216 لون. وفيما يلي أمثلة لأعماق لونية مختلفة:

حيث أن 8 بت تتيح استخدام 256 لون، و 4 بت 16 لون، و 2 بت 4 ألوان, أما 1 بت فيستخدم لونين فقط. يلاحظ أنه على الرغم من أن 8 بت تعرض 256 لوناً، إلّا أنه لا يوجد فارق شاسع للعين المجرّدة مقارنة بـ 24 بت!

فيما يلي مثال لفصل قنوات الألوان من الصورة، ويلاحظ كيف يسهم كل لون في حفظ التفاصيل بشكل مختلف.

تحدثت عن طريقتين لقياس دقة الصورة، وأن أحدهما يعتمد على قياس عدد البكسلات في الصورة. فيما يلي مثال على أثر تقليل دقة الصورة أكثر من مرة (مع ملاحظة أن الصور تم تصغيرها لملائمة العرض على الشاشة).

المثال الأخير لبيان تأثير الضغط المضيع للتفاصيل على الصورة. تم ضغط الصورة إلى 10% من حجمها الأصلى (أقصد بالحجم المساحة على القرص الصلب، عدد البكسلات لا يزال نفسه).

آمل أن تكون قد اتضحت المفاهيم الواردة في هذا الدرس، وإذا كان هناك أمور غير واضحة فبإمكانك السؤال في التعليقات.


[1] Digital Image Processing, 3rd Edition, R. Gonzalez and R. Woods

اظهر المزيد

فارس القنيعير

‏‏‏‏‏‏‏‏‏‏‏‏‏مختص بالذكاء الاصطناعي، تعلم الآلة ورؤية الحاسب. مهتم بتحليل ومعالجة البيانات بشكل عام. ضمن خبراء جووجل في تعلم الآلة (ML GDE).

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى