我尝试生成可用于转换平面对象图像的随机单应矩阵。似乎opencv有一个类“patchgenerator”。但是我找不到这个类的详细信息。有些人说它只适用于仿射变换。有什么方法可以生成随机单应矩阵吗?或者我可以直接使用一些 OpenCV 功能?很多谢谢!
问问题
2696 次
3 回答
5
这篇文章解释了如何从头开始生成随机单应性——你可以控制旋转、平移、剪切和投影失真:
https://medium.com/uruvideo/dataset-augmentation-with-random-homographies-a8f4b44830d4
为了简要总结上面的链接,单应性可以写成欧几里得变换、仿射/剪切变换和射影变换矩阵的乘积。
于 2017-09-18T20:00:10.353 回答
2
您可以通过将随机缩放、平移和旋转矩阵相乘来构建单应矩阵:
H = T . S . R
可以通过使用例如欧拉角(三参数旋转)来生成旋转矩阵。
平移矩阵是一个单位矩阵,最后一列条目对应于每个维度中的点平移。
最后,缩放矩阵在其对角线上的每个维度都有缩放条目。
最终的单应矩阵H可以通过将其除以其最后一个条目(右下角)来归一化。你可以检查这个条目是不是太小(如果你需要2D单应性并将变换后的点投影在同一平面上)。
这种方法的优点是可以更好地控制您的参数(例如,平移对应于您使用的典型平移量)并且只要三个简单矩阵也是可逆的,就保证生成的单应性是可逆的。
当然,例如,您可以为单位正方形生成表现良好的单应性,然后缩放矩阵以适合您的实际问题(例如,以像素为单位的图像大小)。
于 2016-07-17T16:28:30.660 回答
-1
单应性还具有剪切和投影分量。你所描述的是一个仿射变换。
于 2017-03-21T20:25:10.757 回答