পয়েন্ট ক্লাউডে প্রোফাইল ম্যাচিং


14

এর জন্য অভিন্ন র্যান্ডম ফাংশন ব্যবহার করে একটি পয়েন্ট ক্লাউড তৈরি করা হয় (x,y,z)। নিম্নলিখিত চিত্রটিতে প্রদর্শিত হিসাবে, একটি সমতল ছেদকারী প্লেন ( প্রোফাইল ) অনুসন্ধান করা হচ্ছে যে সেরা (যদিও সঠিকটি না হলেও) একটি লক্ষ্য প্রোফাইল অর্থাৎ বাম-নীচের কোণায় দেওয়া হিসাবে মিলছে। সুতরাং প্রশ্নটি হ'ল:

1- কিভাবে দেওয়া এমন মিল খুঁজে target 2D point mapমাধ্যমে point cloudনিম্নলিখিত নোট / অবস্থার বিবেচনায়?
২- তারপরে স্থানাঙ্ক / অভিযোজন / মিলের ডিগ্রি ইত্যাদি কী কী?

দ্রষ্টব্য 1: আগ্রহের প্রোফাইলটি অক্ষ এবং বরাবর যে কোনও ঘূর্ণনের সাথে যে কোনও জায়গায় হতে পারে এবং এটির অবস্থান এবং দিকনির্দেশের উপর নির্ভর করে বিভিন্ন আকারে যেমন একটি ত্রিভুজ, আয়তক্ষেত্র, চতুর্ভুজ ইত্যাদিও হতে পারে। নিম্নলিখিত প্রদর্শনীতে কেবল একটি সাধারণ আয়তক্ষেত্র দেখানো হয়।

দ্রষ্টব্য 2: একটি সহনশীলতার মানটিকে প্রোফাইল থেকে পয়েন্টের দূরত্ব হিসাবে বিবেচনা করা যেতে পারে। নিচের চিত্র এই প্রকট একটি সহনশীলতা অনুমান 0.01বার ক্ষুদ্রতম মাত্রা (~1)যাতে tol=0.01। সুতরাং আমরা যদি প্রোফাইলে তদন্তাধীন প্লেনের বাকী সমস্ত পয়েন্টগুলি অপসারণ করি এবং প্রজেক্টটি প্রজেক্ট করি তবে আমরা লক্ষ্য প্রোফাইলের সাথে এর সাদৃশ্যটি পরীক্ষা করতে সক্ষম হব।

নোট 3: পয়েন্ট প্যাটার্ন স্বীকৃতি সম্পর্কিত একটি সম্পর্কিত বিষয় পাওয়া যাবে ।

এখানে চিত্র বর্ণনা লিখুন


@ ডেভেলপার অফ টপিক তবে আপনি এই প্লটগুলি তৈরি করতে কোন সফটওয়্যার ব্যবহার করছেন?
স্পেসি

1
@ মোহাম্মদ আমি আমার গবেষণাগুলি করতে এবং গ্রাফগুলি তৈরি করতে Python+ ব্যবহার করিMatPlotLib
বিকাশকারী

@ ডেভেলপার ফ্যান্টাস্টিক - এটি পাইথনের মাধ্যমেই হয়েছে তবে তারা 'পাইথন শেল আলা মতলব' বলতে কী বোঝায়?
স্পেসি

পয়েন্ট মেঘ কিভাবে সংরক্ষণ করা হয়? প্রতিটি পয়েন্টের কেন্দ্রের জন্য স্থানাঙ্কের একটি সেট হিসাবে বা পয়েন্টগুলির চারদিকে স্থানাঙ্কগুলিতে শূন্য-অমূল্যযুক্ত একটি ভলিউম্যাট্রিক ডেটাসেট হিসাবে?
এন্ডোলিথ

@endolith সমস্ত পয়েন্টের সাথে সম্পর্কিত রয়েছে স্থানাঙ্ক P:{x,y,z}। তারা প্রকৃতপক্ষে মাত্রাবিহীন পয়েন্ট। কিছুটা সান্নিধ্যের সাথে তবে তারা 3 ডি অ্যারে হিসাবে এক-পিক্সেল মাত্রায় আলাদা হতে পারে। তারা স্থানাঙ্কের উপর অন্যান্য বৈশিষ্ট্যও (যেমন ওজন ইত্যাদি) অন্তর্ভুক্ত করতে পারে।
বিকাশকারী

