【问题标题】:Matlab: Flipping image coordinates to cartesian coordinatesMatlab:将图像坐标翻转为笛卡尔坐标
【发布时间】:2013-11-19 00:43:21
【问题描述】:

我是 Matlab 的新手。我有一张图像(大小为 mxnx3),图像上有几个人工选择的点。例如:

p1 = [267,79];

p2 = [96,372];

这些点是左上角 (1,1) 的图像坐标。我正在尝试将其转换为左下角 (0,0) 的笛卡尔坐标。我怎样才能做到这一点?提前致谢!

【问题讨论】:

    标签: image matlab coordinates cartesian


    【解决方案1】:

    如果我理解正确:只需使用

    axis xy
    

    来自axis doc

    AXIS XY 将 MATLAB 置于其默认的“笛卡尔”轴模式。这 坐标系原点在左下角。 x 轴是水平的,从左到右编号。他们 轴是垂直的,从下到上编号。

    【讨论】:

    • 绝对是翻转轴的正确方法,但我不明白问题中的 (1,1) -> (0,0) 东西。我想这是一个错字?
    • 不是错字!我正在研究这个网页进行 2d 刚性注册,但我不理解翻转坐标的代码:dominionsw.com/wordpress/?p=111
    【解决方案2】:

    如果你需要在代码中直接翻译你的坐标,你可以做一个简单的匿名函数:

    img2cart = @(p) [p(1), img.size(2) - p(2)];
    q1 = img2cart(p1);
    q2 = img2cart(p2);
    

    【讨论】:

    • 如果这是一个愚蠢的问题,我很抱歉。我是初学者!我仍然对这个功能感到困惑。你能解释一下:[p(1), img.size(2) - p(2)]??谢谢!
    • 如果我理解正确,这意味着原始图像x被用作笛卡尔x。那么y值是通过从图像行数中减去y来确定的。
    • 是的,你明白了。此外,因为img 不是函数的参数,所以它在创建函数时的当前值对函数来说有点“老化”。如果您想要更通用的东西,请使用@(p,img) ie 定义函数,并在调用时将img 作为第二个参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2017-10-10
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    相关资源
    最近更新 更多