如何用OpenCV生成domdomtransform

如何用OpenCV生成domdomtransform,opencv,random,homography,Opencv,Random,Homography,我试图生成可以用来变换平面物体图像的随机单应矩阵。opencv似乎有一个类“patchgenerator”。但我找不到这门课的详细资料。有些人说它只适用于仿射变换。有没有生成随机单应矩阵的方法?或者我可以直接使用一些OpenCV函数?很多Thx 通过将随机缩放、平移和旋转矩阵相乘,可以构建单应矩阵: H = T . S . R 旋转矩阵可通过使用例如欧拉角(三参数旋转)生成 转换矩阵是一个单位矩阵,其最后一列条目对应于每个维度中的点转换 最后,比例矩阵的对角线上的每个维度都有缩放项 最终的单应

我试图生成可以用来变换平面物体图像的随机单应矩阵。opencv似乎有一个类“patchgenerator”。但我找不到这门课的详细资料。有些人说它只适用于仿射变换。有没有生成随机单应矩阵的方法?或者我可以直接使用一些OpenCV函数?很多Thx

通过将随机缩放、平移和旋转矩阵相乘,可以构建单应矩阵:

H = T . S . R
旋转矩阵可通过使用例如欧拉角(三参数旋转)生成

转换矩阵是一个单位矩阵,其最后一列条目对应于每个维度中的点转换

最后,比例矩阵的对角线上的每个维度都有缩放项

最终的单应矩阵H可以通过将其除以最后一个条目(右下角)进行归一化。可以检查此条目是否太小(如果需要二维单应性并将变换点投影到同一平面中)

这种方法的优点是可以更好地控制参数(例如,翻译对应于使用的典型翻译量),并且只要三个简单矩阵也是可逆的,生成的同音字就可以保证是可逆的


当然,例如,您可以为单位正方形生成性能良好的同形图,然后缩放矩阵以适应实际问题(例如,以像素为单位的图像大小)。

同形图还具有剪切和投影分量。你所描述的是一个仿射变换

这篇文章解释了如何从头开始生成随机同音字-你可以控制旋转、平移、剪切和投影失真:

简单总结一下上面的联系,单应可以写成欧几里德变换、仿射/剪切变换和射影变换矩阵的乘法


好吧,你能不能生成16个随机数,然后把它们推到cv::Mat?是的,如果我只需要随机矩阵,也许我可以这样做。但是我不知道如何获得16个随机数的随机值区域,以便在一定距离内旋转和平移平面对象图像。请看本文:如果您只想旋转和平移,则不需要单应矩阵。通过了解哪个元素意味着什么,你可以很容易地将旋转和平移限制在所需的范围内。你能摘录或解释链接中包含的信息吗?一般来说,答案需要有足够的信息,以便独立于任何链接进行理解。否则,如果/当链接断开或更改时,它们将变得无用。仿射变换矩阵Ha应在对角线上具有所有
1
。仿射矩阵的(3,3)元素应等于1,而不是0。否则,如果你用这个矩阵乘以任何一个点,它在变换后会无穷大。Ha=[[1,sy,0],[sx,1,0],[0,0,1]]