图形处理算法

时间:2023-02-20 22:40:32
假设一个矩形图片ABCD , 要映射到一个不规则的四边形A'B'C'D'中区,其中A映射到A'上 , B映射到B'上,C映射到C' 上,D映射到D'上,已知矩形图片的四个顶点坐标和不规则四边形的四个顶点坐标,问矩形图片中间的任何一点坐标对应不规则四边形中的哪一点?
 
 有没有什么规则,最好有公式什么的;
 
 或者推理过程是怎样的;  

有人有做过类似图形处理的吗?

8 个解决方案

#1


1. 首先把 ABCD矩形画上等距的方格,很容易做吧, 比如AB边m个等距点, AC边n个等距点,则有m*n个格子,不是方格也没关系。每个

2. 然后A'B'也m个等距点, C'D'也m个等距点; A'C'有n个等距点, B'D'有n个等距点,这些点的连线把A'B'C'D'分成了m*n个不规则的方格

3. 两张图的格子有一一对应关系的。 opencv里面可以做映射!

图形处理算法

#2


用OpenCV吧,知道了两幅图的四个对应点,OpenCV里面有两个函数可以实现直接变换

#3


嗯,兄弟,感谢你这么认真的回答我的问题,虽然答案可能不是我想要的, 但是我已经从里面得到了启发,我是写底层代码的,所有的东西都要自己写,调不了庞大的库什么的,而且效率也太关键了;


再次感谢;

#4


感谢blowlow 

#5


openCV里面透视变换,通过两个数组计算出变换矩阵。然后进行变换
getPerspectiveTransform(srcQuad,dstQuad);
warpPerspective()
你去查一下这两个函数就知道了。

#6


如果都是凸四边形,直接对角线一下,变成2个三角形,然后map
想到一个方法就是,对每个三角形,用2个参数,u,v
u是点D在底边AB上的滑动,从0到1
v是点E在第三点C和D连线上的滑动,也从0到1,
这样E(u,v)就是所求,2个三角形中采用相同的(u,v)就能找到对应点了.

#7


blowlow

图形处理算法

#8


引用 1 楼 blowlow 的回复:
1. 首先把 ABCD矩形画上等距的方格,很容易做吧, 比如AB边m个等距点, AC边n个等距点,则有m*n个格子,不是方格也没关系。每个

2. 然后A'B'也m个等距点, C'D'也m个等距点; A'C'有n个等距点, B'D'有n个等距点,这些点的连线把A'B'C'D'分成了m*n个不规则的方格

3. 两张图的格子有一一对应关系的。 opencv里面可以做……



回答问题真精辟,还有图的! 
赞!

#1


1. 首先把 ABCD矩形画上等距的方格,很容易做吧, 比如AB边m个等距点, AC边n个等距点,则有m*n个格子,不是方格也没关系。每个

2. 然后A'B'也m个等距点, C'D'也m个等距点; A'C'有n个等距点, B'D'有n个等距点,这些点的连线把A'B'C'D'分成了m*n个不规则的方格

3. 两张图的格子有一一对应关系的。 opencv里面可以做映射!

图形处理算法

#2


用OpenCV吧,知道了两幅图的四个对应点,OpenCV里面有两个函数可以实现直接变换

#3


嗯,兄弟,感谢你这么认真的回答我的问题,虽然答案可能不是我想要的, 但是我已经从里面得到了启发,我是写底层代码的,所有的东西都要自己写,调不了庞大的库什么的,而且效率也太关键了;


再次感谢;

#4


感谢blowlow 

#5


openCV里面透视变换,通过两个数组计算出变换矩阵。然后进行变换
getPerspectiveTransform(srcQuad,dstQuad);
warpPerspective()
你去查一下这两个函数就知道了。

#6


如果都是凸四边形,直接对角线一下,变成2个三角形,然后map
想到一个方法就是,对每个三角形,用2个参数,u,v
u是点D在底边AB上的滑动,从0到1
v是点E在第三点C和D连线上的滑动,也从0到1,
这样E(u,v)就是所求,2个三角形中采用相同的(u,v)就能找到对应点了.

#7


blowlow

图形处理算法

#8


引用 1 楼 blowlow 的回复:
1. 首先把 ABCD矩形画上等距的方格,很容易做吧, 比如AB边m个等距点, AC边n个等距点,则有m*n个格子,不是方格也没关系。每个

2. 然后A'B'也m个等距点, C'D'也m个等距点; A'C'有n个等距点, B'D'有n个等距点,这些点的连线把A'B'C'D'分成了m*n个不规则的方格

3. 两张图的格子有一一对应关系的。 opencv里面可以做……



回答问题真精辟,还有图的! 
赞!