উত্তর:


4

এটি সর্বদা প্রচুর গণনা প্রয়োজন, বিশেষত যদি আপনি 2000 পয়েন্ট হিসাবে প্রসেস করতে চান। আমি নিশ্চিত যে এই ধরণের প্যাটার্ন-ম্যাচিংয়ের জন্য ইতিমধ্যে উচ্চ-অনুকূলিত সমাধান রয়েছে তবে এগুলি খুঁজে বের করার জন্য আপনাকে এটি কী বলা হয়েছে তা খুঁজে বের করতে হবে।

যেহেতু আপনি একটি চিত্রের পরিবর্তে একটি পয়েন্ট ক্লাউড (স্পার্স ডেটা) সম্পর্কে কথা বলছেন, তাই আমার ক্রস-সম্পর্ক সম্পর্কিত পদ্ধতিটি সত্যিই প্রয়োগ হয় না (এবং এটি গণনার দিক থেকে আরও খারাপ হবে)। আরএএনএসএসি এর মতো কিছু সম্ভবত একটি ম্যাচটি দ্রুত খুঁজে পেয়েছে তবে আমি এ সম্পর্কে খুব বেশি জানি না।

একটি সমাধানে আমার প্রচেষ্টা:

অনুমিতি:

  • আপনি কেবল একটি আলগা বা "সম্ভবত সঠিক" ম্যাচ নয়, সেরা ম্যাচটি সন্ধান করতে চান
  • পরিমাপ বা গণনায় শব্দের কারণে ম্যাচে কিছুটা ত্রুটি থাকবে
  • সোর্স পয়েন্টগুলি হ'ল কোপলনার
  • সমস্ত উত্সের পয়েন্টগুলি লক্ষ্যমাত্রায় উপস্থিত থাকতে হবে (= কোনও মিল নেই) সম্পূর্ণ প্রোফাইলের জন্য কোনও মিল নয়)

সুতরাং আপনার জিনিসগুলি অযোগ্য ঘোষণা করে এবং সংখ্যার সময় হ্রাস করে প্রচুর শর্টকাট নিতে সক্ষম হওয়া উচিত। সংক্ষেপে:

  1. উত্স থেকে তিনটি পয়েন্ট বাছাই
  2. লক্ষ্য বিন্দুগুলির মাধ্যমে অনুসন্ধান করুন, একই আকারের সাথে 3 পয়েন্টের সেটগুলি সন্ধান করুন
  3. যখন 3 পয়েন্টের একটি ম্যাচ পাওয়া যায়, তখন তারা যে বিমানটি খুব কাছের ম্যাচ কিনা তা দেখার জন্য তারা যে বিমানটিকে সংজ্ঞায়িত করেছেন তাদের অন্যান্য পয়েন্টগুলি পরীক্ষা করুন
  4. যদি সমস্ত পয়েন্টের একাধিক মিল খুঁজে পাওয়া যায়, তবে 3 ডি দূরত্বের ত্রুটির ক্ষুদ্রতম যোগফলের সাথে একটি চয়ন করুন

আরো বিস্তারিত:

pick a point from the source for testing s1 = (x1, y1)
Find nearest point in source s2 = (x2, y2)
d12 = (x1-x2)^2 + (y1-y2)^2
Find second nearest point in source s3 = (x3, y3)
d13 = (x1-x3)^2 + (y1-y3)^2
d23 = (x2-x3)^2 + (y2-y3)^2

for all (x,y,z) test points t1 in target:
    # imagine s1 and t1 are coincident
    for all other points t2 in target:
        if distance from test point > d12:    
            break out of loop and try another t2 point
        if distance ≈ d12:
            # imagine source is now rotated so that s1 and s2 are collinear with t1 and t2
            for all other points t3 in target:
                if distance from t1 > d13 or from t2 > d23:
                    break and try another t3
                if distance from t1 ≈ d13 and from t2 ≈ d23:
                    # Now you've found matching triangles in source and target
                    # align source so that s1, s2, s3 are coplanar with t1, t2, t3
                    project all source points onto this target plane 
                    for all other points in source:
                        find nearest point in target
                        measure distance from source point to target point
                        if it's not within a threshold:
                            break and try a new t3
                        else:
                            sum errors of all matched points for this configuration (defined by t1, t2, t3)

যে কোনও কনফিগারেশনে অন্যান্য পয়েন্টগুলির জন্য সর্বনিম্ন স্কোয়ার ত্রুটি রয়েছে সেরা ম্যাচ

যেহেতু আমরা 3 নিকটতম প্রতিবেশী পরীক্ষা পয়েন্টের সাথে কাজ করছি, লক্ষ্য পয়েন্টগুলি কিছু ব্যাসার্ধের মধ্যে আছে কিনা তা পরীক্ষা করে সহজ করা যায়। উদাহরণস্বরূপ, (0, 0) থেকে 1 এর ব্যাসার্ধের সন্ধান করা হলে, আমরা কিছুটা গতি বাড়ানোর জন্য, আসল ইউক্যালিডিয়ান দূরত্ব গণনা না করে x1 - x2 এর ভিত্তিতে (2, 0) অযোগ্য ঘোষণা করতে পারি। এটি ধরে নিয়েছে যে বিয়োগটি গুণনের চেয়ে দ্রুত। আছে আরো নির্বিচারে সংশোধন ব্যাসার্ধ উপর ভিত্তি করে অপ্টিমাইজ করা অনুসন্ধানসমূহ , অত্যধিক।

function is_closer_than(x1, y1, z1, x2, y2, z2, distance):
    if abs(x1 - x2) or abs(y1 - y2) or abs(z1 - z2) > distance:
        return False
    return (x1 - x2)^2 + (y1 - y2)^2 + (z1 - z2)^2 > distance^2 # sqrt is slow

=(এক্স1-এক্স2)2+ +(Y1-Y2)2+ +(z- র1-z- র2)2

(20002)

আসলে, যেহেতু আপনার যেকোন উপায়েই এই সমস্তগুলি গণনা করতে হবে, আপনি মিল খুঁজে পান কিনা এবং যেহেতু আপনি কেবলমাত্র এই পদক্ষেপের জন্য নিকটতম প্রতিবেশীদের সম্পর্কে যত্নশীল, যদি আপনার স্মৃতি থাকে তবে একটি অনুকূলিত অ্যালগরিদম ব্যবহার করে এই মানগুলি প্রাক-গণনা করা ভাল probably । একটি মত কিছু Delaunay বা Pitteway ট্রায়াঙ্গুলেশন , যেখানে লক্ষ্য প্রতিটি বিন্দু তার নিকটতম প্রতিবেশীদের সাথে সংযুক্ত আছে। এটি একটি টেবিলের মধ্যে সংরক্ষণ করুন, তারপরে লক্ষ্য ত্রিভুজগুলির মধ্যে একটিতে উত্স ত্রিভুজটি ফিট করার চেষ্টা করার সময় প্রতিটি পয়েন্টের জন্য সেগুলি সন্ধান করুন।

এতে প্রচুর গণনা জড়িত রয়েছে, তবে এটি তুলনামূলক দ্রুত হওয়া উচিত কারণ এটি কেবলমাত্র ডেটাগুলিতে অপারেটিং হয়, যা অপ্রয়োজনীয়, ভলিউমেট্রিক তথ্যের ক্রস-সম্পর্ক সম্পর্কিত যেমন প্রচুর অর্থহীন শূন্যকে একসাথে গুটিয়ে ফেলার পরিবর্তে জড়িত। আপনি যদি বিন্দুগুলির কেন্দ্রগুলি প্রথমে খুঁজে পান এবং সেগুলি স্থানাঙ্কের সেট হিসাবে সঞ্চয় করেন তবে এই একই ধারণাটি 2 ডি কেসের জন্য কাজ করবে।


1
আপনার উত্তরের প্রথম অংশটি হ'ল বিন্দু মেঘের মাধ্যমে সম্ভাব্য সমস্ত প্লেনের কাছাকাছি অবস্থিত কাছাকাছি পয়েন্টগুলি (একটি চৌম্বককে সম্মানের সাথে গণনা করা) একটি ব্রুট-ফোর্স পদ্ধতি। এটি অত্যন্ত গণনামূলক নিবিড় উদাহরণস্বরূপ, কেবলমাত্র 2000 পয়েন্টের জন্য 2,662,668,000,000 (সূত্র) দূরত্বের গণনার প্রয়োজন হবে!
বিকাশকারী

