আয়তক্ষেত্রে চতুর্ভুজকে কীভাবে আনপোজ করবেন?


10

tl; dr: প্রজেক্টিভ জ্যামিতিতে ম্যাথ সমস্যা: কেউ কীভাবে 4x4 ক্যামেরা ম্যাট্রিক্স খুঁজে পেতে পারে যা নীচে চিত্রিত হিসাবে একটি প্রক্ষেপণ দেয় যেমন A, B, C, D পয়েন্টগুলি ইউনিট বাক্সের প্রান্তে কোথাও রয়েছে (যেমন ওপেনজিএল নর্মালাইজড ডিভাইস) স্থানাঙ্ক) এবং ইউনিট বাক্সের কোণগুলি রে EA, EB, ইসি, ED বরাবর কোথাও যুক্তিসঙ্গত হয়?

(এটি সম্ভবত একটি হোমোগ্রাফি, একটি স্বচ্ছলতা এবং / অথবা একটি প্রবন্ধের বিশেষ ক্ষেত্রে হতে পারে termin পরিভাষার সাথে পরিচিত নয়))


বিবরণাদি

ভিউপোর্টের মধ্যে একটি চতুর্ভুজ ABCD দেওয়া, আমি মনে করি একটি অনন্য (?) রূপান্তর আছে যা এটিকে আবার আয়তক্ষেত্রে মানচিত্র করে। নীচের চিত্রটিতে যেমন দেখা গেছে: ভিউপোর্টে চতুর্ভুজ ABCD একটি শারীরিক 'উইন্ডো' হিসাবে কাজ করে, এবং আমরা যদি এটি আবার একটি আয়তক্ষেত্রে মানচিত্র করি তবে এটি বিকৃত প্রদর্শিত হবে।

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

(ডান দিকের বাক্সটি এনডিসির প্রতিনিধিত্ব করে, যা আমি পরে আলোচনা করব)

লক্ষ্যটি হ'ল দ্রুত ডানদিকে চিত্রটি পাওয়া obtain আমরা চিত্রটি পেতে প্রতিটি পয়েন্টে রেট্রেস করতে পারি (যা আমি করেছি) তবে আমি ওপেনজিএল বা অন্যান্য প্রজেক্টিভ কৌশলগুলি ব্যবহার করতে পছন্দ করব কারণ আমি মিশ্রণ, আদিম ইত্যাদিগুলির মতো সুবিধা গ্রহণ করতে চেয়েছিলাম wanted

প্রথম প্রচেষ্টা

আমি বিশ্বাস করি যে আমি 3x4 ক্যামেরা ম্যাট্রিক্স সন্ধানের সমস্যার সমাধান করতে পারি যা 3-1 -মাত্রিক সমজাতীয় স্থানাঙ্ককে 3-স্পেসে (বাম দিকে) তৈরি করে এবং এটি 2-1 মাত্রিক সমজাতীয় স্থানাঙ্কগুলিতে 2-স্পেসে প্রজেক্ট করে (চালু) অধিকার). ক্যামেরা ম্যাট্রিক্সের অজানা এন্ট্রিগুলির জন্য সমীকরণের একটি সিস্টেম পাওয়ার জন্য প্রত্যক্ষ রৈখিক রূপান্তর ব্যবহার করে এটি সমাধান করা যায় এবং একক মানের পচন ব্যবহার করে সিস্টেমটি সমাধান করা যায়Ba=0a(SVD)। আমি ভেক্টরগুলি EA, EB, ইসি, ED (যেখানে E আপনার শারীরিক চক্ষু বা বিশ্ব-স্থানের ক্যামেরা) সেখানে পূর্ব চিত্রের পয়েন্ট হিসাবে এবং (0,0), (1,0), (1) , 1), (0,1) বা পোস্ট-ইমেজের পয়েন্ট হিসাবে কিছু এবং প্রতিটি জোড় পয়েন্ট এসভিডিতে প্লাগ করতে কয়েকটি রৈখিক সমীকরণ দেবে। ফলস্বরূপ ম্যাট্রিক্স EA -> (0,0) ইত্যাদির মানচিত্র তৈরি করবে (ধরে নিচ্ছে স্বাধীনতার পর্যাপ্ত পরিমাণ রয়েছে অর্থাত্ যদি সমাধানটি অনন্য হয়, যা সম্পর্কে আমি নিশ্চিত নই, দেখুন নোট [এ] দেখুন।)

