tab*_*ber 4 opencv matrix perspective catransform3d ios
我想从OpenCV findHomography函数返回透视变换矩阵并将其转换(在C++或Objective-C中)到iOS' CATransform3D.我希望它们尽可能地准确地再现核心图形方面的"扭曲"效果.示例代码真的很感激!
来自iOS'CATransform3D.h:
/* Homogeneous three-dimensional transforms. */
struct CATransform3D
{
CGFloat m11, m12, m13, m14;
CGFloat m21, m22, m23, m24;
CGFloat m31, m32, m33, m34;
CGFloat m41, m42, m43, m44;
};
Run Code Online (Sandbox Code Playgroud)
类似的问题:
放弃
我从来没有试过这个,所以拿一粒盐.
CATRansform3D是一个4x4矩阵,它在3维均匀矢量(4x1)上运算,以产生相同类型的另一个矢量.我假设在渲染时,4x1向量描述的对象将每个元素除以第4个元素,而第3个元素仅用于确定哪些对象出现在其中.假设这是正确的......
推理
findHomography返回的3x3矩阵在2维均匀向量上运行.可以通过4个步骤来考虑该过程
您需要在4x4向量中复制此过程,其中我假设结果向量中的第3个元素对于您的目的而言毫无意义.
解
像这样构造你的矩阵(H是你的单应矩阵)
[H(0,0), H(0,1), 0, H(0,2),
H(1,0), H(1,1), 0, H(1,2),
0, 0, 1, 0
H(2,0), H(2,1), 0, H(2,2)]
Run Code Online (Sandbox Code Playgroud)
这显然满足1,2和3. 4因为均匀元素总是最后一个.这就是为什么"同质排",如果你不得不被撞到一行.第3行的1是让向量的z分量通过unmolested.
所有这些都是以行主要表示法(如openCV)完成的,以避免让人感到困惑.您可以查看Tommy的答案,了解转换为专业列的外观(基本上只是转置它).但请注意,目前Tommy和我不同意如何构建矩阵.
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |