将图像映射到一组坐标上

时间:2012-05-11 18:46:40

标签: image image-processing imagemagick texture-mapping distortion

我有一个3:4宽高比的典型源图像。我还有一组坐标,我需要将图像映射到单独的图像中。坐标不是完美的矩形;如果有的话,他们定义一个不规则的网格。

因此,例如,(0,0)可能映射到(12,33),(120,0)=> (127,36),(240,0)=>(226,13)等。

我的目标是通过将源坐标映射到目标并应用失真来使我的源图像适合新形状。

有哪些方法可以实现这一目标?我正在使用.NET,但很好的呼吁,例如ImageMagick的。

编辑:根据要求,这是一张照片。左图是一张简单的照片,均匀细分(忽略我糟糕的MSPaint技能)。右侧显示目标形状。我有右侧每个点的坐标。目标是将平面图像映射(投影?)到形状上,使点对齐。

enter image description here

2 个答案:

答案 0 :(得分:2)

查看ImageMagick的Freeform Distorts

答案 1 :(得分:2)

我在我的网站上有一些扭曲操作符的例子(http://www.rubblewebs.co.uk/imagemagick/operators/distort.php) - 使用php但你会明白这一点。

你可能想要shepards方法。

$cmd = "$input -matte -virtual-pixel transparent".  
" -distort Shepards \"0,0 0,0  0,100 20,100 0,200".  
" 0,200 133,200 133,180 266,200 266,200 266,100".  
" 246,100 266,0 266,0 133,0 133,20\" ";  
exec("convert $cmd shepards.png");

enter image description here