তবে আমার চাগ্রিনের কাছে এটি ওপেনজিএল কীভাবে কাজ করে তা নয়। ওপেনজিএল 3 ডি থেকে 2 ডি 3x4 ম্যাট্রিক্সের সাথে সরাসরি প্রজেক্ট করে না। ওপেনজিএলকে "নরমালাইজড ডিভাইস কোঅর্ডিনেটস" (এনডিসি) প্রয়োজন, যা ত্রিমাত্রিক পয়েন্ট। এনডিসিতে প্রজেক্ট করার পরে, (-1, -1, -1,1) থেকে (1,1,1,1) 'ইউনিট' বাক্সে সমস্ত কিছু অঙ্কিত হয়; বাইরের সবকিছু ক্লিপড (যেহেতু আমরা সমজাতীয় স্থানাঙ্কের সাথে কাজ করছি: যে কোনও বিন্দু (x, y, z, w) কেবল তখনই অন স্ক্রিনে উপস্থিত হবে তবেই (x / w, y / w, z / w এর প্রথম তিনটি স্থানাঙ্ক হবে , 1) ইউনিট বাক্সের মধ্যে -1 থেকে 1))

সুতরাং প্রশ্নটি হয়ে ওঠে: এমন কোনও যুক্তিসঙ্গত রূপান্তর আছে যা সমজাতীয় স্থানাঙ্কগুলিতে কিছু অদ্ভুত চেহারার কিউবাইডকে মানচিত্র করে (বিশেষত বাম দিকে আঁকা কিউবয়েড, এবিসিডি (সম্মুখ পয়েন্টগুলি) এবং এবিবিসিডি'র সাথে (পিছনের পয়েন্টগুলি, লুকানো) সামনের পয়েন্টগুলির পিছনে)) ইউনিট কিউবে, যেমন 4x4 ম্যাট্রিক্স ব্যবহার করে? কিভাবে এটি করতে পারে?

আমি কি চেষ্টা করেছি

আমি আরও শক্তিশালী কিছু চেষ্টা করেছি: আমি ABCD এবং A'B'C'D কে নিয়মিত পিরামিডাল হতাশার (যেমন গ্লোব হতাশা) এর মতো দেখতে তৈরি করেছি (যেমন এই অনুমানের সেটআপে, বাম দিকের চিত্রটি কেবল একটি কালো আয়তক্ষেত্রকে সুপারপোজ করে থাকবে এটি, চতুর্ভুজ নয়) এবং তারপরে অভিযুক্ত 4x4 ম্যাট্রিক্সের সমাধান করার জন্য ডিএলটি / ডাইরেক্ট লিনিয়ার রূপান্তর ব্যবহার করে। তবে আমি যখন এটি চেষ্টা করেছি, সেখানে স্বাধীনতার পর্যাপ্ত ডিগ্রি বলে মনে হয় নি ... ফলস্বরূপ 4x4 ম্যাট্রিক্স প্রতিটি ইনপুট ভেক্টরকে প্রতিটি আউটপুট ভেক্টরে মানচিত্র দেয় না। এ, বি, সি, ডি, এ '(প্রাক-রূপান্তরকারী এবং পোস্ট-ট্রান্সফর্ম ভেক্টরগুলির 5 জোড়া) ব্যবহার করার সময়, আমি / প্রায় / ফলাফল পেতে চাই আমি পাই ... ভেক্টরগুলি সঠিকভাবে ম্যাপ করা হয়েছে, তবে উদাহরণস্বরূপ বি', সি ', ডি' (-1, -1,1,1) এর পরিবর্তে (3,3,1,1) এ ম্যাপিং করছে এবং ওপেনজিএল দ্বারা বিচ্ছিন্ন হয়ে গেছে। যদি আমি ষষ্ঠ পয়েন্ট যুক্ত করার চেষ্টা করি (প্রকল্পে 4x4 ম্যাট্রিক্সের জন্য 6 জোড়া পয়েন্ট), আমার সমাধানটি অবনমিত (শূন্য, ইনফিনাইট) বলে মনে হচ্ছে। আমি এখানে কত ডিগ্রি স্বাধীনতার সাথে কাজ করছি এবং আমরা কি জানি এবং ভালোবাসি যে 4x4 ম্যাট্রিক্স স্বাভাবিক 4vectors (3 + 1-মাত্রিক একজাতীয়-সমন্বিত ভেক্টর) ম্যাপিংয়ের মাধ্যমে সম্ভব?

এলোমেলো ছোটখাটো চিন্তাভাবনা

আমি অনুমান করছি যে 4x4 ম্যাট্রিক্সের সাথে কোনও যথেচ্ছ কিউবয়েডের কোনও মানবাধিকারকৃত ঘনক্ষেত্রের মানচিত্র তৈরি করা সম্ভব নয়, যদিও আমি বিভ্রান্ত হয়ে পড়েছিলাম কারণ আমি ভেবেছিলাম যে 2 ডি তে কোনও উত্তল চতুর্ভুজের মতো কোনও ম্যাট্রিক্সের মতো কোনও উত্তল চতুর্ভুজের মানচিত্র তৈরি করা সম্ভব হয়েছিল thought , বলুন, ফটোশপ? ... কি এটি প্রজেক্টিভ ট্রান্সফর্মের মাধ্যমে করা যায় না? এবং কীভাবে এটি 3 ডি তে সাধারণীকরণ হয়? ...... এছাড়াও 4x4 ম্যাট্রিক্স সন্ধানের ব্যর্থ প্রয়াস পেয়েও লিনিয়ার বীজগণিত বলে যে NXN ম্যাট্রিক্সকে সর্বোত্তম ক্ষেত্রে N টার্গেট পয়েন্টগুলিতে N লাইনারি স্বতন্ত্র পয়েন্টগুলির চেয়ে বেশি মানচিত্রের আশা করা উচিত নয়, তবে আমি অনুভব করি যে একরকম একজাতীয় স্থানাঙ্কগুলি এটিকে প্রতারণা করে কারণ এখানে কিছু গোপন বন্ধনী চলছে? আমি মনে করি না?

আর একটি সমাধান?

আমি অনুমান করি যে কেউ নিম্নলিখিত কুরুচিপূর্ণ কাজটিও করতে পারে, যেখানে আপনি একটি সাধারণ হতাশ ক্যামেরা প্রজেকশন ম্যাট্রিক্স ব্যবহার করেন, কোণগুলির সাথে সম্পর্কিত 2 ডি পয়েন্টগুলি সন্ধান করেন, তবে 2 ডি প্রেক্ষিতটি বিকৃত হোমোগ্রাফি সম্পাদন করুন, তবে পিক্সেলগুলি রেন্ডার হওয়ার পরে যদি এটি ঘটে থাকে (উদাহরণস্বরূপ ফটোশপ) এর পরে রেজুলেশন নিয়ে সমস্যা হবে ... অনুমানের সাথে এনডিসি-স্পেসের মধ্যে এক্সওয়াই-প্লেনে এই রূপান্তরটি সম্পাদনের জন্য কোনও ম্যাট্রিক্স বের করতে পারে, তারপরে এটিকে সাধারণ হতাশ-ভিত্তিক ম্যাট্রিক্সটি রচনা করুন?

(দ্রষ্টব্য [একটি]: স্বাধীনতার ডিগ্রি: এবিসিডি আরও একটি বাতুলের উপর অভিনয় করা প্রজেক্টিভ ট্রান্সফর্মেশন এর পোস্ট-ইমেজ হতে বাধ্য হতে পারে, যদি এটি প্রয়োজন হয় ... এটি বামদিকে কালো আয়তক্ষেত্র হতে পারে) একটি চিত্র ফ্রেম ক্লিপআর্ট মডেল প্রজেক্টের ফলাফল)


