سؤال

لقد تم العمل على تصور مشروع 2-الأبعاد المستمر البيانات.انها نوع من الشيء الذي يمكن أن تستخدم الدراسة بيانات الارتفاع أو درجة الحرارة أنماط على خريطة 2D.في جوهرها, انها حقا طريقة تسطيح 3-الأبعاد إلى قسمين-الأبعاد-plus-اللون.في حقل معين من الدراسة ، أنا لست في الواقع العامل مع الارتفاع الجغرافي البيانات, لكنه استعارة جيدة ، لذا سأبقى معها طوال هذا المنصب.

على أية حال, في هذه المرحلة, لدي "المستمر اللون" العارض الذي أنا مسرور جدا مع:

Continuous Color Renderer

التدرج هو معيار اللون عجلة ، حيث بكسل حمراء تشير إلى التنسيق مع قيم عالية و البنفسجي بكسل تشير إلى قيم منخفضة.

البيانات الأساسية هيكل يستخدم بعض ذكي جدا (إذا أنا لا أقول ذلك لنفسي) خوارزميات لتمكين تعسفا العميق التكبير في تفاصيل الخريطة.

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

لإعطائك فكرة عن ما أفكر فيه ، وهنا الفقراء-الرجل التنفيذ (أين العارض فقط يستخدم الأسود RGB القيمة كلما واجه بكسل التي يتقاطع كفاف خط):

Continuous Color with Ghetto Topo Lines

هناك العديد من المشاكل مع هذا النهج ، على الرغم من:

  • مجالات الرسم البياني مع المنحدر انحدارا النتيجة في أرق (و في كثير من الأحيان كسر) توبو خطوط.من الناحية المثالية, كل توبو الخطوط يجب أن تكون مستمرة.

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

لذلك أنا أبحث في ناقلات الرسم النهج من أجل الحصول على تلك لطيف الكمال 1 بكسل سميكة المنحنيات.الهيكل الأساسي الخوارزمية يجب أن تتضمن هذه الخطوات:

  1. في كل المنفصلة الارتفاع حيث كنت ترغب في رسم توبو خط العثور على مجموعة من الإحداثيات حيث الارتفاع في تنسيق جدا (تعطى التعسفي ابسيلون القيمة) إلى الارتفاع المطلوب.

  2. القضاء زائدة نقطة.على سبيل المثال ، إذا ثلاث نقاط في تماما-خط مستقيم ، ثم نقطة المركز هي زائدة لأنه يمكن القضاء عليها دون تغيير شكل منحنى.وبالمثل مع منحنيات بيزيه ، فمن الممكن في كثير من الأحيان إلى القضاء على cetain نقاط الربط عن طريق ضبط الموقف المجاورة نقاط التحكم.

  3. تجميع النقاط المتبقية في تسلسل بحيث كل قطعة بين نقطتين يقارب ارتفاع محايدة مسار ، و أن اثنين من قطاعات الخط من أي وقت مضى عبر مسارات.كل نقطة تسلسل إما إنشاء مضلع مغلق ، أو يجب أن تتقاطع المربع المحيط من التقديم المنطقة.

  4. لكل vertex, العثور على زوج من نقاط التحكم بحيث ينتج عن ذلك يسلك منحنى الحد الأدنى خطأ فيما يتعلق زائدة نقاط القضاء في الخطوة رقم 2.

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

ولكن حتى في ظل هذه القيود ، لا يزال يمكنني أن أفكر في عدة مختلفة الاستدلال من أجل العثور على خطوط:

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

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

  • مسح كامل مما يجعل المنطقة ، مع ارتفاع القياس في متفرق فترات منتظمة.لكل قياس ، واستخدامها القرب إلى ارتفاع عتبة كآلية أن تقرر ما إذا كان أو لا تأخذ محرف قياس جيرانها.باستخدام هذه التقنية سوف توفر ضمانات أفضل تغطية في جميع أنحاء التقديم المنطقة ، ولكن سيكون من الصعب تجميع الناتجة نقطة إلى المعقول من أجل بناء مسارات.

هكذا, هذه هي بعض من أفكاري...

قبل الغوص في عمق التنفيذ ، أردت أن أرى ما إذا كان أي شخص آخر على ستاكوفيرفلوو لديه تجربة مع هذا النوع من المشكلة ولا يمكن أن تكون مؤشرا على دقة وكفاءة التنفيذ.

تحرير:

