Bonjour,
Dans le cadre d'un stage, je travaille sur de l'analyse de forme à l'aide de carte de courbures.
Je tiens à vous préciser que je suis débutante dans l'utilisation de matlab, comme dans la programmation en général.
Mon maitre de stage m'a indiqué, que la "toolbox Graph", répond particulièrement bien à notre attente (lecture d'objets maillés extrait de logiciel de 3D), appliquée avec le script concernant la courbure, que l'on trouve au lien suivant:

https://www.ceremade.dauphine.fr/~pe...h/content.html

Je rencontre quelques difficultés lors de l'utilisation de ce script, notamment je ne comprends pas certains résultats que j'ai pu obtenir lors de test sur des primitives géométriques et j'espère que vous pourrez m'orienter. Je joins, à la fin de ce post, le script tel que je l'utilise.

Le problème que je rencontre est essentiellement lié aux résultats obtenus sur des sphères. La courbure d'une sphère devant être identique en tout point, or j'obtiens un dégradé de couleur représentatif du maillage, et non de la forme. J'ai d'abord pensé que cela était dû au fait que l'échelle colorimétrique est propre à l'objet, mais l'écart entre les valeurs est très peut différent de l'échèle colorimétrique d'un cube...
J'ai fait varier le curvature smooth, le nombre de polygones de ma sphère, le type de maillage, j'ai bloqué l'échelle colorimétrique, j'ai utilisé une sphère d'une plus grande échelle.... rien n'y a fait, la sphère n'a jamais une courbure égale.

Voici quelques résultats que j'ai obtenus:
http://www.zimagez.com/zimage/sphere13.php
http://www.zimagez.com/zimage/sphere21.php
http://www.zimagez.com/zimage/sphere32.php

Maillages utilisés:
http://www.zimagez.com/zimage/spheremaillage.php
http://www.zimagez.com/zimage/sphere...ele-maille.php

Sauriez-vous pourquoi j'obtiens ces résultats et comment le corriger?

Si non j'ai également trouver une fonction patchcurvatured de Dirk-Jan Kroon (http://www.mathworks.com/matlabcentr...tchcurvature.m), mais elle utilise des .mat. Quelqu'un serait-il comment convertir des .off ou .obj pour qu'ils soient compatible avec cette fonction (sachant que je ne sais pas se que contient le .mat).



Si quelqu'un a déjà utilisé des cartes de courbure dans Matlab par un autre moyen, je suis ouverte à toute proposition.

En vous remerciant,



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 
%% Netoyage
close all,
clear all,
clc
 
%% load the mesh
name ='D:/Desktop/MAP/Travail_Julie/primitives/off/sphere_1M_poly.off';
options.name = name; % useful for displaying
[vertex,faces] = read_mesh(name);
 
name_save= 'sphere_1M_poly-maille.jpg';  % nom pour enregistrer
name_save2= 'sphere_1M_poly-smooth_10.jpg';
 
%% display the mesh
clf;
plot_mesh(vertex, faces);
shading faceted;
axis on equal;
grid;
view([-45,45,-45]); %coordonées cartésiennes (x,y,z)
camproj('orthographic');
lighting('none');
 
%% save mesh object
set(gcf,'PaperPosition',[0, 0, 10, 13]) %dimensions de l'exportation en cm (150dpi)
saveas(gcf,(name_save))
 
%% compute the curvature
options.curvature_smoothing = 10;
options.verb = 0;
[Umin,Umax,Cmin,Cmax,Cmean,Cgauss,Normal] = compute_curvature(vertex,faces,options);
 
%% display
% colormap 'jet' 'hsv' 'hot' 'cool' 'spring' 'summer' 'autumn' 
%'autumn' 'winter' 'gray' 'bone' 'copper' 'pink' 'lines'
 
%% Gaussian curvature
%clf;
figure; 
%plot_mesh(vertex, faces);  %Imprimer séparément
subplot(1,5,1);
options.face_vertex_color= perform_saturation(Cgauss,1.2); %variable écrasée
options.face_vertex_color_gauss= perform_saturation(Cgauss,1.2); %sauvegarde valeurs echelle colorimétrique
plot_mesh(vertex,faces,options);
%shading interp; 
colormap jet(256); 
title('Gaussian curvature');
axis on equal;
grid;
%caxis([-2 2.5]); %bloque les limites de l'echelle
view([-45,45,-45])
camproj('orthographic');
colorbar('location','southoutside');
lighting ('none');
 
%% Mean curvature
%figure;plot_mesh(vertex, faces);
subplot(1,5,3); %Attention '5' triche pour laisser espace entre figure
options.face_vertex_color= perform_saturation(Cmean,1.2);
options.face_vertex_color_mean= perform_saturation(Cmean,1.2);
plot_mesh(vertex, faces, options);
%shading interp;
colormap jet(256);
title('Mean curvature');
axis on equal;
%caxis([-2 2.5]); %bloque les limites de l'echelle
view([-45,45,-45]);
camproj('orthographic');
grid;
colorbar('location','southoutside');
lighting ('none');
 
%% Total curvature
%figure; plot_mesh(vertex, faces);
subplot(1,5,5);
options.face_vertex_color = perform_saturation(abs(Cmin)+abs(Cmax),1.2);
options.face_vertex_color_total = perform_saturation(abs(Cmin)+abs(Cmax),1.2);
plot_mesh(vertex, faces, options); 
%shading interp; 
colormap jet(256);
title('Total curvature');
axis on equal;
%caxis([-2 2.5]); %bloque les limites de l'echelle
view([-45,45,-45])
camproj('orthographic')
grid;
colorbar('location','southoutside');
lighting ('none');
 
%% save
set(gcf,'PaperPosition',[0, 0, 30, 10]) %dimensions de l'exportation en cm (150dpi)
saveas(gcf,(name_save2))