• 技术文章 >后端开发 >php教程

    请大神帮我看这个图片变形公式

    2016-06-23 13:42:32原创421
    这是一个图片的运算,http://blog.csdn.net/jia_zhengshen/article/details/12008371

    需要看的只有第38页那个公式以及4.4.1那一段话

    另外这是一个中文网页,也引用了那个公式,并有一些解释会更易懂
    http://blog.csdn.net/jia_zhengshen/article/details/12008371

    目前已经可实现图片内像素(pixel)替换来让图片产生变形
    但不太能理解那个公式怎麽算,整理一下我的问题大致如下:

    1. 图片原有的pixel座标(变形前)是U或是X?
    2. 就我目前的理解,我用for回圈扫过每一个pixel,这每一个pixel即是公式内X的座标,求出U之後,开始做变形动作,将原有X改变为U,此思考方向是否正确?



    回复讨论(解决方案)

    这篇博文说的比你给的清楚 http://www.cnblogs.com/xiaotie/archive/2009/12/08/1619046.html

    [/url]
    阴影圆环代表一个半径为 rmax 的圆形选区。其中,C点是鼠标点下时的点,也就是圆形选区的圆心。鼠标从C拖到M,致使图像中的点U变换到点X。所以, 关键问题是找到上面这个变换的逆变换??给出点X时,可以求出它变换前的坐标U(精确的浮点坐标),然后用变化前图像在U点附近的像素进行插值,求出U的像素值。如此对圆形选区内的每一个像素进行求值,便可得出变换后的图像。
    而这个计算公式就是

    这篇博文说的比你给的清楚 http://www.cnblogs.com/xiaotie/archive/2009/12/08/1619046.html

    [/url]
    阴影圆环代表一个半径为 rmax 的圆形选区。其中,C点是鼠标点下时的点,也就是圆形选区的圆心。鼠标从C拖到M,致使图像中的点U变换到点X。所以, 关键问题是找到上面这个变换的逆变换??给出点X时,可以求出它变换前的坐标U(精确的浮点坐标),然后用变化前图像在U点附近的像素进行插值,求出U的像素值。如此对圆形选区内的每一个像素进行求值,便可得出变换后的图像。
    而这个计算公式就是



    谢谢回覆,这篇我也看了,真的很让我困惑,"关键问题是找到上面这个变换的逆变换??给出点X时,可以求出它变换前的坐标U" 我就是不理解这一句话的意思,为什麽U既然是变换前的座标,不是早已知道的座标吗(原始图片pixel座标)?所以我们要求的是X? 如果是X 那方程式就会变成 X = ??? 将会变得非常复杂...

    如此应该怎麽运算?

    非也
    从 u 点变换到 x 点时,如果是线性变换(平移)那么 u 点的坐标就是已知的
    但你做的是变形(非线性变换),所以你只知道变换后的点 x 并不知道变换前的点 u 在哪里,因此需要计算
    就好比某人现在 到达台北,但你并不知道他是从台南还是高雄来的,需要通过他的旅途时间来推算他来自哪个城市

    哇!! 你好?害,?知道台?的地名!!??

    我能理解你?的例子,非常清楚,但?法?是有疑惑,首先我?不知道?形後的位置X,我只知道pixel原始位置U
    可否?xuzuning具??明怎??算?

    假?我已?用for?圈得到?影?形?域?所有pixel座?,??座?是公式?的x?是u?

    使用繁体字并没什么问题,一般都认识,不过写就不一定了

    首先, 鼠标从C拖到M,M 就是确定的了,那么以 M 为圆心 rmax 为半径的圆中的每一个点都是确定的了
    这一点应该是没有问题的了吧?
    其次,由于是非线性变形,所以圆M中的每一个点并不和圆C中相应位置的点一一对应(如果一一对应就不是变形了)
    这一点应该是没有问题的了吧?

    因此我们就需要根据圆M中的点 x 计算出圆C中的点 u 的具体坐标
    如果不变形的话 就是平移了
    正因为有了系数 才产生了变形

    非常清楚的解说,谢谢!

    所以公式中的X = 圆移动後的圆内单点座标,故此座标也是已知,将全部数值(X,rmax,m,c)放入公式後求出U
    我这样理解是否正确?
    求出的U pixel替换掉X pixel是否就是变形後的结果?

    对,求出的 u 就是
    但需要注意的是:u 是个小数(不大可能计算得到整数的),所他并不真实存在,需要通过周边四个项数计算(插值)出具体的像素值

    好的,具体了解了,真的非常感谢您,帮了我一个大忙

    虽然对於插值还不了解,但这部分我自己解决应该没问题

    实做出来或是做不出来都会再让您知道後续结果的

    再次感谢~

    要给分出现error 500讯息..晚点再试试看好了

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:收集整理的非常有用的PHP函数 下一篇:js有关onclick的问题
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 20+值得了解的PHP面试题(附答案分析)• php 数据采集-php如何连结数据库,怎么写代码• Symfony2实现在controller中获取url的方法_php实例• PHP编程开发怎么提高编程效率 提高PHP编程技术_php实例• 四个常见html网页乱码问题及解决办法_php实例
    1/1

    PHP中文网