薄板样条差值(Thin plate spline)Java实现

最近一个项目里面需要用到图像变形,看了一些论文,提到几乎所有的生物有关的形变都可以使用薄板样条差值来近似。于是乎,我在网上搜索了一下薄板样条差值的代码。

http://elonen.iki.fi/code/tpsdemo/有tps的c++代码。这份代码倒是可以运行(要自己另外配置opengl和boost),但是demo里面只有一个3D版本的,2D的版本只写了一个接口,并没有写demo。而我这个项目又是用java写的。于是,自己依据c++的2D版本的代码改写出了一份java版本的代码,为了方便大家学习,又写了一份demo。希望能够帮助需要的朋友。

因为代码中涉及到矩阵运算,因此我借用到了另外一个java的矩阵运算的库:jama。链接http://math.nist.gov/javanumerics/jama/

下面贴几张图,初始点阵如下图所示,在平面上按下鼠标,产生一个控制点,然后要按住鼠标拖拽,释放点为此控制点发生形变之后的对应点。(注意:一定要拖拽,单击鼠标是没有用的!)

初始点阵:

三个控制点:

四个控制点:

五个控制点:

代码扔到CSDN上了http://download.csdn.net/detail/xiayang1023/8278687

时间: 2024-10-10 15:11:46

薄板样条差值(Thin plate spline)Java实现的相关文章

关于时间的操作(Java版)——获取给定时间与当前系统时间的差值(以毫秒为单位)

import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class Test { /** * 获取给定时间与当前系统时间的差值(以毫秒为单位) * * @author GaoHuanjie */ public long getTimeDifferenceBetweenSystemTimeAndParamTime(String paramTime) { DateFor

题目1096:日期差值 Java/C++

题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行,即日期差值 样例输入: 20110412 20110422 样例输出: 11 Java AC 代码: import java.util.Scanner; public class Main { /** * @param args */ public static void main(String[]

java中获取日期的差值

转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/42121485 当想到要计算差值,我们肯定想的是"2014.12.14"-"2014.12.20"=4,这种方法,但是java并没有直接给我们这样的方法,所以我想的是,将字符串转化为Date类型,继而又将 date转化为Calendar类型,通过Calendar.add()方法来解决这个方法. package lgx.java.test; imp

相机(Camera)像素差值设置

MTK 相机像素差值和做假 分类: Android2014-05-30 19:59 474人阅读 评论(0) 收藏 举报 CameraAndroid摄像头 图像比例 拍出图像像素 代码中字串id 相机界面显示像素(英文) 4:3 320x240 @string/pref_camera_picturesize_entry_320x240 QVGA 640x480 @string/pref_camera_picturesize_entry_640x480 VGA 1024x768 @string/p

MySQL计算相邻两行某列差值的方法

简述 博主最近因工作任务缠身,都无暇顾及到我的这片自留地了.前段时间稍有空闲,花了较多的精力学习<啊哈算法>,从中学习到很多之前没有太注重的内容,收益颇丰.但是这些算法题目还没有看完,等后面有时间了,还需重新自我温习一下前面所写的内容,并且继续耕耘后面的算法知识. 今天稍微有点时间,总结一下博主近期工作中所遇到的一些难题,希望借此机遇总结一下类似问题的解决方法,也算是一种积累吧. 背景 我们在司机的手机APP里预置了定时上报GPS数据的功能,功能设置为了APP每15秒收集一次GPS定位地址,然

oracle计算两个时间的差值(XX天XX时XX分XX秒)

在工作中需要计算两个时间的差值,结束时间 - 开始时间,又不想在js里写function,也不想在java里去计算,干脆就在数据库做了一个函数来计算两个时间的差值.格式为XX天XX时XX分XX秒: 上代码: CREATE OR REPLACE FUNCTION F_GET_DIFF_TIME(START_TIME IN DATE, END_TIME IN DATE) RETURN VARCHAR2 IS DIFF_TIME VARCHAR2(50); BEGIN SELECT TDAY || '

阿里 2014-08-29 校招机试题 求一个存放整数的二叉树相差最大的两节点差值绝对值

题目:写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这颗二叉树中相差最大的两个节点间的差值绝对值.请注意程序效率. 如果是数值之差,感觉怎么着也得遍历一遍,直接修改下二叉树的基本遍历代码就可以. #include<stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node * left; struct Node * right; } BitNode, *BiTree; /* 求

查找(哨兵查找、二分查找、差值查找)

#include <iostream> using namespace std; #define N 10 int fib(int n) { if(n == 0) { return 0; } else if(n == 1) { return 1; } else { return (fib(n-1) + fib(n-2)); } } //普通查找: int sequenctial_Search(int *a,int n,int key) { int i; a[0] = key; i = n; w

Houdini中给火花渲染准确的运动模糊 - 给运动模糊做非线性差值的方法以及固定粒子点数的方法

估计大家都知道使用运动速度来进行运动模糊的渲染,但是往往这个方法得到的运动模糊都是线性变化的,虽然乍一看没什么问题,但是如果想要每一帧的模糊轨迹也是有曲线变化的而不是僵硬的直来直去的话,使用trail算个速度来做的运动模糊是永远做不到这一点的. 这里我想通过常用的火花(spark)的运动模糊来讲一讲我所了解的一些比较好的方法. 所谓渲染中的运动模糊无非就是差值算法.目前使用的比较多的主要有两种.第一种就是上面说到的直接使用速度来线性差值,这种方法会计算每一个点的速度方向,计算出前一帧或者后一帧的