我有一堆不同比例和大小的图像,每个图像都手动注释了一定数量的面部标志。注释过程返回一个矩阵,其(x,y)
坐标相对于图像的全局参考框架。
为了我的项目,我需要将所有图像标准化为一个独特的标准尺寸(特别是960 x 1080
像素)并对它们进行一些处理。
我的问题是:
TRANSLATION
,ROTATION
和SCALE
的等式将是一个坐标为(x1_1,y1_1)
的像素在参考帧1中,将其映射到参考帧2的像素(x2_1,y2_1)
中下面的图片应该有助于澄清我正在尝试做的事情:
您可以看到同一图片的两个版本(原始800 x 978
和所需的960 x 1080
)以及感兴趣的地标的位置。假设我知道右边图中所有地标的坐标,我如何获得左边图中的等效坐标? (请注意,y
轴的奇怪位置是由于matlab如何放置参考帧)
添加部分:
特别是使用matlab's
imresize()
函数缩放图像,如下所示:
B = imresize(A, [1080 960])
在这种情况下,如何计算比例因子是什么?
答案 0 :(得分:2)
允许sc = s*cos(theta)
和ss = s*sin(theta)
s
是比例因子,theta
是旋转角度
然后对于逆问题,变换矩阵是
Tinv = [sc -ss 0;
ss sc 0;
tx ty 1]
其中tx
和ty
分别是沿x轴和y轴的平移。
R2013b中的图像处理工具箱包括more details,以及相应的匹配功能供您参考。
编辑添加部分
在'Scale'
的{{1}}选项中,如果指定了向量,imresize
将使用各个值分别作为行和列维度的比例因子。因此,行和列的比例因子为imresize
和1080/800
。