1
আপনি যদি কর্নার পিনের জন্য গুগল করেন তবে আপনি এর কয়েকটি প্রয়োগ পেতে পারেন
42-

উত্তর:


1

আমি মনে করি যে সমাধানটি চারটি পয়েন্টকে সঠিকভাবে রূপান্তরিত করে এমন প্রজেটিভ ট্রান্সফর্মের সন্ধান করছে।

অর্থাত

Y'=পি×এক্স'

যেখানে এবংএক্স'=[এক্স0,এক্স1,1]Y=[Y0'Y2',Y1'Y2']

পি 9 এন্ট্রি সঙ্গে একটি 3x3 ম্যাট্রিক্স হয়। চূড়ান্ত স্বাভাবিককরণের কারণে এটি স্কেলিংয়ের ক্ষেত্রে অনন্য, 8 ডিগ্রি স্বাধীনতা রেখে, যা চিঠিপত্রের দ্বারা দেওয়া 8 টি সমীকরণ (প্রতি পয়েন্ট জুড়ে 2) দ্বারা অনন্যভাবে নির্ধারিত হয়।

এখন আপনি এটি করতে বীজগণিত ব্যবহার করতে পারেন, বা কেবল ওপেনসিভি এর getPerspectiveTransform:) ব্যবহার করতে পারেন ।

