【问题标题】:Assign specific RGB colours to 3d mesh/surface/points将特定的 RGB 颜色分配给 3d 网格/曲面/点
【发布时间】:2014-07-16 22:57:15
【问题描述】:

人脸和特征地标

我有一张已标记面部特征的面部图像。图像以标准JPEG格式存储,地标以[x y]格式存储(点的x,y对应其在图像上的坐标,如下所示)


插值 3d 面网格

我为每个标记点生成了深度信息(3d 网格),并有一个[x y z] 格式的矩阵,其中坐标 x 和 y 与点的坐标相同。

稀疏网格如下所示:

然后我对xrangeyrangezrange 进行插值以获得更好的网格。使用mesh(xrange,yrange,zrange) 给了我以下

可以使用imread(face_image.jpg) 获得人脸图像像素的颜色。 假设每个插值点的 (x,y) 值对应于图像中的 (x,y),是否可以使 (x,y,z)[3dmesh] 处的像素颜色(x,y)[人脸图像]的颜色相同

这将有效地在 3d 网格上叠加/扭曲人脸,给我一个 3d 人脸模型。

【问题讨论】:

    标签: image matlab image-processing 3d computer-vision


    【解决方案1】:

    我建议这样做:

    n=50000; % chose something appropriate
    [C,map] = rgb2ind(FaceImageRGB,n);
    

    将 RGB 图像中的颜色映射到线性索引。 确保网格和 RGB 图像具有相同的 x-y 尺寸

    然后使用surf 绘制带有颜色索引值(应采用surf(X,Y,Z,C) 形式)和map 作为颜色图的表面。

    surf(3dmesh, C), shading flat;
    colormap(map);
    

    编辑: 一个工作示例(这次使用 彩色 图像...):

    rgbim=imread('http://upload.wikimedia.org/wikipedia/commons/0/0d/Loriculus_vernalis_-Ganeshgudi,_Karnataka,_India_-male-8-1c.jpg');
    
    n=50000; % chose something apropriate
    [C,map] = rgb2ind(rgbim,n);    
    
    % Creation of mesh with the same dimensions as the image:
    [X,Y] = meshgrid(-floor(size(rgbim, 2)/2):floor(size(rgbim, 2)/2), -floor(size(rgbim, 1)/2):floor(size(rgbim, 1)/2));
    
    % An arbitrary function for Z:
    Z=-(X.^2+Y.^2);
    
    % Display the surface with the image as color value:
    surf(X, Y, Z, double(C)), shading flat
    colormap(map);
    

    结果:

    【讨论】:

    • 您的示例完美运行。不幸的是,使用与您使用的类似的网格网格不会完全插入(为问题添加更多细节)我的脸(我是新手,不了解使用的负索引,所以我认为它必须是一个范围问题)。另外,surf(X, Y, -Z, double(C)),平面阴影给了我警告:对于平面阴影,size(CData) 必须等于 size(ZData) 或 size(ZData)-1
    • @tdk 在我的示例中,我选择了一个任意函数来创建Z,我使用-Z 来翻转多项式。它与您的应用程序无关。改用Z(将在我的答案中编辑)。其余的,确保网格的大小与图像的大小相匹配,填充网格或调整图像的大小(使用imresizemaybe)。
    • 我对 -floor(size(rgbim, 2)/2 被用作下限感到困惑。错误是由于尺寸不匹配
    • @tdk 这仅用于演示目的,我希望网格是图像的大小,并且从 -1/2 大小变为 +1/2 大小。你不需要那个部分,只需匹配两者的尺寸即可。
    • 我现在已经解决了这个问题,但我还有其他问题。这张脸(与上面的不同)看起来太脏了(i.imgur.com/q1mBYiv.jpg)。我尝试使用n=1000,但结果相同(i.imgur.com/DOsySv9.jpg)。插值图片(即 RGB 网格)并使用更好的网格会使情况变得更糟(imgur.com/ikaBQel
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2015-07-09
    • 2015-10-12
    • 2017-06-22
    • 1970-01-01
    • 2015-12-01
    相关资源
    最近更新 更多