计算新参考帧中图像像素的坐标

时间:2014-01-26 23:50:57

标签: image matlab image-processing

我有一堆不同比例和大小的图像,每个图像都手动注释了一定数量的面部标志。注释过程返回一个矩阵,其(x,y)坐标相对于图像的全局参考框架。

为了我的项目,我需要将所有图像标准化为一个独特的标准尺寸(特别是960 x 1080像素)并对它们进行一些处理。

我的问题是:

  • 鉴于我知道旧图像和新图像的大小,TRANSLATIONROTATIONSCALE的等式将是一个坐标为(x1_1,y1_1)的像素在参考帧1中,将其映射到参考帧2的像素(x2_1,y2_1)

下面的图片应该有助于澄清我正在尝试做的事情:

enter image description here

您可以看到同一图片的两个版本(原始800 x 978和所需的960 x 1080)以及感兴趣的地标的位置。假设我知道右边图中所有地标的坐标,我如何获得左边图中的等效坐标? (请注意,y轴的奇怪位置是由于matlab如何放置参考帧)

添加部分:

特别是使用matlab's imresize()函数缩放图像,如下所示:

B = imresize(A, [1080 960])

在这种情况下,如何计算比例因子是什么?

1 个答案:

答案 0 :(得分:2)

允许sc = s*cos(theta)ss = s*sin(theta) s是比例因子,theta是旋转角度 然后对于逆问题,变换矩阵是

      Tinv = [sc -ss  0;
              ss  sc  0;
              tx  ty  1]

其中txty分别是沿x轴和y轴的平移。

R2013b中的图像处理工具箱包括more details,以及相应的匹配功能供您参考。

编辑添加部分

'Scale'的{​​{1}}选项中

,如果指定了向量,imresize将使用各个值分别作为行和列维度的比例因子。因此,行和列的比例因子为imresize1080/800