@ ডেভেলপার: হ্যাঁ, এটি প্রচুর হিসাব নিতে চলেছে, বিশেষত যদি আপনার কয়েক হাজার পয়েন্ট থাকে। হ্যাঁ, 2000 পয়েন্টের জন্য, যদি আপনি কোনও প্লেন না পান তবে আপনি 2,658,673,998,000 গণনা করে শেষ করবেন। সম্ভবত আপনি প্লেনগুলি সন্ধান করতে পারেন, যদিও, এটি সময় হ্রাস করবে কারণ এটি পর্যাপ্ত পয়েন্ট পাওয়া মাত্র এটি বন্ধ হয়ে যায়। তবে যাইহোক, আমি এটি সম্পর্কে ভাবছিলাম এবং সম্ভবত আরও ভাল ধারণা আছে, এবং আমি উত্তরটি পরিবর্তন করব।
এন্ডোলিথ

1
আপনি একেবারে সঠিকভাবে পয়েন্ট পেয়েছেন। কেবল যুক্ত করার জন্য যে থামার মানদণ্ডগুলি উপযুক্ত বিমান খুঁজে পাওয়ার পরেও প্রয়োগ করতে পারে না যদিও এটির চেয়ে আরও ভাল ম্যাচ হতে পারে, তাই সমস্ত সম্ভাব্য বিমানগুলি পরীক্ষা করা দরকার। আমি ইতিমধ্যে এই ধারণাটি বাস্তবায়ন করেছি এবং পিসির সাথে অভিজ্ঞতা অর্জন করা অসম্ভব হতে চলেছে এমন পয়েন্টগুলির Fortranচেয়ে বেশি সংখ্যার জন্য এমনকি 500এটির সাহায্যেও পেয়েছি ।
বিকাশকারী

2

আমি আরএনএসএসি পাশের বিকল্প সমাধানে @ মিরর 2 চিত্রের বিবরণ যুক্ত করব, আপনি আইসিপি অ্যালগরিদম (পুনরাবৃত্তির নিকটতম বিন্দু) বিবেচনা করতে পারেন, একটি বিবরণ এখানে পাওয়া যাবে !

আমি মনে করি এই আইসিপি ব্যবহারের পরবর্তী চ্যালেঞ্জটি হ'ল আপনার নিজস্ব ব্যয় কার্যকারিতা এবং 3 ডি ক্লাউড পয়েন্টের ডেটা সম্পর্কিত শ্রেনী বিমানের প্রারম্ভিক পোজ। কিছু ব্যবহারিক পদ্ধতি হ'ল মিথ্যা মিনিমাতে রূপান্তর এড়াতে পুনরাবৃত্তির সময় ডেটাতে কিছু এলোমেলো শব্দের প্রবর্তন করা। এটি হিউরিস্টিক অংশটি অনুমান করে আপনার নকশা করা দরকার to

হালনাগাদ:

সরলীকৃত ফর্মের পদক্ষেপগুলি হ'ল:

  1. প্রতিটি ইনপুট পয়েন্টের জন্য নিকটতম পয়েন্টটি সন্ধান করুন।
  2. লক্ষ্যে ইনপুট থেকে রূপান্তরটি গণনা করুন এবং তারপরে ট্রান্সফর্মটি ব্যবহার করে ইনপুট পয়েন্টগুলি সরান।
  3. সাদৃশ্য ফাংশনটি গণনা করুন (উদাহরণস্বরূপ প্রতিটি ইনপুট পয়েন্ট এর সংশ্লিষ্ট জোড় টার্গেট পয়েন্টের জন্য দূরত্ব)।
  4. থামার অবস্থাটি পরীক্ষা করুন।

পদক্ষেপটি 1-4 টি ইটারেট করুন।

এখানে উপলব্ধ গ্রন্থাগার রয়েছে যা আপনি এখানে বিবেচনা করতে পারেন ! (আমি এটি এখনও চেষ্টা করি নি), নিবন্ধকরণ অংশে একটি বিভাগ রয়েছে (অন্যান্য পদ্ধতি সহ)।


লিঙ্ক এবং পরামর্শের জন্য ধন্যবাদ। এই জাতীয় দরকারী ধারণা সর্বদা আমাদের শিখা গবেষক হিসাবে জিনিসটি আরও দ্রুত শিখতে সহায়তা করে। আমি সবসময় আরও ব্যাখ্যা প্রশংসা করি।
বিকাশকারী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.