أوكتري

اليسار: التقسيم المتكرر للمكعب إلى أجزاء ثمانية . اليمين: الشجرة الثمانية المقابلة.

الشجرة الثمانية هي بنية بيانات شجرية، حيث تحتوي كل عقدة داخلية على ثمانية أبناء بالضبط . تُستخدم الأشجار الثمانية غالبًا لتقسيم الفضاء ثلاثي الأبعاد عن طريق تقسيمه بشكل متكرر إلى ثمانية أجزاء ثمانية . تُعد الأشجار الثمانية نظيرًا ثلاثي الأبعاد للأشجار الرباعية . الكلمة مشتقة من " oct" (جذر يوناني يعني "ثمانية") + " tree" (شجرة ). تُستخدم الأشجار الثمانية بكثرة في الرسومات ثلاثية الأبعاد ومحركات ألعاب ثلاثية الأبعاد .

للتمثيل المكاني

يقسم كل عقدة في شجرة ثمانية الأجزاء الفضاء الذي تمثله إلى ثمانية أجزاء . في شجرة ثمانية الأجزاء النقطية (PR) (المماثلة لشجرة رباعية الأجزاء النقطية)، تخزن العقدة نقطة ثلاثية الأبعاد صريحة ، وهي "مركز" التقسيم لتلك العقدة؛ وتحدد هذه النقطة إحدى زوايا كل من الأجزاء الثمانية. أما في شجرة ثمانية الأجزاء المصفوفية (MX) (المماثلة لشجرة رباعية الأجزاء)، فإن نقطة التقسيم هي ضمنيًا مركز الفضاء الذي تمثله العقدة. يمكن أن تمثل العقدة الجذرية لشجرة ثمانية الأجزاء النقطية فضاءً لانهائيًا؛ بينما يجب أن تمثل العقدة الجذرية لشجرة ثمانية الأجزاء المصفوفية فضاءً محدودًا بحيث تكون المراكز الضمنية محددة جيدًا. تجدر الإشارة إلى أن أشجار ثمانية الأجزاء تختلف عن أشجار k -d : فأشجار k -d تنقسم على طول بُعد، بينما تنقسم أشجار ثمانية الأجزاء حول نقطة. كما أن أشجار k -d ثنائية دائمًا، وهو ما لا ينطبق على أشجار ثمانية الأجزاء. تقدم الأشجار متعددة الأبعاد [ 1 ] طريقة لتعميم كل من الأشجار k -d والأشجار الثمانية، من خلال السماح بتقسيم مجموعة فرعية من الأبعاد عند كل مستوى دقة.

تاريخ

استُخدم تقسيم مكاني مشابه لتقسيم الشجرة الثمانية في عام 1934، في نظرية ويتني للتغطية في الرياضيات. [ 2 ] وقد كان دونالد ميغر رائدًا في استخدام الأشجار الثمانية في رسومات الحاسوب ثلاثية الأبعاد ، كما وصف ذلك في تقرير صدر عام 1980 بعنوان "ترميز الشجرة الثمانية: تقنية جديدة لتمثيل ومعالجة وعرض الأجسام ثلاثية الأبعاد العشوائية بواسطة الحاسوب"، [ 3 ] والذي حصل بموجبه على براءة اختراع عام 1995 (بتاريخ أولوية 1984 ) بعنوان "توليد صور عالي السرعة للأجسام الصلبة المعقدة باستخدام ترميز الشجرة الثمانية". [ 4 ]

الاستخدامات الشائعة

تطبيق على تحديد كمية الألوان

تقوم خوارزمية تكميم الألوان باستخدام شجرة الأوكتري ، التي ابتكرها جيرفوتز وبورغاتوفر عام 1988، بتشفير بيانات ألوان الصورة على شكل شجرة أوكتري يصل عمقها إلى تسعة مستويات. تُستخدم أشجار الأوكتري لأن23=8{\displaystyle 2^{3}=8}يحتوي نظام RGB على ثلاثة مكونات لونية . يُحدد فهرس العقدة التي تتفرع منها الشجرة في المستوى الأعلى بصيغة تستخدم البتات الأكثر أهمية من مكونات اللون الأحمر والأخضر والأزرق، على سبيل المثال: 4r + 2g + b. يستخدم المستوى الأدنى التالي أهمية البت التالي، وهكذا. تُهمل البتات الأقل أهمية أحيانًا لتقليل حجم الشجرة.

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

