【问题标题】:Mapping an image onto a set of coordinates将图像映射到一组坐标上
【发布时间】:2012-05-20 09:08:03
【问题描述】:

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

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

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

有什么方法可以做到这一点?我正在使用 .NET,但可以调用例如ImageMagick。

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

【问题讨论】:

  • 你想完成this吗?我不清楚,我建议你上传一些图片来展示你正在尝试做的事情。
  • 图片已添加。与那个目标不完全相同,几乎相反,但增加了不均匀形状目标的挑战。

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


【解决方案1】:

我的网站上有一些扭曲运算符的示例 (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");

【讨论】:

  • 大帮助,谢谢。对于谢泼德来说,我的观点太接近了,因为结果是一团乱麻。但多项式失真似乎效果很好。
  • 有没有办法在php中做到这一点?
  • 代码是 php 但我假设你的意思是 Imagick。如果是,是;但我不使用 Imagick:php.net/manual/en/imagick.distortimage.php
【解决方案2】:

查看 ImageMagick 的 Freeform Distorts

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2023-03-10
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多