انا مهتمة بصفة خاصة في "التدرج" اقتراح ellisbben.و البيانات الأساسية هيكل (تجاهل بعض من تحسين الاستيفاء اختصارات) يمكن أن تكون ممثلة على النحو خلاصة مجموعة من 2D جاوس الوظائف ، وهو تماما للاختلاف.

أعتقد أنني سوف تحتاج إلى بنية بيانات تمثيل ثلاثي الأبعاد المنحدر ، دالة لحساب هذا المنحدر ناقلات في التعسفية نقطة.من على قمة رأسي, أنا لا أعرف كيف نفعل ذلك (على الرغم من أنه يبدو أنه يجب أن تكون سهلة), ولكن إذا كان لديك رابط شرح الرياضيات, سأكون ممتنا!

تحديث:

بفضل المساهمات الممتازة من قبل ellisbben و العظيم لا يمكن الآن حساب محيط الزاوية لأي التعسفي نقطة في الميدان.الرسم الحقيقي توبو خطوط قريبا!

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

استمتع!

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

alt text

alt text

هنا متعة حقيقة:على الأيمن من هذه الأداءات ، سترى مجموعة من الغريب الخطوط الكنتورية في الكمال الأفقي والرأسي الزوايا.هذه هي القطع الأثرية من عملية الاستيفاء ، الذي يستخدم شبكة من interpolators للحد من عدد من الحسابات (بنسبة 500%) اللازمة لأداء الأساسية التقديم العمليات.كل هذه غريبة الخطوط الكنتورية تحدث على الحدود بين اثنين interpolator خلايا الشبكة.

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


تحديث مرة أخرى:

Aaaaaaaand ، أخيرة تساهل قبل أن أذهب إلى النوم ، وهنا زوج آخر من الاداءات واحد في المدرسة القديمة "المستمر اللون" على نمط واحد مع 20 ، 000 التدرج العينات.في هذه المجموعة من الاداءات, لقد أزلت النقطة الحمراء على نقطة عينات لأنه داع يبعثر الصورة.

هنا يمكنك أن ترى حقا تلك الاستيفاء القطع الأثرية التي أشرت إليها في وقت سابق ، وذلك بفضل الشبكة-هيكل interpolator جمع.وأود أن أؤكد أن تلك القطع الأثرية سوف تكون غير مرئية تماما على النهائي كفاف التقديم (منذ الفرق في الحجم بين أي اثنين المتاخمة interpolator الخلايا أقل من عمق بت الصورة المقدمة).

بالعافية!!

alt text

alt text

هل كانت مفيدة؟

المحلول

على التدرج هو رياضي المشغل التي قد تساعدك.

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

فكرتك عن بدء من أعلى نقطة المعقول ، ولكن قد يغيب الميزات إذا كان هناك أكثر من واحد القصوى المحلية.

أقترح

  1. اختيار قيم الارتفاع الذي سوف رسم خطوط
  2. إنشاء مجموعة من النقاط على غرامة متباعدة بانتظام الشبكة ، ثم المشي كل نقطة في خطوات صغيرة في اتجاه الانحدار نحو أقرب الارتفاع الذي تريد رسم خط
  3. إنشاء المنحنيات من خلال تكثيف كل نقطة عمودي على التدرج;إزالة الزائدة من النقاط عن طريق قتل نقطة عند منحنى آخر يأتي قريبة جدا من ذلك-- ولكن لتجنب تدمير مركز الرملية مثل الأرقام ، قد تحتاج إلى التحقق من الزاوية بين المنحى متجه عمودي على التدرج لكل من النقاط.(عندما أقول المنحى ، أعني تأكد من أن الزاوية بين التدرج و عمودي قيمة حساب هو دائما 90 درجة في نفس الاتجاه.)

نصائح أخرى

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

على توبو منحنيات تريد رسم هي isosurfaces من العددية الميدانية أكثر من 2 الأبعاد.بالنسبة isosurfaces في 3 أبعاد ، هناك يسيرون مكعبات الخوارزمية.

ردا على تعليقك على @إريكسون والإجابة نقطة عن حساب التدرج وظيفة الخاص بك.بدلا من احتساب المشتقات من 300 المدى وظيفة هل يمكن أن تفعل الرقمية التمايز على النحو التالي.

تعطى نقطة [x,y] في الصورة يمكنك حساب التدرج (اتجاه أشد الكريم)

