热搜:NVER node 开发 php

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

2024-08-14 17:55:01
请大神帮我看这个图片变形公式

这是一个图片的运算,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讯息..晚点再试试看好了