Menus

menu d'accessibilité

Information sur le site

Auteurs

menu de navigation

Contenu

[allez au menu haut]
[allez au menu haut]

chemin : Annexes : Codes sources » section 1.2.2 tout déplier

     

Consultations des codes sources :

section 1.1 Téléchargement des sources

Si vous souhaitez utiliser l'une de nos applications vous pouvez les télécharger ci-dessous au format tar.gz (on conseillera 7-Zip ou Winrar pour les décompresser) :

  1. application pycoord (tar.gz). Si vous rencontrez des difficultés pour exécuter le programme, la section 2 de la page Expé décrit les prérequis nécessaires à son exécution, les fonctionnalités et le fonctionnement du programme.
  2. algorithme scigauss (tar.gz). On trouvera également des explications détaillées à la section 3 de la page Expé.
  3. application mouth_detector (tar.gz)

Pour toute modification ou réutilisation, veuillez vous référer à la licence GPL. Les sources sont contenues dans les fichiers ci-dessus.

section 1.2 Consultations en ligne

Nous mettons ci-dessous les codes sources (avec coloration syntaxique) de chacun de nos programmes, de façon à ce que vous puissez les consulter en ligne ; la numérotation des lignes est en correspondance à celle utilisée dans les pages traitant de ces divers programmes. Si vous souhaitez télécharger l'un de nos programmes veuillez consulter la section 1.1 de cette page

section 1.2.1 Sources Pycoord
  [déplier le contenu de 1.2.1]
