文件交换

图像缩略图

ICAAM - 反向合成主动外观模型

版本1.3.0.0 (60.8 KB) by 卢卡Vezzaro
能够实时性能逆成分主动外观模型的实现

6个下载

更新2012年02月29

查看许可证

这是实时反向合成主动外观模型(空空导弹),如由恩·马修斯和Simon贝克纸“再探主动外观模型”中描述的实施方式。

提供实验支持的3D扩展到反金宝app向合成空空导弹,也被马修斯和贝克开发了自己的“2D与3D变形的脸部模型”和“实时联合2D + 3D主动外观模型”的论文。

为帮助缓解构建由3D扩展所需的3D形状模型的任务,提供了一种通过荊西奥和金出武雄闭合形式形状从运动算法的实现。虽然我不能保证通过后者实现给出的结果的质量,它不应该,因为它是主要基于小的实现远离正确的。

在Sourceforge.net上查找“icaam”,以获得最新版本、示例所需的数据和更多信息!

引用作为

卢卡Vezzaro(2020年)。ICAAM - 反向合成主动外观模型(//www.tatmou.com/matlabcentral/fileexchange/32704-icaam-inverse-compositional-active-appearance-models),MATLAB中央文件交换。检索

意见及评级(49

感谢您分享代码!
请你告诉我,我怎么可以使用此代码用于安装3D形变模型(维特尔和blanz)?

冰清曲

@Luca Vezzaro

谢谢!这是相当有帮助!

卢卡Vezzaro

你好,

注释文件正在使用笛卡尔坐标:

ÿ

^
|
+ ---> X

每个点都存储为行:

-------
| X1 Y1 |
| X2 Y2 |


| XN YN |
-------

该代码使用图像坐标MATLAB的约定:

+ ---->Ĵ
|
|
v
一世

并存储在相同的方式:

-------
| I1 J1 |
| I2 J2 |


|在JN |
-------

检查xy2ij()和ij2xy()函数用于两个之间的转换。

冰清曲

嗨,卢卡

感谢您的分享。

所有的代码都在我的电脑上正确运行。只是有一些逻辑问题。

你训练模型,涉及到所有的形状坐标以相反的顺序?形状= [Y X]如实施例。

很多谢谢!
冰清

Elangkumaran

我已经产生的初始形状。但AAM仍然保持发散。

请找到更多详细信息:http://goo.gl/1VI131

卢卡Vezzaro

@Elaungkumaran:

1.这是创建注释的变量:

负载(sprintf的( 'cootes /%s' 的,training_files(ⅰ)。名称));

使用build_model_2d_from_files不被暴露在这种复杂性。

2.你是什么意思?fit_2d是适合的功能。您需要提供一个形状,开始配合。由于空空导弹不这样做的人脸检测,你需要先申请一个人脸检测算法来检测面部和使用的大致位置,为满足您的AAM检测脸。

Elangkumaran

我有一对夫妇的查询:
1.实施例/ fit2d_test.m负载形状用
形状(:,:,1)= xy2ij(注释,尺寸(表观,1));
但是变量“annotations”之前没有声明。你从哪里获得注释并加载到“形状”?

2.如何适应AAM到文件的初始形状?(即,非标注的图像)。我在这方面的一个初学者,似乎无法使其工作

卢卡Vezzaro

我会尽力解决这个问题,但首先我需要MATLAB 2012B。我会看看我能做什么。

卢卡Vezzaro

如果可以,请使用旧的MATLAB版本。

嗨卢卡,
我使用MATLAB 2012B的时刻(遗憾的错字)。我只是想icaam-1.0-R17与2013年4月23日为最后一次更新,这是最新版本accoring到sourceforge上。不过,我仍然得到与PCA相同的错误了。

我还试图替换PCA()princomp(),但后来这导致另一个错误的代码,所以我认为这两种方法具有不同的输出。

卢卡Vezzaro

阿尼卡,你的意思是Matlab的R2011b?

你确定你正在使用最新版本的从这里?http://sourceforge.net/projects/icaam/files/

当我尝试运行用MATLAB 1021B的代码,我遇到与PCA的问题。下面的错误信息弹出,运行时tesi_train.m

采用PCA错误
太多的输入参数。

误差在princomp(线29)
[varargout {1:nargout}] = PCA(varargin {1}, '算法', 'SVD', '经济',fEconomy);

误差在var_pca(第32行)
[PC,得分,eiv_] = princomp(数据”, '经济舱');

误差在build_model_2d_from_files(线230)
[PC EIV] = var_pca(shape_matrix,0.98);

卢卡Vezzaro

感谢您的反馈希德拉贾拉姆。很高兴知道!

只提 - 我所有的工作的例子只是罚款64位的Ubuntu 12.04 ...

SURUMIĴ

任何一个可以得到关于“具有深度AAM算法人脸特征提取”的MATLAB代码....

卢卡Vezzaro

如果你只是考虑视频的每一帧作为一个单独的图像,你不应该有任何麻烦

K a

谢谢你,如果我需要使用您的项目上的视频,我必须修复或添加任何东西?

我是初学者,对于任何问题我都很抱歉

卢卡Vezzaro

是的,但你可能需要做数据一些额外的处理作为空空导弹只能给你的认可特征的位置。

K a

我可以用你的面部表情识别项目?

卢卡Vezzaro

我用Matlab的版本完全相同,但我procrustes.m不包含该行。
请告诉我您的procrustes.m的位置(我的是:C:\ Program Files文件\ MATLAB \ R2011a \工具箱\统计\统计)。

检查Matlab的路径(文件 - >设置路径...),以确保您没有正在使用的,而不是由统计工具箱提供的一个名为procustes.m文件。

作为最后的手段,你可以尝试重新安装统计工具箱...

感谢您的快速答复。
我使用MATLAB 7.12.0(R2011a)和我的操作系统是赢7 64位。我现在用的包,从SourceForge下载,它包含了所有的文件(代码和数据集)。
图像处理工具箱效果很好。
在数据(1)的procrustes.m文件值的25行是125.7963,它不包含标记属性,因此MATLAB抛出错误。

卢卡Vezzaro

所有什么版本的matlab首先您使用的,什么是你的操作系统?

您使用的是包从本网站或从SourceForge的“官方”呢?本网站上的一个不包括示例中的图像文件,所以,可能是你的问题。

另外,还要确保你已经安装了统计数据和图像处理工具箱,因为他们是必需的。

嗨卢卡Vezzaro先生,
我尝试使用这个代码,但我赶上这个错误在procrustes.m,当运行示例文件(如annotate_test.m,fit2d_test.m和等):

???不当索引矩阵参考。

误差在==>在25普鲁克
P =大小(数据(1).marks,2);

错误==> build_model_2d 182
[d Y] =普鲁克(mean_shape,aligned_data(:,:,i))的;

误差在==> annotate_test在29
AAM = build_model_2d(形状,外观, '三角测量',三角测量);

我认为马克是未知的。

什么版本您使用的?请确保您使用的是最新版本。还请,如果你使用的是Windows或Linux Matlab的(没人在Linux下过真正的考验这一点)告诉我。
要了解如何使用3D算法,请查看tesi_train。m和tesi_sfm。米的例子。运动数据集有一些低质量的数据(带有感叹号的文件),我不记得是否应该使用它们。
最后,我从来没有真正得到与算法和数据梦幻般的效果。你最好的拍摄是要么运行形状由运动了大量的时间(因为它是随机),或使用自己的2D运动数据。

三江源项目。我能够用在工程实例帮助训练我的数据。但我有拟合算法fit_3d问题()。该功能要么给出错误或通过高误差输出(模型不适合在脸上)时,我提供我自己的照片。

我已经尝试“TESI /运动”,使所述形状模型,以及。我仍然得到不正确的结果。

当我给(dataset/IMM)建立形状模型时。我得到一个错误

" init_shape中的地标数量和/或image_data中的颜色数量与模型不一致"

我已经尝试“TESI /运动”,使所述形状模型,以及。我仍然得到不正确的结果。

当我给(dataset/IMM)建立形状模型时。我得到一个错误

" init_shape中的地标数量和/或image_data中的颜色数量与模型不一致"

这可能是由很多原因造成的。
找出的唯一方法是通过试验和错误,不幸的是...

尝试使用较小的训练集,并尝试使用图片来自训练集做配件,而不是做留一出试验。

你好,
使用注释,以适应AAM我自己的数据,我不能没有编译fit2d_test.m,他始终做到抓:装修分歧..
我应该做吧。
非常感谢

非常感谢先生卢卡Vezzaro。

首先,要确保所有的图像被注释,并使用地标是相同的。

我建议你创建的第一个注释文件后,使用该作为注释其他图像开始。

如果您确定的注解是一致的,见例如“fit2d_test.m”。它不应该是很难理解如何使用build_model_2d。

它的功能ij2xy(中,MAXY)?因为我有一些编译错误,所以我不知道如果我的步骤是correcte或没有。
非常感谢

你好,
到constructe AAM模型中,我们使用功能build_model_2d(shape_data,app_data文件),这是正确的?我不知道如何计算从我的数据集的形状数据和应用的数据。
坦克了很多的帮助。

完美,它现在工作与灰度图像和png形式。
非常感谢

我在最新版本(R17)的bug。你可以在这里下载:https://sourceforge.net/projects/icaam/files/

完美,它的工作现在,转换之后的图像。从那以后,我会尽力诠释我的数据,并constructe AAM模型。
非常感谢

好了,现在我明白了。图像命令解释灰度图像作为彩色图像索引!
当我下班回来,我会修复这个bug。
与此同时,你可以使用这种方法将单通道灰度图像转换为RGB灰度图像(假设我还记得repmat是如何工作的):

IMG = imread( 'image_path_gray_scale')
img_rgb = repmat(img, [1 1 3])
imwrite(img_rgb, 'image_path_rgb')

类(IMG)
ANS =
UINT8
分(分钟(IMG))
ANS =
0
最大(MAX(IMG))
ANS =
255

非常感谢。

正如我所料,灰度PNG图像数据不是在0-255范围内。
请复制并粘贴以下命令的输出:

IMG = imread( 'image_path_gray_scale')

类(IMG)

分(分钟(IMG))

最大(MAX(IMG))

对不起,我的工作,我没有在这里MATLAB所以我不能做这自己。

图像是。png格式(cohen kanade数据)。
如果我做的图像(imread(“image_path_gray_scale”))我得到了一些颜色的脸好照片,但如果我做的图像(双(imread(“image_path_gray_scale”))/ 255)出放是不同的,是蓝色窗口一无所有。
非常感谢

很奇怪,注释应与灰度图像工作...在保存您的图像样的格式是什么?

如果键入:

图像(imread( 'image_path_gray_scale'))

你看到了什么?

如果您键入的内容:

图像(双(imread( 'image_path_gray_scale'))/ 255)

是输出相同或不同?

谢谢你的回答,
但我的数据集是灰度图像,和我wan't进行注解。当我使用注释(“image_path_gray_scale”),它给我一个蓝色的窗口,没有任何图像。
非常感谢
FATI

卢卡Vezzaro

您可以反正注释图像,只需使用rgb2gray(http://www.mathworks.it/help/toolbox/images/ref/rgb2gray.html)imread后的图像数据转换为灰度级。你并不需要更改注释数据。

大家好
我试过你的代码。感谢您的项目。我想训练灰度我的数据集,我想知道,如果有可能,因为我不能这样做与灰度图像的annotation.m。非常感谢。
FATI

您是否尝试过我给mashmallows(第二个评论)的建议?
请尝试,也尝试读取的文档。
如果在此之后您仍然无法管理建立训练集,我会很乐意提供帮助。

你好,

我试过你的代码。感谢您的project.I想训练我自己的数据集(格里斯scay图像。PNG),以便提取我的面部特征。我应该怎么做?我怎么能产生我的照片给.MAT和triangulation.mat?
Tnanks很多
FATI

卢卡Vezzaro

你好!感谢您对这个项目的兴趣。首先,请务必从SourceForge使用最新版本(http://sourceforge.net/projects/icaam/)因为最近有bug修复。
同时读取包内的README.txt文件应该给你一个起点。
无论如何,你生成使用annotate.m脚本(类型的帮助注释“)注释数据。该triangulation.mat不是强制性的,但你可以用德劳内(“帮助德劳内”),这就是培训的代码使用反正生成它。

棉花糖

你好,我已经试过你的代码。感谢您的项目。你已经做了很多工作!我想训练我自己的数据集,以提取我的面部特征。我应该怎么做?我怎么能产生我的照片给.MAT和triangulation.mat?谢谢

更新

1.3.0.0

更新到最新版本,增加优化和修正错误。

MATLAB版本兼容性
创建与R2008b
与任何版本兼容
平台兼容性
视窗 苹果系统 Linux的