H
hospitaltnt2
Unregistered / Unconfirmed
GUEST, unregistred user!
小弟最近开发以图像程序,遇到一些问题,请各位富翁指点。
为了实现类似photoshop的图像扭曲变形功能,即四边形任意顶点平移变换,我有以下想法:
首先假设在图像中有一供选取区域用的四边形ABCD,其中顶点B平移到M后,形成新的四边形AMCD,要求四边形区域中的图像也随之变形。
由以往写程序的经验,须对AMCD中的任一点Q,求出该点在ABCD中的对应点P,再进行颜色赋值即可。但是,如何找到PQ的对应关系呢?
在ABCD中,有B点向对边AC和CD上的各点作直线,理论上有无数条,这些可以覆盖ABCD中的所有点,在计算机图像系统中,“直线”的数目是有限的,因为AC和CD上的点是有限的,所谓直线也只是折线拟合成的直线,但这些拟合后的直线同样能因为拟合的缘故覆盖ABCD中所有的像素点。同样,对于AMCD也是如此。
现在,只需找出Q点在AMCD中所处的直线MX(X为直线与四边形边的焦点),因为X点是不动的,因此可以得到在ABCD中的BX,再根据Q点再MX上的位置得到BX上P点即可。
这个想法会不会运算量太大,求点对应的线的时候可能用到拟合算法。
或有更好的方法,请大虾指点迷津,小弟再拜。
为了实现类似photoshop的图像扭曲变形功能,即四边形任意顶点平移变换,我有以下想法:
首先假设在图像中有一供选取区域用的四边形ABCD,其中顶点B平移到M后,形成新的四边形AMCD,要求四边形区域中的图像也随之变形。
由以往写程序的经验,须对AMCD中的任一点Q,求出该点在ABCD中的对应点P,再进行颜色赋值即可。但是,如何找到PQ的对应关系呢?
在ABCD中,有B点向对边AC和CD上的各点作直线,理论上有无数条,这些可以覆盖ABCD中的所有点,在计算机图像系统中,“直线”的数目是有限的,因为AC和CD上的点是有限的,所谓直线也只是折线拟合成的直线,但这些拟合后的直线同样能因为拟合的缘故覆盖ABCD中所有的像素点。同样,对于AMCD也是如此。
现在,只需找出Q点在AMCD中所处的直线MX(X为直线与四边形边的焦点),因为X点是不动的,因此可以得到在ABCD中的BX,再根据Q点再MX上的位置得到BX上P点即可。
这个想法会不会运算量太大,求点对应的线的时候可能用到拟合算法。
或有更好的方法,请大虾指点迷津,小弟再拜。