হোমোগ্রাফি ম্যাট্রিক্স থেকে ক্যামেরা পোজ গণনা করবেন কীভাবে?


13

বলুন আমি কেবল একটি ক্যালিব্রেট ক্যামেরা ব্যবহার করি। এই ক্যামেরা থেকে, আমি ছবি A এবং B. আমি A এবং B মধ্যে Homography জানেন পেতে মাধ্যমে নির্ণিত OpenCV এর ) findHomography (

আমি ইমেজ এ এর ​​পোজ (রোটেশন ম্যাট্রিক্স আর এবং অনুবাদ ভেক্টর টি) জানি, এবং আমার বি বি এর ভঙ্গি দরকার। একবার আমি এটি পেয়ে গেলে, আমি মনে করি আমি নীচের চিত্রগুলির প্রতিটি পোজ গণনা করতে সক্ষম হব।

আপনি কি বি এর ভঙ্গি গণনা একটি বাস্তবায়ন জানেন? আমি ওয়েবে বেশ কয়েকটি নিবন্ধ পেয়েছি, তবে আমি সহজেই প্রয়োগযোগ্য সমাধান খুঁজে পেলাম না ...


আমি নিশ্চিত না যে আপনার কোডটি কীভাবে ব্যবহার করতে হয় তা আমি বুঝতে পেরেছি। আমি হোমোগ্রাফিটি পুনরুদ্ধার করতে ওপেনসিভি ব্যবহার করি তবে আমি যখন সেই হোমোগ্রাফিটি অ্যালগরিদমের মাধ্যমে প্রেরণ করি তখন এটি সর্বদা এটি ফিরিয়ে দেয়। ক্যামেরাপোজ [1, 0, 0, 0; 0, 1, 0, 0; 0, 0, 1, 0]
LeRoss

উত্তর:


8

এমনকি যদি আমার উত্তরটি আপনার জন্য খুব দেরিতে আসে, তবে অন্য লোকেরাও এটি দরকারী বলে মনে করছেন। হোমোগ্রাফি থেকে আমার একটি ওপেনসিভি পোজের কোড রয়েছে। আমি সত্যিই দরকারী ওয়েবসাইটটি ইউক্যালিডেন্সস্পেসে এই পদ্ধতিটি পেয়েছি ।

void cameraPoseFromHomography(const Mat& H, Mat& pose)
{
    pose = Mat::eye(3, 4, CV_64FC1); //3x4 matrix
    float norm1 = (float)norm(H.col(0)); 
    float norm2 = (float)norm(H.col(1));
    float tnorm = (norm1 + norm2) / 2.0f;

    Mat v1 = H.col(0);
    Mat v2 = pose.col(0);

    cv::normalize(v1, v2); // Normalize the rotation

    v1 = H.col(1);
    v2 = pose.col(1);

    cv::normalize(v1, v2);

    v1 = pose.col(0);
    v2 = pose.col(1);

    Mat v3 = v1.cross(v2);  //Computes the cross-product of v1 and v2
    Mat c2 = pose.col(2);
    v3.copyTo(c2);      

    pose.col(3) = H.col(2) / tnorm; //vector t [R|t]
}

////


আমি আমার কোডটিতে আপনার ফাংশনটি ব্যবহার করেছি Pপোজ ম্যাট্রিক্সকে এইভাবে ব্যবহার করে গণনা করা সর্বদা [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 0]। আপনার কোন ব্যাখ্যা আছে?
মুহাম্মাদ আলী আসান

আপনি কি এ পোজ ব্যবহার করছেন? দেখে মনে হচ্ছে আপনি কেবল এইচ
গুগ

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


0

আপনি ওপেনসিভি 3.0+ এ প্রয়োগ করা হোমোগ্রাফি পচন পদ্ধতি ব্যবহার করতে পারেন

decomposeHomographyMat

  • ওপেনকভির ফাংশনটি সম্ভাব্য ঘূর্ণন, ক্যামেরা নরমাল এবং অনুবাদ ম্যাট্রিক্সের সেট দেয়।
  • আপনি যখন প্রথম চিত্রটি ক্যাপচার করেছিলেন তখন ক্যামেরা নরমাল ক্যামেরাটির সাথে ক্যামেরা নরমাল তুলনা করে তাদের মধ্যে সঠিক সেট নির্বাচন করতে হবে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.