section 1.2.2 Sources SciGauss
// # contact: edouard.lopez+ter@gmail.com // ######################################################### // #This program is free software; you can redistribute it and/or modify // #it under the terms of the GNU General Public License as published by // #the Free Software Foundation; either version 2 of the License, or // #(at your option) any later version. // // #This program is distributed in the hope that it will be useful, // #but WITHOUT ANY WARRANTY; without even the implied warranty of // #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // #GNU General Public License for more details. // // #You should have received a copy of the GNU General Public License // #along with this program; if not, write to the Free Software // #Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // ######################################################### clear   //les quatre prototypes: jpt=[159 470 341 496 252 468 240 548]; // prototype de la joie spt=[215 555 322 553 270 538 271 587]; //surprise tpt=[164 418 253 406 210 403 215 430]; //tritesse dpt=[335 316 415 314 379 291 377 335]; //dégout   //notre base de données: 200visages*4points P=[83 137 123 138 104 135 102 152; 172 202 226 198 197 186 197 202; 160 161 245 168 202 153 199 189; 184 132 244 139 213 134 209 150; 170 153 207 154 186 144 186 168; 173 123 208 128 189 125 187 129; 135 246 170 246 151 238 151 262; 157 131 211 130 185 135 183 153; 179 171 235 170 206 166 206 187; 143 156 191 148 165 152 166 159; 147 101 189 103 168 97 165 118; 175 122 213 121 194 116 193 134; 184 118 215 117 201 107 200 133; 182 120 221 119 202 114 202 126; 163 173 225 177 184 179 184 201; 168 154 217 151 192 148 191 161; 169 149 230 145 196 146 199 171; 179 133 240 133 209 131 209 154; 201 132 256 132 229 133 229 151; 164 157 214 153 185 144 189 170; 165 150 211 145 184 135 185 160; 187 162 248 157 219 154 220 182; 153 113 207 114 180 115 181 131; 310 664 516 671 421 653 412 711; 177 361 230 373 191 350 193 370; 217 361 286 366 250 351 247 378; 169 368 231 373 189 362 190 375; 210 362 268 359 240 351 239 372; 243 340 388 347 322 342 316 393; 235 327 395 329 315 312 313 374; 232 305 366 307 285 296 286 341; 260 335 405 326 330 325 336 387; 252 328 402 333 323 322 322 390; 255 338 378 330 310 336 312 367; 264 314 373 311 318 309 319 368; 242 312 367 302 302 295 306 344; 267 320 378 324 321 320 318 367; 259 311 380 306 319 308 319 342; 268 337 381 339 321 330 320 380; 249 318 380 322 312 317 316 372; 263 327 387 336 328 322 321 385; 261 320 383 321 320 316 318 360; 261 346 363 346 310 340 312 384; 390 676 539 701 483 639 455 776; 353 692 501 694 421 617 422 783; 242 313 385 305 312 295 318 356; 240 360 354 368 296 351 294 392; 248 330 373 306 310 314 316 353; 244 320 377 301 309 314 310 321; 376 709 574 694 481 674 483 724; 353 633 523 654 434 630 427 678; 260 329 387 332 322 318 324 391; 255 329 381 323 316 305 318 357; 236 318 354 329 296 317 288 376; 250 334 394 322 318 318 323 375; 237 327 375 327 304 328 306 374; 243 314 386 324 313 315 310 350; 241 327 358 332 302 317 299 371; 275 291 365 301 320 302 318 322; 248 496 386 491 316 479 318 524; 406 704 535 694 467 678 470 713; 432 760 558 750 483 732 490 777; 441 755 575 741 496 733 500 767; 440 751 593 731 506 731 516 783; 407 722 565 709 481 705 485 729; 423 723 559 697 484 689 489 724; 438 681 575 660 500 652 503 688; 444 708 557 703 500 694 502 745; 446 744 554 732 502 706 503 783; 410 739 516 740 470 717 471 785; 457 742 587 738 526 725 526 784; 375 655 506 660 441 619 441 698; 556 669 710 676 638 656 638 699; 548 726 696 727 627 729 626 759; 576 683 727 675 664 664 655 730; 424 788 612 760 522 748 531 797; 520 566 676 559 586 533 590 583; 551 607 726 588 629 579 637 609; 506 597 654 586 572 573 574 603; 269 288 322 286 291 277 293 313; 197 163 213 317 225 233 165 235; 204 190 204 315 217 258 183 253; 273 155 260 278 278 223 251 218; 202 139 209 281 201 209 174 208; 205 165 212 265 234 215 186 213; 242 160 225 258 247 215 218 208; 251 179 246 267 279 230 223 220; 65 77 91 78 78 78 78 81; 296 398 439 374 355 394 365 430; 187 525 298 515 237 512 241 542; 188 348 271 349 228 365 227 381; 178 525 293 511 232 509 241 563; 197 529 316 522 244 512 245 542; 224 493 345 505 287 491 279 526; 187 548 339 552 267 533 262 577; 172 519 309 494 217 492 231 555; 191 565 319 551 241 532 249 583; 216 485 356 450 283 451 293 491; 177 466 356 493 284 495 265 561; 376 599 499 596 428 516 438 689; 361 517 484 519 435 503 435 522; 134 572 286 558 200 558 207 585; 181 553 324 529 234 518 240 546; 221 496 333 482 271 482 275 515; 187 524 312 524 246 499 245 560; 239 546 339 540 284 537 286 566; 240 565 339 559 287 556 291 588; 201 518 316 495 253 480 261 510; 219 591 336 579 273 566 277 611; 241 554 374 557 302 547 302 571; 174 489 267 484 217 462 221 510; 232 547 361 552 309 525 295 609; 270 564 384 570 346 534 335 600; 243 531 359 540 325 515 315 572; 204 620 329 614 259 594 263 651; 207 562 383 547 288 538 291 584; 234 545 402 570 328 544 312 623; 248 523 370 532 308 499 306 560; 242 512 375 506 312 490 312 546; 223 557 315 549 269 541 272 572; 245 511 374 495 311 484 314 524; 272 587 368 575 325 567 326 604; 158 591 319 630 252 575 237 634; 197 534 326 554 271 517 264 563; 189 540 367 536 282 538 282 589; 179 541 335 555 273 507 259 605; 204 480 339 478 281 484 281 520; 217 475 339 478 278 469 279 497; 223 533 349 538 288 519 289 563; 213 548 363 560 295 529 285 581; 231 516 360 524 305 494 294 562; 191 509 333 532 256 512 244 563; 160 468 346 492 250 467 246 545; 173 550 324 574 248 548 238 604; 223 493 350 514 292 484 283 521; 214 555 326 553 266 536 268 589; 246 580 348 554 285 554 293 576; 168 545 318 484 233 522 244 551; 161 555 309 523 214 534 222 563; 207 575 392 562 294 550 292 598; 193 571 338 570 261 551 261 592; 181 569 362 583 270 538 258 668; 285 486 395 484 346 467 343 506; 313 299 386 301 349 290 349 303; 216 438 309 438 256 423 256 466; 248 488 332 494 291 461 285 545; 234 501 333 507 283 489 280 527; 297 249 342 251 319 241 318 268; 261 254 310 249 280 241 281 259; 305 261 340 262 320 251 322 282; 234 556 363 558 299 532 297 593; 822 692 987 690 902 663 900 764; 378 1363 680 1391 517 1346 500 1460; 804 748 1028 740 912 686 914 822; 862 785 1039 771 951 741 959 861; 778 831 961 802 853 790 881 953; 810 741 985 762 895 695 886 814; 797 705 989 685 883 610 898 773; 741 637 972 653 846 574 841 778; 710 730 976 800 862 719 833 829; 711 743 974 704 835 680 860 885; 733 858 929 900 849 843 819 923; 792 757 972 762 876 681 873 817; 777 705 982 708 875 647 873 736; 730 806 998 804 852 755 864 844; 738 855 901 856 816 811 816 955; 475 1126 765 1128 602 1127 602 1174; 90 207 153 211 116 198 115 210; 775 718 951 721 862 673 859 736; 489 939 739 939 603 844 606 1043; 115 223 162 220 131 202 134 239; 475 1024 779 1016 635 984 633 1074; 450 1114 732 1112 582 1066 589 1175; 804 752 967 764 886 740 877 807; 776 746 945 745 858 705 852 845; 773 742 999 748 890 701 883 868; 701 824 925 806 806 774 807 836; 807 743 1006 731 903 742 904 787; 778 721 979 744 868 696 874 847; 761 765 994 764 874 739 869 812; 805 729 1036 735 913 690 905 850; 798 731 974 719 883 713 888 768; 881 763 1037 771 961 710 951 864; 756 737 963 716 843 681 852 842; 843 658 994 671 921 632 914 709; 808 828 1015 777 901 774 913 817; 805 753 1009 726 897 696 924 871; 762 749 934 755 825 739 833 784; 831 813 1009 788 921 776 929 808; 850 683 1017 677 929 622 934 713; 787 692 972 672 862 661 869 738; 852 764 1006 749 922 726 932 797; 768 748 934 744 846 700 852 811; 334 316 419 316 378 286 376 335; 294 272 354 278 324 260 324 279; 731 735 934 735 812 722 815 760;];   [n,m]=size(P); //taille de la matrice     // calcul de nos deux ratios (écartement, ouverture vers le haut ou vers le bas) à partir des coordonnées des points. function [R]=ratio(pt) a=pt(1)-pt(3); b=pt(2)-pt(4); c=pt(5)-pt(7); d=pt(6)-pt(8); R(1,1)=sqrt((a)^2+(b)^2)/sqrt((c)^2+(d)^2); I(1,1)=pt(1)+(pt(3)-pt(1))/2 I(1,2)=pt(2)+(pt(4)-pt(2))/2 R(1,2)=sqrt((pt(5)-I(1,1))^2+(pt(6)-I(1,2))^2)/sqrt((pt(7)-I(1,1))^2+(pt(8)-I(1,2))^2); endfunction     // nos quatre écart-types initiaux. for i=1:4 for j=1:2 Si(i,j)=1; end end   // nos quatre écart-types initiaux. //Si(1,1)=1// ecart type sur x pour joie //Si(1,2)=1;//ecart type sur y pour joie //Si(2,1)=1; //Si(2,2)=1; //Si(3,1)=1; //Si(3,2)=1; //Si(4,1)=1; //Si(4,2)=1;     // nos quatres espérance initiales = ratios prototypes Ei(1,:)=ratio(jpt); Ei(2,:)=ratio(spt); Ei(3,:)=ratio(tpt); Ei(4,:)=ratio(dpt);     // fonction de gauss3D qui calcule les degrés d'appartenance de la photo sur les quatres sous-ensembles émotionnels: joie, surprise, tristesse, dégout. function [G]=gauss(x,y,S,E) for i=1:4 a=(x-E(i,1))^2 b=(y-E(i,2))^2 G(i)=exp(-(a/(2*(S(i,1)^2)))-(b/(2*(S(i,2)^2)))) end endfunction     //transformation de la matrice P (points), en matrice R (ratios). for i=1:n R(i,:)=ratio(P(i,:)); end R;     /////////////////////////////////////////////////////////////corrige les paramêtres de la gaussienne en fonction des nouvelles données. function [S,E]= correction(x,y,Sv,Ev)// v pour vieux G=gauss(x,y,Sv,Ev)     //changement de l'espérance (ie du prototype). On le décale vers le nouveau point traité proportionnellement à son degré d'appartanance. // équivaut à un calcul de barycentre avec pour poids le degré d'appartenance du nouveau point et celui de l'ancien prototype(=1). for i=1:4 E(i,1)=(G(i)*x+Ev(i,1))/(G(i)+1) E(i,2)=(G(i)*y+Ev(i,2))/(G(i)+1) end   //changement des écart-types for i=1:4 S(i,1)=Sv(i,1) S(i,2)=Sv(i,2) end   //des degrés d'appartenance trop faibles (max<2) indiquent que le point est laissé de côté. //on veut éviter cette situation en aggrandissant les écart-types de nos fonctions pour qu'elles le captent mieux. //on augmente d'autant plus les écart-types que le groupe des degrés est faible, //mais parmi ces degrés, on augmente plus les écart-types de la fonction qui octroie au point un fort degré. if max(G)<0.2 then for i=1:4 S(i,1)=Sv(i,1)+G(i)*(1-max(G))*Sv(i,1) S(i,2)=Sv(i,2)+G(i)*(1-max(G))*Sv(i,2) end end   // des degrés d'appartenances trop forts indiquent que les fonctions vont trop se recouper. // on évite cette situation en baissant les écart-types. //on diminue d'autant plus la écart-types que le groupe de degrés est fort. //mais pour ces degrés, on diminue plus les écart-types qui correspond au plus faible. if min(G)>0.8 then for i=1:4 S(i,1)=Sv(i,1)-max(G)*(1-G(i))*Sv(i,1) S(i,2)=Sv(i,2)-max(G)*(1-G(i))*Sv(i,2) end end endfunction         ///////////////////////////////////////////////////////////////////cacul des paramêtres finaux de la gaussienne. function [Sf,Ef]= evolue (R,Si,Ei)// R matrice des ratios. Sv=Si Ev=Ei for i=1:n [S,E]=correction(R(i,1),R(i,2),Sv,Ev) Sv=S Ev=E end Sf=Sv;//écart type final Ef=Ev;//espérance finale.         x=[-1:0.1:5]'; y=[-1:0.1:5]';   for i=1:61 for j=1:61 G=gauss(x(i),y(j),Sf,Ef) Gj(i,j)=G(1); Gs(i,j)=G(2); Gt(i,j)=G(3); Gd(i,j)=G(4); end end //xset('colormap',graycolormap(128)) xbasc(); plot3d(x,x,Gj ,theta=-78,alpha=80, leg="x@y@degré appartenance",flag=[7 2 4]);//jaune plot3d(x,x,Gs,theta=-78,alpha=80, leg="x@y@degré appartenance",flag=[2 2 4]);//bleu plot3d(x,x,Gt,theta=-78,alpha=80,leg="x@y@degré appartenance",flag=[3 2 4]);//vert plot3d(x,x,Gd,theta=-78,alpha=80,leg="x@y@degré appartenance",flag=[6 2 4]);//magenta endfunction   [Sf,Ef]= evolue (R,Si,Ei)       //jpt=[159 470 341 496 252 468 240 548] //prototype de la joie initial //JR(1,:)=ratio(spt); //G=gauss(JR(1,1),JR(1,2),Sf,Ef); //Gjjp=G(1) //Gsjp=G(2) //Gtjp=G(3) //Gdjp=G(4) // //plot3d(JR(1,1),JR(1,2),Gjjp,-1) //plot3d(JR(1,1),JR(1,2),Gsjp,-1) //plot3d(JR(1,1),JR(1,2),Gtjp,-1) //plot3d(JR(1,1),JR(1,2),Gdjp,-1)
[plier la section 1.2.2]
section 1.2.3 Sources Mouth Detector
  [déplier le contenu de 1.2.3]