ধারণাটির সাথে পরিচিত হওয়ার জন্য উইকিপিডিয়ায় সমজাতীয় স্থানাঙ্কগুলিও পরীক্ষা করে দেখুন ।


ধন্যবাদ! (আমি কিছুক্ষণ আগে এটি সমাধান করেছি এবং ঠিক এখনই সমাধানটি পোস্ট করেছি যখন আমি আপনার মন্তব্য দেখেছি))
নিনজেকেকো

0

আমি ডাইরেক্ট লিনিয়ার ট্রান্সফর্মেশন প্রয়োগ করে নিজের প্রশ্নটি সমাধান করেছি । উইকিপিডিয়ায় উদাহরণ বিভাগটি ছিল আমার ব্যবহারের কেস।

সমীকরণগুলি পেতে ম্যাট্রিক্সে প্লাগ করুন (উদাঃ [x1 x2 x3 x4; x5 x6 x7 x8; x9 x10 x11 x12]) আপনার পছন্দসই কম্পিউটার বীজগণিত সিস্টেমে সেজেম্যাথ, তারপরে চিত্রিত হিসাবে প্রয়োজনীয় ম্যাট্রিক্স সমীকরণটি সমাধান করুন, আপনার কোডে ভেরিয়েবলের ক্ষেত্রে সমাধানগুলি অনুলিপি করুন এবং বিন্যাস সামঞ্জস্য করুন।

তারপরে যে কোনও একটি নির্দিষ্ট ক্ষেত্রে উপযুক্ত হিসাবে উপযুক্ত হিসাবে স্কেলিং বা উপেক্ষা করে সমাধানের সমাধান সমাধান করতে পারে (যেমন ব্যবহারের ক্ষেত্রে যথাযথ হিসাবে নরমালাইজড ডিভাইস কোঅর্ডিনেটস ম্যাট্রিক্সের গভীরতা / জেড সমন্বয়কে উপেক্ষা করুন)।

আপনার নিজের ভাষায় একটি এসভিডি পচন ফাংশন বা গ্রন্থাগার প্রয়োজন হবে।

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