【问题标题】:Proper algorithm for images processing图像处理的正确算法
【发布时间】:2017-01-27 18:18:51
【问题描述】:

我正在尝试解决与图像处理相关的问题,但似乎我一直坚持选择合适的算法。也许你们中的某个人可以帮助我,并说出我对问题的推理中的问题所在。

假设我们有两张 16x16 像素的图像。作为用户,我在这张图片上选择了两个点。作为用户,我知道点 x1(8,8) 和 y1(10,10) 与第二张图像中的点相同,比如说 x2(5,5) 和 y2(8,8)。

所以这两个点对我来说是某种向量。 所以假设我可以计算这个向量的长度。

我想实现什么?我想移动第一个图像上的点,与第二个图像上的点相关。

我的“新”点 X 应该在点 x1 和 x2 之间(在中间),我的“新”Y 点应该在点 y1 和 y2 之间。

当然,将 (x1,y1) 像素的值移动到 (px1,px2) 像素是很容易的,但剩下的我该怎么办?我的意思是我需要对所有图像进行变形/变形或其他任何操作。

我卡住了。我一直在研究变形算法、变形算法、最近邻算法,但它们对我没有用,或者我不明白如何正确使用它们。

我相信你不会拒绝我的问题。我真的需要线索才能继续前进。我不需要在代码中实现,我只需要了解我对问题缺乏了解的地方以及我如何以不同的方式思考它。 提前致谢

[编辑]

我正在尝试从here 了解图像变形算法。你能帮我理解一下到底是什么吗

u = [ (X-P)(Q-P) ]/ ||Q-P||
v = [ (X-P) * Perpendicular(Q-P) ] / ||Q-P||

如果我理解正确,||Q-P||应该是点 Q 和 P 之间的长度。那么 (X-P) 或 (Q-P) 是什么?我如何计算垂直(Q-P)?应该是直线方程,还是长度?

【问题讨论】:

  • 对我来说听起来就像变形,但也许你应该尝试添加一些图片来明确你的意思?
  • 也可以看到这个:stackoverflow.com/q/39938767/1874627.
  • 我编辑了我的问题

标签: image algorithm morphing warp


【解决方案1】:

您正在寻找的技术是具有 2 个控制点的“仿射变换”

所以,我使用 ImageMagick,它安装在大多数 Linux 发行版上,也可用于 macOS 和 Windows。我只是在终端的命令行中执行此操作。

让我们制作一张起始图片 - 我已将您所有的数字放大了 10 倍,使其大到可以看到:

convert -size 160x160 gradient:cyan-magenta \
   -fill black -draw "line 0,0 160,160"     \
   -fill yellow -draw "line 160,0 0,160"    \
   -fill red -draw "circle 80,80 80,85" -draw "circle 100,100 100,105" start.png

红色圆圈是您的起点。然后我应用仿射变换,将 [80,80] 转换为 [100,100] 并将 [50,50] 转换为 [80,80]:

convert start.png -distort affine '80,80 50,50 100,100 80,80' distorted.png

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2020-03-04
    • 2016-11-04
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多