تطبيق تجزئة النقاط

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

  • عندما تحتوي الخانة على عدد أقل من عدد معين من النقاط
  • عندما يصل الصندوق إلى الحد الأدنى من الحجم أو السعة بناءً على طول حوافه
  • عندما يصل التكرار إلى الحد الأقصى لعدد التقسيمات الفرعية
دالة [أعماق_الصناديق، آباء_الصناديق، زوايا_الصناديق، صناديق_النقاط] = OcTree ( النقاط )binDepths = [ 0 ] % تهيئة مصفوفة لأعماق الخانات باستخدام هذه الخانة الأساسية binParents = [ 0 ] % هذه الخانة الأساسية ليست فرعًا من خانات أخرى binCorners = [ min ( points ) max ( points )] % تُحيط بجميع النقاط في فضاء XYZ pointBins (:) = 1 % في البداية، يتم تعيين جميع النقاط لهذه الخانة الأولى divide ( 1 ) % بدء تقسيم هذه الخانة الأولىدالة القسمة ( رقم الصندوق )إذا استوفى هذا المربع أيًا من شروط الخروج، فلا تقم بتقسيمه أكثر. binPointCount = nnz ( pointBins == binNo ) binEdgeLengths = binCorners ( binNo , 1 : 3 ) - binCorners ( binNo , 4 : 6 ) binDepth = binDepths ( binNo ) exitConditionsMet = binPointCount < value || min ( binEdgeLengths ) < value || binDepth > value if exitConditionsMet return ; % إنهاء الدالة التكرارية endوإلا، قسّم هذا الصندوق إلى 8 صناديق فرعية جديدة بنقطة تقسيم جديدة. newDiv = ( binCorners ( binNo , 1 : 3 ) + binCorners ( binNo , 4 : 6 )) / 2 for i = 1 : 8 newBinNo = length ( binDepths ) + 1 binDepths ( newBinNo ) = binDepths ( binNo ) + 1 binParents ( newBinNo ) = binNo binCorners ( newBinNo ) = [ أحد أزواج newDiv الثمانية مع minCorner أو maxCorner ] oldBinMask = pointBins == binNo % احسب أي النقاط في pointBins == binNo تنتمي الآن إلى newBinNo pointBins ( newBinMask ) = newBinNo % قسّم هذا الصندوق الذي تم إنشاؤه حديثًا بشكل متكرر divide ( newBinNo ) end

مثال على تحديد كمية اللون

باستخدام قائمة الألوان الكاملة لصورة RGB ذات 24 بت كمدخل نقطي لتطبيق تحليل النقاط باستخدام شجرة الأوكتري الموضح أعلاه، يُظهر المثال التالي نتائج تكميم الألوان باستخدام شجرة الأوكتري. الصورة الأولى هي الأصلية (532818 لونًا مميزًا)، بينما الثانية هي الصورة المُكمّمة (184 لونًا مميزًا) باستخدام تحليل شجرة الأوكتري، حيث يُخصص لكل بكسل اللون الموجود في مركز خانة شجرة الأوكتري التي يقع فيها. بدلاً من ذلك، يمكن اختيار الألوان النهائية عند مركز جميع الألوان في كل خانة من خانات شجرة الأوكتري، إلا أن هذه العملية الحسابية الإضافية لا تُؤثر بشكل كبير على النتيجة المرئية. [ 10 ]