g={  ( f(x+dx,y)-f(x-dx,y) )/(2*dx), 
  {  ( f(x,y+dy)-f(x,y-dy) )/(2*dy) 

حيث dx و دى يمكن أن يكون التباعد في الشبكة الخاصة بك.خط كفاف تشغيل عمودي على التدرج.لذا للحصول على كفاف الاتجاه ، ج ، يمكننا أن تتضاعف ز=[v,w] من المصفوفة A=[0 -1, 1 0] إعطاء

c = [-w,v]

كنت أريد شيئا من هذا القبيل نفسي ولكن لم نجد ناقلات القائم على الحل.

النقطية على أساس الحل ليس بهذا السوء ، رغم ذلك ، وخاصة إذا كان لديك البيانات النقطية القائم.إذا كانت البيانات الخاصة بك المستندة إلى متجه أيضا (وبعبارة أخرى ، يجب نموذج 3D من surface), يجب أن تكون قادرة على القيام ببعض الرياضيات الحقيقية أن تجد تقاطع المنحنيات الأفقية الطائرات على ارتفاعات متفاوتة.

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

ربما بعض الأمثلة سوف تساعد.لنفترض أن التيار بكسل في "الارتفاع" من 12 قدم الجار في ارتفاع 8 متر و الخطوط الكنتورية هي كل 10 قدم.ثم هناك خط كفاف نصف الطريق بين ؛ الطلاء الحالي بكسل مع خط كفاف اللون في 50 ٪ التعتيم.آخر بكسل في 11 القدمين و قد جار في 6 أقدام.اللون الحالي بكسل في 80 ٪ التعتيم.

alpha = (contour - neighbor) / (current - neighbor)

للأسف ليس لدي مدونة مفيد و هناك قد يكون قليلا أكثر من ذلك (وأذكر غامضة تبحث في قطري الجيران أيضا ، وتعديل من قبل sqrt(2) / 2).آمل أن يكون هذا يكفي لإعطائك جوهر.

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

لحسن الحظ, جنو اوكتاف ، MATLAB استنساخ ، تطبيقات مختلفة كفاف التآمر وظائف.هل يمكن أن ننظر في ذلك رمز خوارزمية وتطبيق هذا يكاد يكون من المؤكد رياضيا الصوت.أو قد تكون قادرة على افراغ تجهيز اوكتاف.تحقق من الصفحة التواصل مع اللغات الأخرى لمعرفة ما إذا كان هذا سيكون أسهل.

الإفصاح:أنا لم تستخدم اوكتاف كثيرا ، و في الواقع لم يختبر هو كفاف التآمر.ولكن من تجربتي مع MATLAB, أستطيع أن أقول أنه سوف تعطيك كل شيء تقريبا كنت طالبا في فقط بضعة أسطر من التعليمات البرمجية ، شريطة الحصول على البيانات الخاصة بك في MATLAB.

أيضا, تهانينا على جعل جدا VanGough سقو slopefield المؤامرة.

أنا دائما التحقق من الأماكن مثل http://mathworld.wolfram.com قبل الذهاب إلى عميق في بلدي :)

ربما المنحنيات قسم المساعدة ؟ أو ربما الدخول على خرائط.

مقارنة ما لديك المقدمة مع العالم الحقيقي توبو خريطة - أنها تبدو متطابقة إلى لي!لن يغير شيئا...

كتابة البيانات كما HGT الملف (بسيط جدا الارتفاعات الرقمي تنسيق البيانات المستخدمة من قبل USGS) واستخدام مجاني و مفتوح المصدر gdal_contour أداة لخلق ملامح.أنه يعمل بشكل جيد جدا بالنسبة الأرضية والخرائط ، القيد أن نقاط البيانات يتم توقيع 16-بت الأرقام التي تناسبها الدنيوية مجموعة من المرتفعات في متر بشكل جيد جدا, ولكن قد لا يكون كافيا للحصول على البيانات الخاصة بك والتي أفترض أن لا تكون خريطة التضاريس الفعلية - على الرغم من أنك لا أذكر خرائط التضاريس.

أوصي CONREC النهج:

  • إنشاء سطر فارغ الجزء قائمة
  • تقسيم البيانات إلى الشبكة العادية الساحات
  • لكل شبكة ساحة تقسيم المربع إلى 4 مكون المثلثات:
    • لكل مثلث التعامل مع الحالات (أ إلى ي):
      • إذا كان جزء من خط يعبر واحدة من الحالات:
        • حساب النهاية
        • تخزين جزء من خط في القائمة
  • رسم كل جزء من خط في القطعة المستقيمة قائمة

إذا كانت خطوط خشنة جدا ، استخدام الشبكة أصغر.إذا كانت خطوط ناعمة بما فيه الكفاية و خوارزمية تستغرق وقتا طويلا ، استخدام شبكة أكبر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top