5.2. الإحداثيات والمناطق¶
تعمل معالجة الصور على البكسلات، ولكي تعمل خوارزمية على بكسل ما يجب أن تشير إليه بإحداثياته. وللعمل على مستطيل منها، ينطبق الأمر نفسه -- إذ يجب وصف المستطيل بطريقة تتفق عليها الخوارزمية وشيفرة التطبيق. والاصطلاح الذي تستخدمه وحدة الصور للإحداثيات والمستطيلات بسيط ومباشر، مع تفصيلة واحدة قد تربك القراء المعتادين على الاصطلاح الرياضي بدلاً من اصطلاح رسومات الحاسوب، ومن الجدير توضيحها صراحةً منذ البداية.
5.2.1. شبكة البكسلات¶
يقع البكسل (0, 0) في الركن العلوي الأيسر من الصورة. يمتد المحور x نحو اليمين، فكلما زاد x زاد البعد نحو اليمين. ويمتد المحور y نحو الأسفل، فكلما زاد y زاد البعد نزولاً في الصورة. تحتوي صورة بعرض في ارتفاع على بكسلات عند إحداثيات صحيحة من (0, 0) حتى (width - 1, height - 1)؛ ولا يوجد بكسل عند (width, 0) أو (0, height) -- فهذه المواضع هي الحافتان اليمنى والسفلى، خطوة واحدة بعد آخر بكسل فعلي في كل اتجاه.
المحور y المتجه نحو الأسفل هو التفصيلة المذكورة آنفاً. فالقارئ المعتاد على هندسة ورق الرسم البياني يتوقع أن يعني y الأكبر موضعاً أعلى؛ وهنا ينعكس هذا الحدس تماماً. والسبب في هذا الانعكاس هو أن المستشعرات الرقمية والشاشات الرقمية تعمل كلاهما انطلاقاً من الركن العلوي الأيسر وتسير نحو اليمين عبر كل صف، من الأعلى إلى الأسفل، وترتيب البكسلات في الذاكرة بالترتيب نفسه يجعل العلاقة بين "الموضع i في المخزن المؤقت" و"الصف r والعمود c من الصورة" أبسط ما يمكن من العمليات الحسابية -- إذ إن الموضع i للبكسل (x, y) هو ببساطة y * width + x. اتفقت كل مكتبات الصور على هذا الترتيب منذ عقود للسبب نفسه، والثمن هو تعديل ذهني بسيط واحد عند التعامل مع الصور لأول مرة.
نظام إحداثيات الصورة: نقطة الأصل في الركن العلوي الأيسر، يمتد x نحو اليمين، وy نحو الأسفل. تُسمّى المنطقة المستطيلة داخل الصورة بركنها العلوي الأيسر (x, y) وأبعادها (w, h).¶
5.2.2. المستطيلات¶
تهتم معظم العمليات على الصورة بـمستطيل من البكسلات أكثر من اهتمامها ببكسل واحد -- منطقة للبحث فيها، أو منطقة لنسخها، أو إطار داخل إطار لحساب الإحصاءات عليه. وتختار صيغة تسمية المستطيل أبسط امتداد ممكن لاصطلاح البكسل المفرد: إعطاء إحداثيات الركن العلوي الأيسر متبوعةً بأبعاد المستطيل، مُجمّعةً في رباعية (x, y, w, h). وتقع البكسلات داخل المستطيل عند الأعمدة من x حتى x + w - 1 والصفوف من y حتى y + h - 1.
التفصيلة الجديرة بالتوضيح صراحةً هنا هي أن w وh هما حجمان، وليسا إحداثيي الركن السفلي الأيمن. فالمستطيل (10, 20, 4, 3) يغطي الأعمدة 10 و11 و12 و13 والصفوف 20 و21 و22 -- اثني عشر بكسلاً في المجموع -- وليس منطقة تمتد من (10, 20) إلى (4, 3). والاصطلاح موحّد عبر الوحدة بأكملها، لذا فإن الزلات تتوقف بمجرد استيعابه، لكنه يربك الناس في المرة الأولى.
تظهر صيغة (x, y, w, h) في ثلاثة مواضع تبدو متمايزة لكنها تشترك في الاصطلاح نفسه. الأول هو عندما تصف الصورة مساحتها الخاصة: المستطيل الذي يغطي الصورة بأكملها هو (0, 0, width, height). والثاني هو عندما تُرجع طريقة كشف نتيجةً مع مربع إحاطة -- blob أو rect أو apriltag -- ويُبلَّغ عن المربع بصيغة (x, y, w, h). والثالث هو عندما يجب توجيه طريقة للعمل على منطقة فرعية من الصورة بدلاً من الإطار بأكمله؛ إذ يأخذ الوسيط المُسمّى roi الذي يحدد نطاق العملية الرباعية نفسها.
إن التقاط مربع إحاطة من طريقة ما وإسقاطه في الوسيط roi للطريقة التالية هو واحد من أكثر الأنماط شيوعاً في معالجة الصور. فمربع الإحاطة الناتج عن كشف أولي خشن يضيّق منطقة البحث لكشف ثانٍ أدق، والمفردات الموحّدة عبر نتائج الكشف ووسائط الطرق هي ما يجعل هذا النمط بهذه السهولة -- صيغة رباعية واحدة، تُستخدم بالطريقة نفسها على جانبي التسليم.
5.2.3. العناوين الصحيحة، والمراكز الكسرية¶
عناوين البكسلات نفسها أعداد صحيحة. فالبكسل إما يكون أو لا يكون عند عمود وصف صحيحين معينين، والسؤال عمّا يوجد عند الإحداثي (40.5, 30.7) ليس سؤالاً مُصاغاً بصورة صحيحة -- إذ لا يوجد بكسل قائم عند ذلك الموضع بالضبط. ومع ذلك، فإن حفنة من الكميات التي تشتقها وحدة الصور من مواضع البكسلات هي كميات كسرية، ومن الجدير فهم السبب حتى لا يربك هذا التمييز التطبيق لاحقاً.
أكثر الحالات شيوعاً هي المركز -- مركز كتلة المنطقة. فبالنسبة لمنطقة متصلة من البكسلات، يكون المركز بصيغة الفاصلة العائمة هو متوسط مواضع البكسلات الأعضاء، مرجّحاً بكثافتها. فمنطقة تمتد بكسلاتها عبر عمودين سيكون مركزها x مساوياً، مثلاً، لـ 41.6 -- وهو موضع حقيقي تصفه العين بأنه "منتصف تلك المنطقة" رغم أنه لا يوجد بكسل فعلي قائم عند ذلك الموضع x بالضبط. وتحمل كائنات نتائج الكشف كلتا الصيغتين بوصفهما خاصيتين للقراءة فقط: زوج صحيح (cx / cy، مفيد عند إعادة تغذية الموضع إلى شيء يريد إحداثيات بكسل صحيحة) وزوج بفاصلة عائمة (cxf / cyf، مفيد عندما يدخل الموضع في حلقة تحكم تستفيد من دقة دون البكسل).
الحالة الأخرى هي الإزاحة بين إطارين مقيسةً في المجال الترددي. فالتقنيات التي تحلل المحتوى الطيفي للصورة بدلاً من بكسلاتها مباشرةً يمكنها تمييز إزاحات أدق من بكسل واحد، وتُبلّغ عن تلك الإزاحات على هيئة قيم (dx, dy) بفاصلة عائمة.
القاعدة العامة: عناوين البكسلات أعداد صحيحة؛ أما المواضع والإزاحات التي تخرج من خوارزمية فيمكن أن تكون أعداداً عائمة. وتقبل طرق الرسم أيّاً من الصيغتين وتقرّب الأعداد العائمة نزولاً إلى أقرب بكسل صحيح عندما يجب أن تستقر النتيجة على الشبكة.
5.2.4. الديكارتية والقطبية¶
النظام الموصوف حتى الآن ديكارتي: يُسمّى كل بكسل بإزاحته الأفقية والرأسية عن نقطة الأصل. وهذا هو النظام الذي تُخزَّن به البايتات -- إذ يقابل البكسل i في المخزن المؤقت البكسلَ عند العمود i % width والصف i // width، سائراً عبر الصفوف من الأعلى -- وهو النظام الذي تعمل به كل طريقة افتراضياً.
هناك تمثيل ثانٍ يستحق المعرفة لأن بعض الخوارزميات تعمل به على نحو أفضل بكثير. الإحداثيات القطبية تُسمّي كل بكسل بـبُعده عن نقطة مركز مختارة والزاوية بينه وبين اتجاه مرجعي. لم تتحرك بكسلات الصورة -- فالبايتات لا تزال في المخزن المؤقت نفسه ذي الترتيب الصفّي -- لكن مخطط العنونة قد تحوّل من "كم البعد نحو اليمين وكم البعد نحو الأسفل" إلى "كم البعد عن المركز وعند أي زاوية حوله".
النقطة P نفسها، مُسمّاة بطريقتين: ديكارتياً (x, y) من نقطة الأصل في الركن العلوي الأيسر، وقطبياً (r, theta) من مركز مختار.¶
لماذا نتكبد عناء التحويل؟ بسبب متطابقتين تحوّلان عمليات البحث الصعبة إلى عمليات سهلة.
في الإحداثيات القطبية، يكون تدوير الصورة حول المركز المختار هو العملية نفسها مثل إزاحة بكسلاتها على طول محور الزاوية -- اتجاه x في الصورة المعاد إسقاطها. فالنسخة المُدوّرة هي النسخة الأصلية مُزاحةً يساراً أو يميناً في الصيغة القطبية.
في المتغير اللوغاريتمي-القطبي -- حيث يستخدم محور المسافة مقياساً لوغاريتمياً ويبقى محور الزاوية خطياً -- يكون تحجيم الصورة حول المركز المختار هو العملية نفسها مثل إزاحة بكسلاتها على طول محور المسافة -- اتجاه y. فالنسخة المُحجَّمة هي النسخة الأصلية مُزاحةً للأعلى أو للأسفل في الصيغة اللوغاريتمية-القطبية.
لذا فإن الخوارزمية التي يجب أن تتعرف على نمط معروف تحت التدوير أو التحجيم يمكنها إجراء بحثها في الفضاء القطبي، حيث يتحول كلا التحويلين إلى إزاحات عادية. والبحث عن الإزاحات أرخص بكثير من البحث عن عمليات التدوير والتحجيم، وإعادة الإسقاط القطبية هي ما يتيح هذا الاستبدال.
لا تحل الإحداثيات القطبية محل الإحداثيات الديكارتية في تخزين البكسلات؛ إذ تقيم البايتات دائماً على الشبكة الديكارتية. توفر الوحدة زوجاً من الطرق التي تعيد إسقاط صورة من الصيغة الديكارتية إلى الصيغة القطبية عند الطلب، فتقوم الخوارزمية التي تحتاج إلى الإحداثيات القطبية بعملها، ثم إما تُعاد النتيجة بالإسقاط إلى الخارج أو يُستخدم القياس في الفضاء القطبي مباشرةً. وتلك الآلية هي السبب الوحيد لظهور الإحداثيات القطبية في أي مكان على سطح الوحدة.
مع الإحداثيات الديكارتية لتسمية البكسلات المفردة، والرباعية (x, y, w, h) لتسمية مستطيلاتها، والإحداثيات القطبية المتاحة عندما تستفيد منها خوارزمية ما، يكون لدى التطبيق مفردات كاملة لتسمية أين يقع شيء ما في الصورة. أما ما هو مُخزَّن فعلياً عند أي من تلك المواضع فهو الطبقة التالية من الأساس.