% قراءة الصورة الأصلية RGB Img = imread ( 'IMG_9980.CR2' ); % استخراج البكسلات كثلاثيات نقاط RGB pts = reshape ( Img , [], 3 ); % إنشاء كائن تجزئة OcTree باستخدام سعة خانة مستهدفة OT = OcTree ( pts , 'BinCapacity' , ceil (( size ( pts , 1 ) / 256 ) * 7 )); % إيجاد الخانات التي تمثل "عقدًا طرفية" في كائن الشجرة الثمانية leafs = find ( ~ ismember ( 1 : OT.BinCount , OT.BinParents ) & ... ismember ( 1 : OT.BinCount , OT.PointBins ) ); % إيجاد الموقع المركزي RGB لكل خانة طرفية binCents = mean ( reshape ( OT.BinBoundaries ( leafs , :) , [ ] , 3 , 2 ) , 3 ) ; % إنشاء صورة "مفهرسة" جديدة مع خريطة ألوان ImgIdx = zeros ( size ( Img , 1 ), size ( Img , 2 )); for i = 1 : length ( leafs ) pxNos = find ( OT . PointBins == leafs ( i )); ImgIdx ( pxNos ) = i ; end ImgMap = binCents / 255 ; % تحويل لون 8 بت إلى قيم RGB في MATLAB % عرض الصورة الأصلية ذات 532818 لونًا والصورة الناتجة ذات 184 لونًا figure subplot ( 1 , 2 , 1 ), imshow ( Img ) title ( sprintf ( 'Original %d color image' ,size ( unique ( pts , 'rows' ), 1 ))) subplot ( 1 , 2 , 2 ), imshow ( ImgIdx , ImgMap ) title ( sprintf ( 'Octree-quantized %d color image' , size ( ImgMap , 1 )))

انظر أيضاً

مراجع

  1. https://arxiv.org/abs/2508.06316
  2. ويتني، هاسلر (1934). "الامتدادات التحليلية للدوال المعرفة في مجموعات مغلقة" . معاملات الجمعية الرياضية الأمريكية . 36 (1). الجمعية الرياضية الأمريكية: 63-89 . doi : 10.2307/1989708 . JSTOR 1989708 . 
  3. ميغر، دونالد (أكتوبر 1980). "ترميز أوكتري: تقنية جديدة لتمثيل ومعالجة وعرض الأجسام ثلاثية الأبعاد العشوائية بواسطة الحاسوب". معهد رينسيلار للفنون التطبيقية (التقرير الفني IPL-TR-80-111).
  4. ميغر، دونالد. "توليد صور عالي السرعة للأجسام الصلبة المعقدة باستخدام ترميز الشجرة الثمانية" . مكتب براءات الاختراع والعلامات التجارية الأمريكي . تم الاطلاع عليه بتاريخ 20 سبتمبر 2012 .
  5. ديفيد ب. لوبك (2003). مستوى التفاصيل للرسومات ثلاثية الأبعاد . مورغان كوفمان. ISBN 978-1-55860-838-2.
  6. Elseberg, Jan, et al. " مقارنة استراتيجيات البحث عن أقرب جار وتطبيقاتها لتسجيل الأشكال بكفاءة ." مجلة هندسة البرمجيات للروبوتات 3.1 (2012): 2-12.
  7. أكينين-مولر، توماس؛ هاينز، إريك؛ هوفمان، ناتي (2018-08-06). العرض في الوقت الحقيقي، الطبعة الرابعة . مطبعة سي آر سي. رقم ISBN 978-1-351-81615-1.
  8. "هينينغ إيبرهاردت، فيسا كلومب، أوفه د. هانبيك، أشجار الكثافة لتقدير الحالة غير الخطية بكفاءة ، وقائع المؤتمر الدولي الثالث عشر حول دمج المعلومات، إدنبرة، المملكة المتحدة، يوليو 2010" (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 3 مارس 2016. تم الاطلاع عليه بتاريخ 23 سبتمبر 2010 .
  9. V. Drevelle, L. Jaulin and B. Zerr, Guaranteed Characterization of the explored Space of a Mobile Robot by using Subpavings , NOLCOS 2013.
  10. بلومبرج، دان س. "تكميم الألوان باستخدام الأشجار الثمانية." ، 4 سبتمبر 2008. تم الاطلاع عليه في 12 ديسمبر 2014.