21 สิงหาคม 2553

คลาสวาบจากสีเหลี่ยมด้านไม่เท่า ไปยังสีเหลี่ยมด้านไม่เท่า Nemin c++ warping class

คลาสวาบจากสีเหลี่ยมด้านไม่เท่า ไปยังสีเหลี่ยมด้านไม่เท่า Nemin c++ warping class
เขียนขึ้นมาจากหลัก Inferring Projective Mappings
ในหนังสือ Fundamentals of Texture Mapping and Image Warping
อ่านเรื่องการ Warp ได้เพื่อจะได้เข้าใจมากขึ้น
ในที่นี้คือการเขียนโค้ดด้วยภาษา C++ หลังจากที่มี
เวอร์ชั่น Matlab ไปแล้ว
ตัวอย่างการเรียกใช้งาน

        /* source quadrilateral
         */
        int u0, u1, u2, u3, v0, v1, v2, v3;
        u0 = 7;
        v0 = 171;
        u1 = 294;
        v1 = 168;
        u2 = 307;
        v2 = 2;
        u3 = 1;
        v3 = 2;

        /* destination quadrilateral
         */
        int x0, x1, x2, x3, y0, y1, y2, y3;
        x0 = 10;
        y0 = 190;
        x1 = 310;
        y1 = 190;
        x2 = 310;
        y2 = 10;
        x3 = 10;
        y3 = 10;
       
        /* Set Warp parameter
         * for making transformation matrix
         */
        CWarp tr(u0, u1, u2, u3, v0, v1, v2, v3, x0, x1, x2, x3, y0, y1, y2, y3);
       
        /* warping point (u0,v0) in source quadrilateral
         * to point(x,y) in destination quadrilateral
         */
        int x,y;
        tr.warp(u0, v0, &x, &y);

ประสิทธิภาพการ Warp ใกล้เคียงกับเวอร์ชัน Matlab แต่ทำงานได้ไวกว่ามาก
Capture 

ใครสนใจดาวน์โหลดไปทดสอบกันได้ครับ

ไม่มีความคิดเห็น: