[{"data":1,"prerenderedAt":3412},["ShallowReactive",2],{"navigation":3,"\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb":585,"\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb__counterpart":2008,"\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb__slides":2401,"annexes-memo:\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb":2783,"annexes-slides:\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb":3103},[4,224,440],{"title":5,"path":6,"stem":7,"children":8},"SNT — Seconde","\u002Fsnt-2nde","0.snt-2nde\u002F0.index",[9,10,14,36,66,92,118,144,162,184,206],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"REVIEW pédagogique — SNT 2nde","\u002Fsnt-2nde\u002Freview","0.snt-2nde\u002FREVIEW",{"title":15,"path":16,"stem":17,"children":18},"Internet","\u002Fsnt-2nde\u002Fsa-internet","0.snt-2nde\u002Fsa-internet\u002F0.index",[19,20,24,28,32],{"title":15,"path":16,"stem":17},{"title":21,"path":22,"stem":23},"Adresses symboliques et DNS","\u002Fsnt-2nde\u002Fsa-internet\u002Fadresses-dns","0.snt-2nde\u002Fsa-internet\u002F1.adresses-dns",{"title":25,"path":26,"stem":27},"Internet et les réseaux physiques","\u002Fsnt-2nde\u002Fsa-internet\u002Freseaux-physiques","0.snt-2nde\u002Fsa-internet\u002F2.reseaux-physiques",{"title":29,"path":30,"stem":31},"Protocoles TCP\u002FIP et routage des paquets","\u002Fsnt-2nde\u002Fsa-internet\u002Ftcp-ip-routage","0.snt-2nde\u002Fsa-internet\u002F3.tcp-ip-routage",{"title":33,"path":34,"stem":35},"Réseaux pair-à-pair","\u002Fsnt-2nde\u002Fsa-internet\u002Fpair-a-pair","0.snt-2nde\u002Fsa-internet\u002F4.pair-a-pair",{"title":37,"path":38,"stem":39,"children":40},"Le Web","\u002Fsnt-2nde\u002Fsb-web","0.snt-2nde\u002Fsb-web\u002F0.index",[41,42,46,50,54,58,62],{"title":37,"path":38,"stem":39},{"title":43,"path":44,"stem":45},"Histoire du Web","\u002Fsnt-2nde\u002Fsb-web\u002Fhistoire-web","0.snt-2nde\u002Fsb-web\u002F1.histoire-web",{"title":47,"path":48,"stem":49},"URL et hypertexte","\u002Fsnt-2nde\u002Fsb-web\u002Furl-hypertexte","0.snt-2nde\u002Fsb-web\u002F2.url-hypertexte",{"title":51,"path":52,"stem":53},"HTML et CSS — le contenu et la présentation","\u002Fsnt-2nde\u002Fsb-web\u002Fhtml-css","0.snt-2nde\u002Fsb-web\u002F3.html-css",{"title":55,"path":56,"stem":57},"Client-serveur et requêtes HTTP","\u002Fsnt-2nde\u002Fsb-web\u002Fclient-serveur-http","0.snt-2nde\u002Fsb-web\u002F4.client-serveur-http",{"title":59,"path":60,"stem":61},"Moteurs de recherche","\u002Fsnt-2nde\u002Fsb-web\u002Fmoteurs-recherche","0.snt-2nde\u002Fsb-web\u002F5.moteurs-recherche",{"title":63,"path":64,"stem":65},"Sécurité du navigateur et notions juridiques","\u002Fsnt-2nde\u002Fsb-web\u002Fsecurite-droits","0.snt-2nde\u002Fsb-web\u002F6.securite-droits",{"title":67,"path":68,"stem":69,"children":70},"Les réseaux sociaux","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F0.index",[71,72,76,80,84,88],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75},"Panorama des réseaux sociaux","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fpanorama-rs","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F1.panorama-rs",{"title":77,"path":78,"stem":79},"Identité numérique et authentification","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fidentite-numerique","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F2.identite-numerique",{"title":81,"path":82,"stem":83},"Le modèle économique des réseaux sociaux","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fmodele-economique","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F3.modele-economique",{"title":85,"path":86,"stem":87},"Petit monde et graphes","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fpetit-monde-graphes","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F4.petit-monde-graphes",{"title":89,"path":90,"stem":91},"La cyberviolence","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fcyberviolence","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F5.cyberviolence",{"title":93,"path":94,"stem":95,"children":96},"Les données structurées et leur traitement","\u002Fsnt-2nde\u002Fsd-donnees-structurees","0.snt-2nde\u002Fsd-donnees-structurees\u002F0.index",[97,98,102,106,110,114],{"title":93,"path":94,"stem":95},{"title":99,"path":100,"stem":101},"Données et formats","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fdonnees-formats","0.snt-2nde\u002Fsd-donnees-structurees\u002F1.donnees-formats",{"title":103,"path":104,"stem":105},"Données structurées","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fdonnees-structurees","0.snt-2nde\u002Fsd-donnees-structurees\u002F2.donnees-structurees",{"title":107,"path":108,"stem":109},"Métadonnées","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fmetadonnees","0.snt-2nde\u002Fsd-donnees-structurees\u002F3.metadonnees",{"title":111,"path":112,"stem":113},"Traitement de tables","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Ftraitement-tables","0.snt-2nde\u002Fsd-donnees-structurees\u002F4.traitement-tables",{"title":115,"path":116,"stem":117},"Le cloud","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fcloud","0.snt-2nde\u002Fsd-donnees-structurees\u002F5.cloud",{"title":119,"path":120,"stem":121,"children":122},"Localisation, cartographie et mobilité","\u002Fsnt-2nde\u002Fse-localisation-cartographie","0.snt-2nde\u002Fse-localisation-cartographie\u002F0.index",[123,124,128,132,136,140],{"title":119,"path":120,"stem":121},{"title":125,"path":126,"stem":127},"GPS et Galileo — se situer grâce aux satellites","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fgps-galileo","0.snt-2nde\u002Fse-localisation-cartographie\u002F1.gps-galileo",{"title":129,"path":130,"stem":131},"Décoder une trame NMEA","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Ftrame-nmea","0.snt-2nde\u002Fse-localisation-cartographie\u002F2.trame-nmea",{"title":133,"path":134,"stem":135},"Cartes numériques — GeoPortail et OpenStreetMap","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fcartes-numeriques","0.snt-2nde\u002Fse-localisation-cartographie\u002F3.cartes-numeriques",{"title":137,"path":138,"stem":139},"Itinéraires et graphes","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fitineraires-graphes","0.snt-2nde\u002Fse-localisation-cartographie\u002F4.itineraires-graphes",{"title":141,"path":142,"stem":143},"Confidentialité de la position","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fconfidentialite-position","0.snt-2nde\u002Fse-localisation-cartographie\u002F5.confidentialite-position",{"title":145,"path":146,"stem":147,"children":148},"Informatique embarquée et objets connectés","\u002Fsnt-2nde\u002Fsf-info-embarquee","0.snt-2nde\u002Fsf-info-embarquee\u002F0.index",[149,150,154,158],{"title":145,"path":146,"stem":147},{"title":151,"path":152,"stem":153},"Systèmes informatiques embarqués","\u002Fsnt-2nde\u002Fsf-info-embarquee\u002Fsystemes-embarques","0.snt-2nde\u002Fsf-info-embarquee\u002F1.systemes-embarques",{"title":155,"path":156,"stem":157},"Capteurs et actionneurs","\u002Fsnt-2nde\u002Fsf-info-embarquee\u002Fcapteurs-actionneurs","0.snt-2nde\u002Fsf-info-embarquee\u002F2.capteurs-actionneurs",{"title":159,"path":160,"stem":161},"IHM et objets connectés","\u002Fsnt-2nde\u002Fsf-info-embarquee\u002Fihm-objet-connecte","0.snt-2nde\u002Fsf-info-embarquee\u002F3.ihm-objet-connecte",{"title":163,"path":164,"stem":165,"children":166},"Photographie numérique","\u002Fsnt-2nde\u002Fsg-photo-numerique","0.snt-2nde\u002Fsg-photo-numerique\u002F0.index",[167,168,172,176,180],{"title":163,"path":164,"stem":165},{"title":169,"path":170,"stem":171},"Photosites, pixels et résolution","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Fpixels-resolution","0.snt-2nde\u002Fsg-photo-numerique\u002F1.pixels-resolution",{"title":173,"path":174,"stem":175},"Les algorithmes de l'appareil photo","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Falgorithmes-photo","0.snt-2nde\u002Fsg-photo-numerique\u002F2.algorithmes-photo",{"title":177,"path":178,"stem":179},"Les métadonnées EXIF","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Fmetadonnees-exif","0.snt-2nde\u002Fsg-photo-numerique\u002F3.metadonnees-exif",{"title":181,"path":182,"stem":183},"Traiter une image en Python","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb","0.snt-2nde\u002Fsg-photo-numerique\u002F4.traitement-rgb",{"title":185,"path":186,"stem":187,"children":188},"Notions transversales de programmation","\u002Fsnt-2nde\u002Fsh-prog-notions","0.snt-2nde\u002Fsh-prog-notions\u002F0.index",[189,190,194,198,202],{"title":185,"path":186,"stem":187},{"title":191,"path":192,"stem":193},"Séquences d'instructions et variables","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Fsequences-affectations","0.snt-2nde\u002Fsh-prog-notions\u002F1.sequences-affectations",{"title":195,"path":196,"stem":197},"Instructions conditionnelles","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Fconditionnelles","0.snt-2nde\u002Fsh-prog-notions\u002F2.conditionnelles",{"title":199,"path":200,"stem":201},"Boucles bornées et non bornées","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Fboucles","0.snt-2nde\u002Fsh-prog-notions\u002F3.boucles",{"title":203,"path":204,"stem":205},"Définitions et appels de fonctions","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Ffonctions","0.snt-2nde\u002Fsh-prog-notions\u002F4.fonctions",{"title":207,"path":208,"stem":209,"children":210},"Démo des widgets MDC","\u002Fsnt-2nde\u002Fzz-demo-widgets","0.snt-2nde\u002Fzz-demo-widgets\u002F0.index",[211,212,216,220],{"title":207,"path":208,"stem":209},{"title":213,"path":214,"stem":215},"Démo statique — callouts, code, BO, illustration","\u002Fsnt-2nde\u002Fzz-demo-widgets\u002Fstatique","0.snt-2nde\u002Fzz-demo-widgets\u002F1.statique",{"title":217,"path":218,"stem":219},"Démo interactive — self-eval et python-snippet","\u002Fsnt-2nde\u002Fzz-demo-widgets\u002Finteractif","0.snt-2nde\u002Fzz-demo-widgets\u002F2.interactif",{"title":221,"path":222,"stem":223},"Démo · 14 widgets de manipulation NSI","\u002Fsnt-2nde\u002Fzz-demo-widgets\u002Fwidgets-manipulation","0.snt-2nde\u002Fzz-demo-widgets\u002F3.widgets-manipulation",{"title":225,"path":226,"stem":227,"children":228},"NSI — Première","\u002Fnsi-1ere","1.nsi-1ere\u002F0.index",[229,230,234,256,282,304,328,354,380,410],{"title":225,"path":226,"stem":227},{"title":231,"path":232,"stem":233},"Relecture pédagogique — 8 chapitres NSI 1ère (PA → PH)","\u002Fnsi-1ere\u002Freview","1.nsi-1ere\u002FREVIEW",{"title":235,"path":236,"stem":237,"children":238},"Histoire de l'informatique","\u002Fnsi-1ere\u002Fpa-histoire-info","1.nsi-1ere\u002Fpa-histoire-info\u002F0.index",[239,240,244,248,252],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"De la préantiquité aux machines à calculer","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Fpreantiquite-aux-machines","1.nsi-1ere\u002Fpa-histoire-info\u002F1.preantiquite-aux-machines",{"title":245,"path":246,"stem":247},"La machine universelle (1930-1950)","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Fmachine-universelle","1.nsi-1ere\u002Fpa-histoire-info\u002F2.machine-universelle",{"title":249,"path":250,"stem":251},"Les ordinateurs modernes (1947-1990)","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Fordinateurs-modernes","1.nsi-1ere\u002Fpa-histoire-info\u002F3.ordinateurs-modernes",{"title":253,"path":254,"stem":255},"Réseaux, Web et IA (1969 à aujourd'hui)","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Freseaux-et-web","1.nsi-1ere\u002Fpa-histoire-info\u002F4.reseaux-et-web",{"title":257,"path":258,"stem":259,"children":260},"Représentation des données — types et valeurs","\u002Fnsi-1ere\u002Fpb-types-valeurs","1.nsi-1ere\u002Fpb-types-valeurs\u002F0.index",[261,262,266,270,274,278],{"title":257,"path":258,"stem":259},{"title":263,"path":264,"stem":265},"Bases de numération et entiers positifs","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fbases-entiers-positifs","1.nsi-1ere\u002Fpb-types-valeurs\u002F1.bases-entiers-positifs",{"title":267,"path":268,"stem":269},"Entiers relatifs et complément à deux","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fentiers-relatifs","1.nsi-1ere\u002Fpb-types-valeurs\u002F2.entiers-relatifs",{"title":271,"path":272,"stem":273},"Nombres flottants et virgule flottante","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fflottants","1.nsi-1ere\u002Fpb-types-valeurs\u002F3.flottants",{"title":275,"path":276,"stem":277},"Textes et encodages — ASCII, ISO-8859-1, Unicode","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Ftextes-encodages","1.nsi-1ere\u002Fpb-types-valeurs\u002F4.textes-encodages",{"title":279,"path":280,"stem":281},"Valeurs booléennes et opérateurs logiques","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fbooleens","1.nsi-1ere\u002Fpb-types-valeurs\u002F5.booleens",{"title":283,"path":284,"stem":285,"children":286},"Représentation des données : types construits","\u002Fnsi-1ere\u002Fpc-types-construits","1.nsi-1ere\u002Fpc-types-construits\u002F0.index",[287,288,292,296,300],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291},"Tableaux et listes","\u002Fnsi-1ere\u002Fpc-types-construits\u002Ftableaux-listes","1.nsi-1ere\u002Fpc-types-construits\u002F1.tableaux-listes",{"title":293,"path":294,"stem":295},"Listes en compréhension","\u002Fnsi-1ere\u002Fpc-types-construits\u002Fcomprehension","1.nsi-1ere\u002Fpc-types-construits\u002F2.comprehension",{"title":297,"path":298,"stem":299},"Tuples et p-uplets nommés","\u002Fnsi-1ere\u002Fpc-types-construits\u002Ftuples","1.nsi-1ere\u002Fpc-types-construits\u002F3.tuples",{"title":301,"path":302,"stem":303},"Dictionnaires","\u002Fnsi-1ere\u002Fpc-types-construits\u002Fdictionnaires","1.nsi-1ere\u002Fpc-types-construits\u002F4.dictionnaires",{"title":305,"path":306,"stem":307,"children":308},"Traitement de données en tables","\u002Fnsi-1ere\u002Fpd-tables-donnees","1.nsi-1ere\u002Fpd-tables-donnees\u002F0.index",[309,310,314,318,322],{"title":305,"path":306,"stem":307},{"title":311,"path":312,"stem":313},"Tables et CSV","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ftables-csv","1.nsi-1ere\u002Fpd-tables-donnees\u002F1.tables-csv",{"title":315,"path":316,"stem":317},"Recherche et filtrage","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Frecherche","1.nsi-1ere\u002Fpd-tables-donnees\u002F2.recherche",{"title":319,"path":320,"stem":321},"Trier une table","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ftri","1.nsi-1ere\u002Fpd-tables-donnees\u002F3.tri",{"title":323,"path":324,"stem":325,"children":326},"Fusion et indexation","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation","1.nsi-1ere\u002Fpd-tables-donnees\u002F4.fusion-indexation",[327],{"title":323,"path":324,"stem":325},{"title":329,"path":330,"stem":331,"children":332},"IHM sur le Web","\u002Fnsi-1ere\u002Fpe-ihm-web","1.nsi-1ere\u002Fpe-ihm-web\u002F0.index",[333,334,338,342,346,350],{"title":329,"path":330,"stem":331},{"title":335,"path":336,"stem":337},"HTML et CSS — rappel de structure","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fhtml-css-bases","1.nsi-1ere\u002Fpe-ihm-web\u002F1.html-css-bases",{"title":339,"path":340,"stem":341},"Formulaires HTML","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fformulaires","1.nsi-1ere\u002Fpe-ihm-web\u002F2.formulaires",{"title":343,"path":344,"stem":345},"Événements JavaScript","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fevenements-js","1.nsi-1ere\u002Fpe-ihm-web\u002F3.evenements-js",{"title":347,"path":348,"stem":349},"Manipulation du DOM","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fdom-interaction","1.nsi-1ere\u002Fpe-ihm-web\u002F4.dom-interaction",{"title":351,"path":352,"stem":353},"Client, serveur et HTTP","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http","1.nsi-1ere\u002Fpe-ihm-web\u002F5.client-serveur-http",{"title":355,"path":356,"stem":357,"children":358},"Architectures matérielles et systèmes d'exploitation","\u002Fnsi-1ere\u002Fpf-archi-os","1.nsi-1ere\u002Fpf-archi-os\u002F0.index",[359,360,364,368,372,376],{"title":355,"path":356,"stem":357},{"title":361,"path":362,"stem":363},"Le modèle de von Neumann","\u002Fnsi-1ere\u002Fpf-archi-os\u002Fvon-neumann","1.nsi-1ere\u002Fpf-archi-os\u002F1.von-neumann",{"title":365,"path":366,"stem":367},"Périphériques et interface homme-machine","\u002Fnsi-1ere\u002Fpf-archi-os\u002Fperipheriques-ihm","1.nsi-1ere\u002Fpf-archi-os\u002F2.peripheriques-ihm",{"title":369,"path":370,"stem":371},"Les systèmes d'exploitation","\u002Fnsi-1ere\u002Fpf-archi-os\u002Fsystemes-exploitation","1.nsi-1ere\u002Fpf-archi-os\u002F3.systemes-exploitation",{"title":373,"path":374,"stem":375},"Linux et le shell","\u002Fnsi-1ere\u002Fpf-archi-os\u002Flinux-shell","1.nsi-1ere\u002Fpf-archi-os\u002F4.linux-shell",{"title":377,"path":378,"stem":379},"Réseaux et protocoles","\u002Fnsi-1ere\u002Fpf-archi-os\u002Freseaux","1.nsi-1ere\u002Fpf-archi-os\u002F5.reseaux",{"title":381,"path":382,"stem":383,"children":384},"Langages et programmation","\u002Fnsi-1ere\u002Fpg-langages-prog","1.nsi-1ere\u002Fpg-langages-prog\u002F0.index",[385,386,390,394,398,402,406],{"title":381,"path":382,"stem":383},{"title":387,"path":388,"stem":389},"Diversité et unité des langages de programmation","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fdiversite-langages","1.nsi-1ere\u002Fpg-langages-prog\u002F1.diversite-langages",{"title":391,"path":392,"stem":393},"Constructions élémentaires","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fconstructions-elementaires","1.nsi-1ere\u002Fpg-langages-prog\u002F2.constructions-elementaires",{"title":395,"path":396,"stem":397},"Fonctions","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Ffonctions","1.nsi-1ere\u002Fpg-langages-prog\u002F3.fonctions",{"title":399,"path":400,"stem":401},"Spécification d'une fonction","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fspecification","1.nsi-1ere\u002Fpg-langages-prog\u002F4.specification",{"title":403,"path":404,"stem":405},"Mise au point des programmes","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fmise-au-point","1.nsi-1ere\u002Fpg-langages-prog\u002F5.mise-au-point",{"title":407,"path":408,"stem":409},"Utilisation de bibliothèques","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fbibliotheques","1.nsi-1ere\u002Fpg-langages-prog\u002F6.bibliotheques",{"title":411,"path":412,"stem":413,"children":414},"Algorithmique","\u002Fnsi-1ere\u002Fph-algorithmique","1.nsi-1ere\u002Fph-algorithmique\u002F0.index",[415,416,420,424,428,432,436],{"title":411,"path":412,"stem":413},{"title":417,"path":418,"stem":419},"Parcours séquentiel d'un tableau","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fparcours-sequentiel","1.nsi-1ere\u002Fph-algorithmique\u002F1.parcours-sequentiel",{"title":421,"path":422,"stem":423},"Bases de la complexité","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fcomplexite-bases","1.nsi-1ere\u002Fph-algorithmique\u002F2.complexite-bases",{"title":425,"path":426,"stem":427},"Tris par sélection et par insertion","\u002Fnsi-1ere\u002Fph-algorithmique\u002Ftris","1.nsi-1ere\u002Fph-algorithmique\u002F3.tris",{"title":429,"path":430,"stem":431},"Recherche dichotomique","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fdichotomie","1.nsi-1ere\u002Fph-algorithmique\u002F4.dichotomie",{"title":433,"path":434,"stem":435},"Algorithmes gloutons","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fgloutons","1.nsi-1ere\u002Fph-algorithmique\u002F5.gloutons",{"title":437,"path":438,"stem":439},"Les k plus proches voisins (k-NN)","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fknn","1.nsi-1ere\u002Fph-algorithmique\u002F6.knn",{"title":441,"path":442,"stem":443,"children":444},"NSI — Terminale","\u002Fnsi-tale","2.nsi-tale\u002F0.index",[445,446,450,476,498,536,560],{"title":441,"path":442,"stem":443},{"title":447,"path":448,"stem":449},"Review pédagogique — chapitres NSI Terminale (TA, TB, TC, TD, TE)","\u002Fnsi-tale\u002Freview","2.nsi-tale\u002FREVIEW",{"title":451,"path":452,"stem":453,"children":454},"Structures de données","\u002Fnsi-tale\u002Fta-structures-donnees","2.nsi-tale\u002Fta-structures-donnees\u002F0.index",[455,456,460,464,468,472],{"title":451,"path":452,"stem":453},{"title":457,"path":458,"stem":459},"Objet, classe, interface","\u002Fnsi-tale\u002Fta-structures-donnees\u002Finterface-implementation","2.nsi-tale\u002Fta-structures-donnees\u002F1.interface-implementation",{"title":461,"path":462,"stem":463},"Implémenter une structure — l'exemple de la file FIFO","\u002Fnsi-tale\u002Fta-structures-donnees\u002Fimplementer-une-structure","2.nsi-tale\u002Fta-structures-donnees\u002F2.implementer-une-structure",{"title":465,"path":466,"stem":467},"Listes, piles, files, dictionnaires","\u002Fnsi-tale\u002Fta-structures-donnees\u002Flistes-piles-files-dict","2.nsi-tale\u002Fta-structures-donnees\u002F3.listes-piles-files-dict",{"title":469,"path":470,"stem":471},"Arbres binaires","\u002Fnsi-tale\u002Fta-structures-donnees\u002Farbres-binaires","2.nsi-tale\u002Fta-structures-donnees\u002F4.arbres-binaires",{"title":473,"path":474,"stem":475},"Graphes","\u002Fnsi-tale\u002Fta-structures-donnees\u002Fgraphes","2.nsi-tale\u002Fta-structures-donnees\u002F5.graphes",{"title":477,"path":478,"stem":479,"children":480},"Bases de données","\u002Fnsi-tale\u002Ftb-bases-de-donnees","2.nsi-tale\u002Ftb-bases-de-donnees\u002F0.index",[481,482,486,490,494],{"title":477,"path":478,"stem":479},{"title":483,"path":484,"stem":485},"Le modèle relationnel","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fmodele-relationnel","2.nsi-tale\u002Ftb-bases-de-donnees\u002F1.modele-relationnel",{"title":487,"path":488,"stem":489},"Bases de données relationnelles et anomalies de schéma","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fbase-relationnelle","2.nsi-tale\u002Ftb-bases-de-donnees\u002F2.base-relationnelle",{"title":491,"path":492,"stem":493},"Le langage SQL","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fsql","2.nsi-tale\u002Ftb-bases-de-donnees\u002F3.sql",{"title":495,"path":496,"stem":497},"Les systèmes de gestion de bases de données","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fsgbd","2.nsi-tale\u002Ftb-bases-de-donnees\u002F4.sgbd",{"title":499,"path":500,"stem":501,"children":502},"Architectures matérielles, systèmes d'exploitation et réseaux","\u002Fnsi-tale\u002Ftc-archi-os-reseaux","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F0.index",[503,504,508,512,516,520,524,528,532],{"title":499,"path":500,"stem":501},{"title":505,"path":506,"stem":507},"Le système sur puce (SoC)","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fsysteme-sur-puce","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F1.systeme-sur-puce",{"title":509,"path":510,"stem":511},"Processus et ordonnancement par l'OS","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fprocessus-os","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F2.processus-os",{"title":513,"path":514,"stem":515},"L'interblocage (deadlock)","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Finterblocage","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F3.interblocage",{"title":517,"path":518,"stem":519},"Principes du routage","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Froutage-principes","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F4.routage-principes",{"title":521,"path":522,"stem":523},"Protocoles de routage RIP et OSPF","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fprotocoles-rip-ospf","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F5.protocoles-rip-ospf",{"title":525,"path":526,"stem":527},"Chiffrement symétrique","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fchiffrement-symetrique","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F6.chiffrement-symetrique",{"title":529,"path":530,"stem":531},"Chiffrement asymétrique","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fchiffrement-asymetrique","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F7.chiffrement-asymetrique",{"title":533,"path":534,"stem":535},"HTTPS — l'échange de clé symétrique","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fhttps-tls","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F8.https-tls",{"title":381,"path":537,"stem":538,"children":539},"\u002Fnsi-tale\u002Ftd-langages-prog","2.nsi-tale\u002Ftd-langages-prog\u002F0.index",[540,541,544,548,552,556],{"title":381,"path":537,"stem":538},{"title":403,"path":542,"stem":543},"\u002Fnsi-tale\u002Ftd-langages-prog\u002Fmise-au-point","2.nsi-tale\u002Ftd-langages-prog\u002F1.mise-au-point",{"title":545,"path":546,"stem":547},"Modularité","\u002Fnsi-tale\u002Ftd-langages-prog\u002Fmodularite","2.nsi-tale\u002Ftd-langages-prog\u002F2.modularite",{"title":549,"path":550,"stem":551},"Récursivité","\u002Fnsi-tale\u002Ftd-langages-prog\u002Frecursivite","2.nsi-tale\u002Ftd-langages-prog\u002F3.recursivite",{"title":553,"path":554,"stem":555},"Paradigmes de programmation","\u002Fnsi-tale\u002Ftd-langages-prog\u002Fparadigmes","2.nsi-tale\u002Ftd-langages-prog\u002F4.paradigmes",{"title":557,"path":558,"stem":559},"Programme comme donnée — calculabilité et indécidabilité","\u002Fnsi-tale\u002Ftd-langages-prog\u002Fprogramme-comme-donnee","2.nsi-tale\u002Ftd-langages-prog\u002F5.programme-comme-donnee",{"title":411,"path":561,"stem":562,"children":563},"\u002Fnsi-tale\u002Fte-algorithmique","2.nsi-tale\u002Fte-algorithmique\u002F0.index",[564,565,569,573,577,581],{"title":411,"path":561,"stem":562},{"title":566,"path":567,"stem":568},"Algorithmes sur les arbres binaires","\u002Fnsi-tale\u002Fte-algorithmique\u002Farbres-binaires-algos","2.nsi-tale\u002Fte-algorithmique\u002F1.arbres-binaires-algos",{"title":570,"path":571,"stem":572},"Parcours de graphes — DFS, BFS, cycles, chemins","\u002Fnsi-tale\u002Fte-algorithmique\u002Fgraphes-parcours","2.nsi-tale\u002Fte-algorithmique\u002F2.graphes-parcours",{"title":574,"path":575,"stem":576},"Diviser pour régner","\u002Fnsi-tale\u002Fte-algorithmique\u002Fdiviser-pour-regner","2.nsi-tale\u002Fte-algorithmique\u002F3.diviser-pour-regner",{"title":578,"path":579,"stem":580},"Programmation dynamique","\u002Fnsi-tale\u002Fte-algorithmique\u002Fprogrammation-dynamique","2.nsi-tale\u002Fte-algorithmique\u002F4.programmation-dynamique",{"title":582,"path":583,"stem":584},"Recherche textuelle — l'algorithme de Boyer-Moore","\u002Fnsi-tale\u002Fte-algorithmique\u002Frecherche-textuelle","2.nsi-tale\u002Fte-algorithmique\u002F5.recherche-textuelle",{"id":586,"title":181,"bo":587,"body":589,"description":1989,"eval":1990,"extension":1991,"labo":1990,"meta":1992,"navigation":982,"path":182,"quizzes":1993,"readingTime":934,"seo":2006,"stem":183,"tp":1990,"__hash__":2007},"cours\u002F0.snt-2nde\u002Fsg-photo-numerique\u002F4.traitement-rgb.md",[588],"SG04",{"type":590,"value":591,"toc":1977},"minimark",[592,597,606,613,616,620,623,651,667,686,721,725,728,762,769,773,780,890,897,920,1059,1108,1112,1123,1130,1309,1315,1442,1485,1490,1494,1510,1588,1591,1614,1618,1643,1665,1697,1701,1716,1918,1922,1962,1966,1973],[593,594,596],"h2",{"id":595},"introduction","Introduction",[598,599,600,601,605],"p",{},"Un filtre Instagram, une retouche dans l'application Photos de votre\ntéléphone, un effet « noir et blanc » dans Snapchat : derrière chacun de ces\neffets, un programme ",[602,603,604],"strong",{},"modifie les couleurs des pixels"," un par un. Ce\nn'est pas magique — c'est trois petits calculs sur trois petits nombres,\nrépétés très vite.",[598,607,608,609,612],{},"Dans ce cours, vous allez écrire vous-même les calculs qui transforment\nune couleur. On reste à l'échelle d'",[602,610,611],{},"un seul pixel à la fois"," : c'est tout\nce qu'il faut pour comprendre comment fonctionne une retouche.",[614,615],"bo-ref",{"code":588},[593,617,619],{"id":618},"une-image-cest-une-grille-de-jauges","Une image, c'est une grille de jauges",[598,621,622],{},"Avant d'écrire du code, posons l'image mentale.",[624,625,626,645],"note",{},[598,627,628,629,632,633,636,637,640,641,644],{},"Une image numérique est une ",[602,630,631],{},"grille de petites cases"," — les pixels.\nChaque case porte ",[602,634,635],{},"trois jauges réglables"," : une rouge, une verte, une\nbleue. Chaque jauge va de ",[602,638,639],{},"0"," (éteinte) à ",[602,642,643],{},"255"," (à fond).",[598,646,647,650],{},[602,648,649],{},"Modifier une image, c'est tourner les jauges",", case par case.",[598,652,653,654,658,659,662,663,666],{},"Une couleur de pixel s'écrit alors comme un trio de nombres. Par exemple\n",[655,656,657],"code",{},"(255, 0, 0)"," signifie « jauge rouge à fond, vert à zéro, bleu à zéro » —\nc'est du rouge pur. ",[655,660,661],{},"(0, 0, 0)"," est noir (toutes les jauges éteintes),\n",[655,664,665],{},"(255, 255, 255)"," est blanc (toutes à fond).",[598,668,669,670,673,674,677,678,681,682,685],{},"Dans tout ce cours, ",[602,671,672],{},"un pixel = trois nombres"," que l'on appelle ",[655,675,676],{},"r",", ",[655,679,680],{},"g",",\n",[655,683,684],{},"b"," (pour rouge, vert, bleu). Aucune autre notation à connaître.",[687,688,692,703],"self-eval-qcm",{"correct":689,"explanation":690,"slug":691},"1","La jauge verte est à fond (255), les deux autres sont éteintes (0). C'est du vert pur.","traitement-rgb-c1",[693,694,696],"template",{"v-slot:question":695},"",[598,697,698,699,702],{},"Que représente le pixel ",[655,700,701],{},"(0, 255, 0)"," ?",[693,704,705],{"v-slot:choices":695},[706,707,708,712,715,718],"ul",{},[709,710,711],"li",{},"Du rouge pur",[709,713,714],{},"Du vert pur",[709,716,717],{},"Du bleu pur",[709,719,720],{},"Du noir",[593,722,724],{"id":723},"transformer-un-pixel-lidée-générale","Transformer un pixel — l'idée générale",[598,726,727],{},"Un programme de retouche fait toujours la même chose pour un pixel :",[729,730,731,744,756],"ol",{},[709,732,733,736,737,677,739,677,741,743],{},[602,734,735],{},"Lire"," ses trois nombres ",[655,738,676],{},[655,740,680],{},[655,742,684],{},".",[709,745,746,749,750,677,752,677,754,743],{},[602,747,748],{},"Calculer"," trois nouveaux nombres à partir de ",[655,751,676],{},[655,753,680],{},[655,755,684],{},[709,757,758,761],{},[602,759,760],{},"Renvoyer"," ces trois nouveaux nombres : ce sera la nouvelle couleur du pixel.",[598,763,764,765,768],{},"Toute la créativité d'une retouche tient dans ",[602,766,767],{},"l'étape 2"," — la formule\nde calcul. Une formule = un effet. Voyons trois exemples au programme.",[593,770,772],{"id":771},"exemple-1-le-négatif","Exemple 1 — Le négatif",[598,774,775,776,779],{},"L'effet ",[602,777,778],{},"négatif"," inverse l'intensité de chaque jauge : ce qui était à\nfond passe à zéro, ce qui était à zéro passe à fond. La formule est très\nsimple, et c'est la même pour les trois jauges :",[598,781,782],{},[783,784,787,823],"span",{"className":785},[786],"katex",[783,788,791],{"className":789},[790],"katex-mathml",[792,793,795],"math",{"xmlns":794},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[796,797,798,818],"semantics",{},[799,800,801,805,809,812,815],"mrow",{},[802,803,804],"mtext",{},"nouvelle valeur",[806,807,808],"mo",{},"=",[810,811,643],"mn",{},[806,813,814],{},"−",[802,816,817],{},"ancienne valeur",[819,820,822],"annotation",{"encoding":821},"application\u002Fx-tex","\\text{nouvelle valeur} = 255 - \\text{ancienne valeur}",[783,824,828,857,878],{"className":825,"ariaHidden":827},[826],"katex-html","true",[783,829,832,837,845,850,854],{"className":830},[831],"base",[783,833],{"className":834,"style":836},[835],"strut","height:0.6944em;",[783,838,842],{"className":839},[840,841],"mord","text",[783,843,804],{"className":844},[840],[783,846],{"className":847,"style":849},[848],"mspace","margin-right:0.2778em;",[783,851,808],{"className":852},[853],"mrel",[783,855],{"className":856,"style":849},[848],[783,858,860,864,867,871,875],{"className":859},[831],[783,861],{"className":862,"style":863},[835],"height:0.7278em;vertical-align:-0.0833em;",[783,865,643],{"className":866},[840],[783,868],{"className":869,"style":870},[848],"margin-right:0.2222em;",[783,872,814],{"className":873},[874],"mbin",[783,876],{"className":877,"style":870},[848],[783,879,881,884],{"className":880},[831],[783,882],{"className":883,"style":836},[835],[783,885,887],{"className":886},[840,841],[783,888,817],{"className":889},[840],[598,891,892,893,896],{},"En Python, on écrit cette transformation comme une fonction qui prend les\ntrois nombres ",[655,894,895],{},"r, g, b"," et renvoie les trois nouveaux nombres :",[624,898,899],{},[598,900,901,904,905,908,909,912,913,916,917,743],{},[602,902,903],{},"Renvoyer plusieurs valeurs."," Une fonction Python peut renvoyer plusieurs\nvaleurs en les séparant par des virgules dans le ",[655,906,907],{},"return",". À l'appel, Python\nles regroupe en un ",[602,910,911],{},"trio"," affiché entre parenthèses, par exemple\n",[655,914,915],{},"(245, 55, 205)",". C'est une notation pratique pour un pixel ",[655,918,919],{},"(r, g, b)",[921,922,923],"python-snippet",{},[924,925,929],"pre",{"className":926,"code":927,"language":928,"meta":695,"style":695},"language-python shiki shiki-themes github-light github-light github-dark","def negatif(r, g, b):\n    return 255 - r, 255 - g, 255 - b\n\nprint(negatif(10, 200, 50))    # (245, 55, 205)\nprint(negatif(0, 0, 0))        # (255, 255, 255) — noir → blanc\nprint(negatif(255, 255, 255))  # (0, 0, 0)       — blanc → noir\n","python",[655,930,931,947,977,984,1013,1036],{"__ignoreMap":695},[783,932,935,939,943],{"class":933,"line":934},"line",1,[783,936,938],{"class":937},"s8jYJ","def",[783,940,942],{"class":941},"snPdu"," negatif",[783,944,946],{"class":945},"sxrX7","(r, g, b):\n",[783,948,950,953,957,960,963,965,967,970,972,974],{"class":933,"line":949},2,[783,951,952],{"class":937},"    return",[783,954,956],{"class":955},"sBjJW"," 255",[783,958,959],{"class":937}," -",[783,961,962],{"class":945}," r, ",[783,964,643],{"class":955},[783,966,959],{"class":937},[783,968,969],{"class":945}," g, ",[783,971,643],{"class":955},[783,973,959],{"class":937},[783,975,976],{"class":945}," b\n",[783,978,980],{"class":933,"line":979},3,[783,981,983],{"emptyLinePlaceholder":982},true,"\n",[783,985,987,990,993,996,998,1001,1003,1006,1009],{"class":933,"line":986},4,[783,988,989],{"class":955},"print",[783,991,992],{"class":945},"(negatif(",[783,994,995],{"class":955},"10",[783,997,677],{"class":945},[783,999,1000],{"class":955},"200",[783,1002,677],{"class":945},[783,1004,1005],{"class":955},"50",[783,1007,1008],{"class":945},"))    ",[783,1010,1012],{"class":1011},"sCsY4","# (245, 55, 205)\n",[783,1014,1016,1018,1020,1022,1024,1026,1028,1030,1033],{"class":933,"line":1015},5,[783,1017,989],{"class":955},[783,1019,992],{"class":945},[783,1021,639],{"class":955},[783,1023,677],{"class":945},[783,1025,639],{"class":955},[783,1027,677],{"class":945},[783,1029,639],{"class":955},[783,1031,1032],{"class":945},"))        ",[783,1034,1035],{"class":1011},"# (255, 255, 255) — noir → blanc\n",[783,1037,1039,1041,1043,1045,1047,1049,1051,1053,1056],{"class":933,"line":1038},6,[783,1040,989],{"class":955},[783,1042,992],{"class":945},[783,1044,643],{"class":955},[783,1046,677],{"class":945},[783,1048,643],{"class":955},[783,1050,677],{"class":945},[783,1052,643],{"class":955},[783,1054,1055],{"class":945},"))  ",[783,1057,1058],{"class":1011},"# (0, 0, 0)       — blanc → noir\n",[1060,1061,1062,1065],"tip",{},[598,1063,1064],{},"Lecture du code, ligne par ligne :",[706,1066,1067,1087,1097],{},[709,1068,1069,1072,1073,1076,1077,1080,1081,677,1083,677,1085,743],{},[655,1070,1071],{},"def negatif(r, g, b):"," — on ",[602,1074,1075],{},"définit"," une fonction ",[655,1078,1079],{},"negatif"," qui\nattend trois nombres ",[655,1082,676],{},[655,1084,680],{},[655,1086,684],{},[709,1088,1089,1092,1093,1096],{},[655,1090,1091],{},"return 255 - r, 255 - g, 255 - b"," — la fonction ",[602,1094,1095],{},"renvoie"," les trois\nnouvelles valeurs, dans l'ordre rouge, vert, bleu.",[709,1098,1099,1072,1102,1105,1106,743],{},[655,1100,1101],{},"print(negatif(10, 200, 50))",[602,1103,1104],{},"appelle"," la fonction avec un pixel\nrougeâtre. Python répond ",[655,1107,915],{},[593,1109,1111],{"id":1110},"exemple-2-les-niveaux-de-gris","Exemple 2 — Les niveaux de gris",[598,1113,1114,1115,1118,1119,1122],{},"Pour obtenir une ",[602,1116,1117],{},"nuance de gris",", les trois jauges doivent être\n",[602,1120,1121],{},"réglées sur la même valeur",". Plus la valeur est basse, plus le gris\nest sombre ; plus elle est haute, plus il est clair.",[598,1124,1125,1126,1129],{},"Quelle valeur commune choisir ? La plus simple est la ",[602,1127,1128],{},"moyenne"," des\ntrois composantes du pixel d'origine :",[598,1131,1132],{},[783,1133,1135,1172],{"className":1134},[786],[783,1136,1138],{"className":1137},[790],[792,1139,1140],{"xmlns":794},[796,1141,1142,1169],{},[799,1143,1144,1147,1149],{},[802,1145,1146],{},"moy",[806,1148,808],{},[1150,1151,1152,1166],"mfrac",{},[799,1153,1154,1157,1160,1162,1164],{},[1155,1156,676],"mi",{},[806,1158,1159],{},"+",[1155,1161,680],{},[806,1163,1159],{},[1155,1165,684],{},[810,1167,1168],{},"3",[819,1170,1171],{"encoding":821},"\\text{moy} = \\frac{r + g + b}{3}",[783,1173,1175,1197],{"className":1174,"ariaHidden":827},[826],[783,1176,1178,1182,1188,1191,1194],{"className":1177},[831],[783,1179],{"className":1180,"style":1181},[835],"height:0.625em;vertical-align:-0.1944em;",[783,1183,1185],{"className":1184},[840,841],[783,1186,1146],{"className":1187},[840],[783,1189],{"className":1190,"style":849},[848],[783,1192,808],{"className":1193},[853],[783,1195],{"className":1196,"style":849},[848],[783,1198,1200,1204],{"className":1199},[831],[783,1201],{"className":1202,"style":1203},[835],"height:1.2772em;vertical-align:-0.345em;",[783,1205,1207,1212,1305],{"className":1206},[840],[783,1208],{"className":1209},[1210,1211],"mopen","nulldelimiter",[783,1213,1215],{"className":1214},[1150],[783,1216,1220,1296],{"className":1217},[1218,1219],"vlist-t","vlist-t2",[783,1221,1224,1291],{"className":1222},[1223],"vlist-r",[783,1225,1229,1250,1261],{"className":1226,"style":1228},[1227],"vlist","height:0.9322em;",[783,1230,1232,1237],{"style":1231},"top:-2.655em;",[783,1233],{"className":1234,"style":1236},[1235],"pstrut","height:3em;",[783,1238,1244],{"className":1239},[1240,1241,1242,1243],"sizing","reset-size6","size3","mtight",[783,1245,1247],{"className":1246},[840,1243],[783,1248,1168],{"className":1249},[840,1243],[783,1251,1253,1256],{"style":1252},"top:-3.23em;",[783,1254],{"className":1255,"style":1236},[1235],[783,1257],{"className":1258,"style":1260},[1259],"frac-line","border-bottom-width:0.04em;",[783,1262,1264,1267],{"style":1263},"top:-3.4461em;",[783,1265],{"className":1266,"style":1236},[1235],[783,1268,1270],{"className":1269},[1240,1241,1242,1243],[783,1271,1273,1278,1281,1285,1288],{"className":1272},[840,1243],[783,1274,676],{"className":1275,"style":1277},[840,1276,1243],"mathnormal","margin-right:0.0278em;",[783,1279,1159],{"className":1280},[874,1243],[783,1282,680],{"className":1283,"style":1284},[840,1276,1243],"margin-right:0.0359em;",[783,1286,1159],{"className":1287},[874,1243],[783,1289,684],{"className":1290},[840,1276,1243],[783,1292,1295],{"className":1293},[1294],"vlist-s","​",[783,1297,1299],{"className":1298},[1223],[783,1300,1303],{"className":1301,"style":1302},[1227],"height:0.345em;",[783,1304],{},[783,1306],{"className":1307},[1308,1211],"mclose",[598,1310,1311,1312,743],{},"Le pixel transformé devient ",[655,1313,1314],{},"(moy, moy, moy)",[921,1316,1317],{},[924,1318,1320],{"className":926,"code":1319,"language":928,"meta":695,"style":695},"def gris(r, g, b):\n    moy = (r + g + b) \u002F\u002F 3   # \u002F\u002F = division entière\n    return moy, moy, moy\n\nprint(gris(255, 0, 0))      # (85, 85, 85)    — rouge devient gris moyen\nprint(gris(100, 100, 100))  # (100, 100, 100) — déjà gris, inchangé\nprint(gris(200, 50, 80))    # (110, 110, 110)\n",[655,1321,1322,1331,1363,1370,1374,1397,1419],{"__ignoreMap":695},[783,1323,1324,1326,1329],{"class":933,"line":934},[783,1325,938],{"class":937},[783,1327,1328],{"class":941}," gris",[783,1330,946],{"class":945},[783,1332,1333,1336,1338,1341,1343,1346,1348,1351,1354,1357,1360],{"class":933,"line":949},[783,1334,1335],{"class":945},"    moy ",[783,1337,808],{"class":937},[783,1339,1340],{"class":945}," (r ",[783,1342,1159],{"class":937},[783,1344,1345],{"class":945}," g ",[783,1347,1159],{"class":937},[783,1349,1350],{"class":945}," b) ",[783,1352,1353],{"class":937},"\u002F\u002F",[783,1355,1356],{"class":955}," 3",[783,1358,1359],{"class":1011},"   #",[783,1361,1362],{"class":1011}," \u002F\u002F = division entière\n",[783,1364,1365,1367],{"class":933,"line":979},[783,1366,952],{"class":937},[783,1368,1369],{"class":945}," moy, moy, moy\n",[783,1371,1372],{"class":933,"line":986},[783,1373,983],{"emptyLinePlaceholder":982},[783,1375,1376,1378,1381,1383,1385,1387,1389,1391,1394],{"class":933,"line":1015},[783,1377,989],{"class":955},[783,1379,1380],{"class":945},"(gris(",[783,1382,643],{"class":955},[783,1384,677],{"class":945},[783,1386,639],{"class":955},[783,1388,677],{"class":945},[783,1390,639],{"class":955},[783,1392,1393],{"class":945},"))      ",[783,1395,1396],{"class":1011},"# (85, 85, 85)    — rouge devient gris moyen\n",[783,1398,1399,1401,1403,1406,1408,1410,1412,1414,1416],{"class":933,"line":1038},[783,1400,989],{"class":955},[783,1402,1380],{"class":945},[783,1404,1405],{"class":955},"100",[783,1407,677],{"class":945},[783,1409,1405],{"class":955},[783,1411,677],{"class":945},[783,1413,1405],{"class":955},[783,1415,1055],{"class":945},[783,1417,1418],{"class":1011},"# (100, 100, 100) — déjà gris, inchangé\n",[783,1420,1422,1424,1426,1428,1430,1432,1434,1437,1439],{"class":933,"line":1421},7,[783,1423,989],{"class":955},[783,1425,1380],{"class":945},[783,1427,1000],{"class":955},[783,1429,677],{"class":945},[783,1431,1005],{"class":955},[783,1433,677],{"class":945},[783,1435,1436],{"class":955},"80",[783,1438,1008],{"class":945},[783,1440,1441],{"class":1011},"# (110, 110, 110)\n",[624,1443,1444,1458,1479],{},[598,1445,1446,1447,1449,1450,1453,1454,1457],{},"On utilise ",[655,1448,1353],{}," (deux barres obliques) pour la ",[602,1451,1452],{},"division entière"," : on\nveut un nombre entier entre 0 et 255, pas un nombre à virgule. La\ndifférence avec ",[655,1455,1456],{},"\u002F"," (une seule barre, division classique) :",[706,1459,1460,1470],{},[709,1461,1462,1465,1466,1469],{},[655,1463,1464],{},"7 \u002F 3"," vaut ",[655,1467,1468],{},"2.333…"," (un nombre à virgule),",[709,1471,1472,1465,1475,1478],{},[655,1473,1474],{},"7 \u002F\u002F 3",[655,1476,1477],{},"2"," (on garde uniquement la partie entière).",[598,1480,1481,1482,1484],{},"Comme une jauge RGB ne peut être qu'un entier de 0 à 255, c'est ",[655,1483,1353],{}," qu'il\nnous faut ici.",[1060,1486,1487],{},[598,1488,1489],{},"La moyenne arithmétique est l'approche la plus simple. Des formules plus\nfidèles à la perception humaine pondèrent davantage le vert (notre œil y\nest plus sensible). À ce niveau, la version simple suffit.",[593,1491,1493],{"id":1492},"exemple-3-garder-uniquement-le-rouge","Exemple 3 — Garder uniquement le rouge",[598,1495,1496,1497,1500,1501,1503,1504,1506,1507,1509],{},"Un troisième effet classique : ",[602,1498,1499],{},"filtrer une couche"," en éteignant deux\ndes trois jauges. Pour ne garder que le rouge, on remet ",[655,1502,680],{}," et ",[655,1505,684],{}," à zéro\net on laisse ",[655,1508,676],{}," tel quel.",[921,1511,1512],{},[924,1513,1515],{"className":926,"code":1514,"language":928,"meta":695,"style":695},"def filtre_rouge(r, g, b):\n    return r, 0, 0\n\nprint(filtre_rouge(200, 150, 50))   # (200, 0, 0)\nprint(filtre_rouge(100, 100, 100))  # (100, 0, 0)\n",[655,1516,1517,1526,1539,1543,1567],{"__ignoreMap":695},[783,1518,1519,1521,1524],{"class":933,"line":934},[783,1520,938],{"class":937},[783,1522,1523],{"class":941}," filtre_rouge",[783,1525,946],{"class":945},[783,1527,1528,1530,1532,1534,1536],{"class":933,"line":949},[783,1529,952],{"class":937},[783,1531,962],{"class":945},[783,1533,639],{"class":955},[783,1535,677],{"class":945},[783,1537,1538],{"class":955},"0\n",[783,1540,1541],{"class":933,"line":979},[783,1542,983],{"emptyLinePlaceholder":982},[783,1544,1545,1547,1550,1552,1554,1557,1559,1561,1564],{"class":933,"line":986},[783,1546,989],{"class":955},[783,1548,1549],{"class":945},"(filtre_rouge(",[783,1551,1000],{"class":955},[783,1553,677],{"class":945},[783,1555,1556],{"class":955},"150",[783,1558,677],{"class":945},[783,1560,1005],{"class":955},[783,1562,1563],{"class":945},"))   ",[783,1565,1566],{"class":1011},"# (200, 0, 0)\n",[783,1568,1569,1571,1573,1575,1577,1579,1581,1583,1585],{"class":933,"line":1015},[783,1570,989],{"class":955},[783,1572,1549],{"class":945},[783,1574,1405],{"class":955},[783,1576,677],{"class":945},[783,1578,1405],{"class":955},[783,1580,677],{"class":945},[783,1582,1405],{"class":955},[783,1584,1055],{"class":945},[783,1586,1587],{"class":1011},"# (100, 0, 0)\n",[598,1589,1590],{},"Sur une image entière, l'effet ressemble à une « lampe rouge » qui ne\nlaisse passer que cette couleur — un peu comme la lumière rouge d'un\nlaboratoire de photographie argentique.",[598,1592,1593,1594,1597,1598,1600,1601,1604,1605,1597,1608,1600,1610,1613],{},"Par symétrie, on obtient un ",[602,1595,1596],{},"filtre vert"," en gardant seulement ",[655,1599,680],{},"\n(formule ",[655,1602,1603],{},"(0, g, 0)",") et un ",[602,1606,1607],{},"filtre bleu",[655,1609,684],{},[655,1611,1612],{},"(0, 0, b)",").",[593,1615,1617],{"id":1616},"vérification-de-compréhension","Vérification de compréhension",[687,1619,1622,1627],{"correct":689,"explanation":1620,"slug":1621},"Le négatif inverse l'intensité : 0 devient 255 (et inversement). La formule est `255 - ancien` pour chaque composante.","traitement-rgb-c2",[693,1623,1624],{"v-slot:question":695},[598,1625,1626],{},"Quelle opération transforme une composante en sa version « négatif » ?",[693,1628,1629],{"v-slot:choices":695},[706,1630,1631,1634,1637,1640],{},[709,1632,1633],{},"nouveau = 255 + ancien",[709,1635,1636],{},"nouveau = 255 - ancien",[709,1638,1639],{},"nouveau = ancien \u002F 255",[709,1641,1642],{},"nouveau = -ancien",[687,1644,1647,1652],{"correct":689,"explanation":1645,"slug":1646},"Un gris pur a r = g = b. Selon la valeur commune, c'est un gris plus ou moins clair (0 = noir, 255 = blanc).","traitement-rgb-c3",[693,1648,1649],{"v-slot:question":695},[598,1650,1651],{},"Dans un pixel en niveau de gris, les trois composantes RGB sont :",[693,1653,1654],{"v-slot:choices":695},[706,1655,1656,1659,1662],{},[709,1657,1658],{},"toutes nulles",[709,1660,1661],{},"toutes égales entre elles",[709,1663,1664],{},"toutes à 255",[687,1666,1669,1681],{"correct":639,"explanation":1667,"slug":1668},"On garde la composante rouge `r = 120` et on remet vert et bleu à zéro.","traitement-rgb-c4",[693,1670,1671],{"v-slot:question":695},[598,1672,1673,1674,1677,1678,702],{},"Quel pixel obtient-on en appliquant ",[655,1675,1676],{},"filtre_rouge"," à ",[655,1679,1680],{},"(120, 200, 80)",[693,1682,1683],{"v-slot:choices":695},[706,1684,1685,1688,1691,1694],{},[709,1686,1687],{},"(120, 0, 0)",[709,1689,1690],{},"(0, 200, 80)",[709,1692,1693],{},"(120, 200, 0)",[709,1695,1696],{},"(200, 0, 0)",[593,1698,1700],{"id":1699},"et-sur-une-image-entière","Et sur une image entière ?",[598,1702,1703,1704,1707,1708,1711,1712,1715],{},"Tout ce que vous venez d'écrire travaille sur ",[602,1705,1706],{},"un seul pixel",". Pour\nappliquer la transformation à une ",[602,1709,1710],{},"image complète",", le principe est\ntoujours le même : le programme ",[602,1713,1714],{},"parcourt toutes les cases de la grille","\net applique la fonction à chacune.",[1717,1718,1721,1738,1911],"card",{"icon":1719,"title":1720},"i-lucide-play","Démo enseignante",[598,1722,1723,1724,1726,1727,1730,1731,1737],{},"Le code ci-dessous (à observer, pas à reproduire) montre comment\nappliquer ",[655,1725,1079],{}," à toute une image avec la bibliothèque Python\n",[602,1728,1729],{},"PIL\u002FPillow",". Vous n'êtes pas censés savoir l'écrire : retenez\nseulement que ",[602,1732,1733,1734,1736],{},"la fonction ",[655,1735,1079],{}," reste exactement la même",", et que\nle reste sert juste à parcourir l'image et à enregistrer le résultat.",[924,1739,1741],{"className":926,"code":1740,"language":928,"meta":695,"style":695},"from PIL import Image\n\ndef negatif(r, g, b):\n    return 255 - r, 255 - g, 255 - b\n\nsource = Image.open(\"photo.jpg\")\nlargeur, hauteur = source.size\nresultat = Image.new(\"RGB\", (largeur, hauteur))\n\nfor x in range(largeur):\n    for y in range(hauteur):\n        r, g, b = source.getpixel((x, y))\n        resultat.putpixel((x, y), negatif(r, g, b))\n\nresultat.save(\"negatif.jpg\")\n",[655,1742,1743,1757,1761,1769,1791,1795,1812,1822,1839,1844,1862,1878,1889,1895,1900],{"__ignoreMap":695},[783,1744,1745,1748,1751,1754],{"class":933,"line":934},[783,1746,1747],{"class":937},"from",[783,1749,1750],{"class":955}," PIL",[783,1752,1753],{"class":937}," import",[783,1755,1756],{"class":945}," Image\n",[783,1758,1759],{"class":933,"line":949},[783,1760,983],{"emptyLinePlaceholder":982},[783,1762,1763,1765,1767],{"class":933,"line":979},[783,1764,938],{"class":937},[783,1766,942],{"class":941},[783,1768,946],{"class":945},[783,1770,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789],{"class":933,"line":986},[783,1772,952],{"class":937},[783,1774,956],{"class":955},[783,1776,959],{"class":937},[783,1778,962],{"class":945},[783,1780,643],{"class":955},[783,1782,959],{"class":937},[783,1784,969],{"class":945},[783,1786,643],{"class":955},[783,1788,959],{"class":937},[783,1790,976],{"class":945},[783,1792,1793],{"class":933,"line":1015},[783,1794,983],{"emptyLinePlaceholder":982},[783,1796,1797,1800,1802,1805,1809],{"class":933,"line":1038},[783,1798,1799],{"class":945},"source ",[783,1801,808],{"class":937},[783,1803,1804],{"class":945}," Image.open(",[783,1806,1808],{"class":1807},"sIIMD","\"photo.jpg\"",[783,1810,1811],{"class":945},")\n",[783,1813,1814,1817,1819],{"class":933,"line":1421},[783,1815,1816],{"class":945},"largeur, hauteur ",[783,1818,808],{"class":937},[783,1820,1821],{"class":945}," source.size\n",[783,1823,1825,1828,1830,1833,1836],{"class":933,"line":1824},8,[783,1826,1827],{"class":945},"resultat ",[783,1829,808],{"class":937},[783,1831,1832],{"class":945}," Image.new(",[783,1834,1835],{"class":1807},"\"RGB\"",[783,1837,1838],{"class":945},", (largeur, hauteur))\n",[783,1840,1842],{"class":933,"line":1841},9,[783,1843,983],{"emptyLinePlaceholder":982},[783,1845,1847,1850,1853,1856,1859],{"class":933,"line":1846},10,[783,1848,1849],{"class":937},"for",[783,1851,1852],{"class":945}," x ",[783,1854,1855],{"class":937},"in",[783,1857,1858],{"class":955}," range",[783,1860,1861],{"class":945},"(largeur):\n",[783,1863,1865,1868,1871,1873,1875],{"class":933,"line":1864},11,[783,1866,1867],{"class":937},"    for",[783,1869,1870],{"class":945}," y ",[783,1872,1855],{"class":937},[783,1874,1858],{"class":955},[783,1876,1877],{"class":945},"(hauteur):\n",[783,1879,1881,1884,1886],{"class":933,"line":1880},12,[783,1882,1883],{"class":945},"        r, g, b ",[783,1885,808],{"class":937},[783,1887,1888],{"class":945}," source.getpixel((x, y))\n",[783,1890,1892],{"class":933,"line":1891},13,[783,1893,1894],{"class":945},"        resultat.putpixel((x, y), negatif(r, g, b))\n",[783,1896,1898],{"class":933,"line":1897},14,[783,1899,983],{"emptyLinePlaceholder":982},[783,1901,1903,1906,1909],{"class":933,"line":1902},15,[783,1904,1905],{"class":945},"resultat.save(",[783,1907,1908],{"class":1807},"\"negatif.jpg\"",[783,1910,1811],{"class":945},[598,1912,1913,1914,1917],{},"L'idée à retenir : ",[602,1915,1916],{},"toute l'intelligence de la retouche tient dans la\nfonction qui transforme un pixel."," Le reste est de la mécanique de\nparcours.",[593,1919,1921],{"id":1920},"pièges-courants","Pièges courants",[1923,1924,1925],"warning",{},[706,1926,1927,1933,1950],{},[709,1928,1929,1932],{},[602,1930,1931],{},"Toujours dans l'ordre R, G, B."," Le trio est dans cet ordre : rouge,\nvert, bleu. Pas dans un autre ordre.",[709,1934,1935,1941,1942,1945,1946,1949],{},[602,1936,1937,1938,743],{},"Les valeurs restent dans ",[655,1939,1940],{},"[0, 255]"," Si votre formule produit ",[655,1943,1944],{},"-5","\nou ",[655,1947,1948],{},"300",", c'est qu'elle est mal pensée — une jauge ne peut ni être\nnégative, ni dépasser le maximum.",[709,1951,1952,1958,1959,1961],{},[602,1953,1954,1955,1957],{},"Une fonction ",[655,1956,1079],{}," ne modifie pas le pixel d'origine"," : elle\n",[602,1960,1095],{}," un nouveau trio. Le pixel d'origine, lui, ne change pas.",[593,1963,1965],{"id":1964},"pour-aller-plus-loin","Pour aller plus loin",[598,1967,1968,1969,1972],{},"Les effets que vous avez écrits sont les plus simples qui soient. On peut\nen imaginer beaucoup d'autres avec d'autres formules : éclaircir\n(ajouter à chaque composante), augmenter le contraste (étirer les\nvaleurs vers les extrêmes), virer en sépia (mélanger les composantes\nselon des coefficients fixes). Tous ces effets ne sont rien d'autre\nqu'",[602,1970,1971],{},"une formule différente sur les trois jauges",", appliquée à chaque\npixel de l'image.",[1974,1975,1976],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":695,"searchDepth":949,"depth":949,"links":1978},[1979,1980,1981,1982,1983,1984,1985,1986,1987,1988],{"id":595,"depth":949,"text":596},{"id":618,"depth":949,"text":619},{"id":723,"depth":949,"text":724},{"id":771,"depth":949,"text":772},{"id":1110,"depth":949,"text":1111},{"id":1492,"depth":949,"text":1493},{"id":1616,"depth":949,"text":1617},{"id":1699,"depth":949,"text":1700},{"id":1920,"depth":949,"text":1921},{"id":1964,"depth":949,"text":1965},"Modifier les composantes RGB d'un pixel pour obtenir négatif, gris ou filtre — un pixel à la fois.",null,"md",{},[1994,1999,2001,2003],{"slug":691,"kind":1995,"question":1996,"choices":1997,"correct":689,"multi":1998,"explanation":690},"qcm","Que représente le pixel (0, 255, 0) ?",[711,714,717,720],false,{"slug":1621,"kind":1995,"question":1626,"choices":2000,"correct":689,"multi":1998,"explanation":1620},[1633,1636,1639,1642],{"slug":1646,"kind":1995,"question":1651,"choices":2002,"correct":689,"multi":1998,"explanation":1645},[1658,1661,1664],{"slug":1668,"kind":1995,"question":2004,"choices":2005,"correct":639,"multi":1998,"explanation":1667},"Quel pixel obtient-on en appliquant filtre_rouge à (120, 200, 80) ?",[1687,1690,1693,1696],{"title":181,"description":1989},"An24ORL4aYCZt1l2Pcb9-4LJpPTAwmYfvxICMVSUf5U",{"id":2009,"title":2010,"bo":2011,"body":2012,"description":2394,"eval":1990,"extension":1991,"labo":1990,"meta":2395,"navigation":1998,"path":2396,"quizzes":2397,"readingTime":934,"seo":2398,"stem":2399,"tp":1990,"__hash__":2400},"coursMemo\u002F0.snt-2nde\u002Fsg-photo-numerique\u002F4.traitement-rgb.memo.md","Traiter une image en Python — l'essentiel",[588],{"type":590,"value":2013,"toc":2385},[2014,2018,2025,2029,2061,2065,2163,2167,2226,2291,2295,2347,2349,2371,2375,2382],[593,2015,2017],{"id":2016},"en-une-phrase","En une phrase",[598,2019,2020,2021,2024],{},"Traiter une image, c'est ",[602,2022,2023],{},"modifier les trois composantes R, G, B"," de\nchaque pixel selon une formule. Tout l'effet d'une retouche tient dans\ncette formule, appliquée pixel par pixel.",[593,2026,2028],{"id":2027},"limage-mentale","L'image mentale",[706,2030,2031,2038,2045,2052],{},[709,2032,2033,2034,2037],{},"Une image = une ",[602,2035,2036],{},"grille de cases"," (les pixels).",[709,2039,2040,2041,2044],{},"Chaque case porte ",[602,2042,2043],{},"3 jauges"," : rouge, vert, bleu.",[709,2046,2047,2048,640,2050,644],{},"Chaque jauge va de ",[602,2049,639],{},[602,2051,643],{},[709,2053,2054,2055,677,2057,677,2059,743],{},"Un pixel = trois nombres, notés ",[655,2056,676],{},[655,2058,680],{},[655,2060,684],{},[593,2062,2064],{"id":2063},"transformations-clés","Transformations clés",[2066,2067,2068,2081],"table",{},[2069,2070,2071],"thead",{},[2072,2073,2074,2078],"tr",{},[2075,2076,2077],"th",{},"Effet",[2075,2079,2080],{},"Formule sur (r, g, b)",[2082,2083,2084,2103,2118,2133,2148],"tbody",{},[2072,2085,2086,2092],{},[2087,2088,2089],"td",{},[602,2090,2091],{},"Négatif",[2087,2093,2094,677,2097,677,2100],{},[655,2095,2096],{},"255 - r",[655,2098,2099],{},"255 - g",[655,2101,2102],{},"255 - b",[2072,2104,2105,2110],{},[2087,2106,2107],{},[602,2108,2109],{},"Niveau de gris",[2087,2111,2112,2115,2116],{},[655,2113,2114],{},"moy = (r + g + b) \u002F\u002F 3"," puis ",[655,2117,1314],{},[2072,2119,2120,2125],{},[2087,2121,2122],{},[602,2123,2124],{},"Filtre rouge",[2087,2126,2127,677,2129,677,2131],{},[655,2128,676],{},[655,2130,639],{},[655,2132,639],{},[2072,2134,2135,2140],{},[2087,2136,2137],{},[602,2138,2139],{},"Filtre vert",[2087,2141,2142,677,2144,677,2146],{},[655,2143,639],{},[655,2145,680],{},[655,2147,639],{},[2072,2149,2150,2155],{},[2087,2151,2152],{},[602,2153,2154],{},"Filtre bleu",[2087,2156,2157,677,2159,677,2161],{},[655,2158,639],{},[655,2160,639],{},[655,2162,684],{},[593,2164,2166],{"id":2165},"syntaxe-python-par-pixel","Syntaxe Python (par pixel)",[924,2168,2170],{"className":926,"code":2169,"language":928,"meta":695,"style":695},"def negatif(r, g, b):\n    return 255 - r, 255 - g, 255 - b\n\nprint(negatif(10, 200, 50))   # (245, 55, 205)\n",[655,2171,2172,2180,2202,2206],{"__ignoreMap":695},[783,2173,2174,2176,2178],{"class":933,"line":934},[783,2175,938],{"class":937},[783,2177,942],{"class":941},[783,2179,946],{"class":945},[783,2181,2182,2184,2186,2188,2190,2192,2194,2196,2198,2200],{"class":933,"line":949},[783,2183,952],{"class":937},[783,2185,956],{"class":955},[783,2187,959],{"class":937},[783,2189,962],{"class":945},[783,2191,643],{"class":955},[783,2193,959],{"class":937},[783,2195,969],{"class":945},[783,2197,643],{"class":955},[783,2199,959],{"class":937},[783,2201,976],{"class":945},[783,2203,2204],{"class":933,"line":979},[783,2205,983],{"emptyLinePlaceholder":982},[783,2207,2208,2210,2212,2214,2216,2218,2220,2222,2224],{"class":933,"line":986},[783,2209,989],{"class":955},[783,2211,992],{"class":945},[783,2213,995],{"class":955},[783,2215,677],{"class":945},[783,2217,1000],{"class":955},[783,2219,677],{"class":945},[783,2221,1005],{"class":955},[783,2223,1563],{"class":945},[783,2225,1012],{"class":1011},[924,2227,2229],{"className":926,"code":2228,"language":928,"meta":695,"style":695},"def gris(r, g, b):\n    moy = (r + g + b) \u002F\u002F 3\n    return moy, moy, moy\n\nprint(gris(255, 0, 0))        # (85, 85, 85)\n",[655,2230,2231,2239,2260,2266,2270],{"__ignoreMap":695},[783,2232,2233,2235,2237],{"class":933,"line":934},[783,2234,938],{"class":937},[783,2236,1328],{"class":941},[783,2238,946],{"class":945},[783,2240,2241,2243,2245,2247,2249,2251,2253,2255,2257],{"class":933,"line":949},[783,2242,1335],{"class":945},[783,2244,808],{"class":937},[783,2246,1340],{"class":945},[783,2248,1159],{"class":937},[783,2250,1345],{"class":945},[783,2252,1159],{"class":937},[783,2254,1350],{"class":945},[783,2256,1353],{"class":937},[783,2258,2259],{"class":955}," 3\n",[783,2261,2262,2264],{"class":933,"line":979},[783,2263,952],{"class":937},[783,2265,1369],{"class":945},[783,2267,2268],{"class":933,"line":986},[783,2269,983],{"emptyLinePlaceholder":982},[783,2271,2272,2274,2276,2278,2280,2282,2284,2286,2288],{"class":933,"line":1015},[783,2273,989],{"class":955},[783,2275,1380],{"class":945},[783,2277,643],{"class":955},[783,2279,677],{"class":945},[783,2281,639],{"class":955},[783,2283,677],{"class":945},[783,2285,639],{"class":955},[783,2287,1032],{"class":945},[783,2289,2290],{"class":1011},"# (85, 85, 85)\n",[593,2292,2294],{"id":2293},"à-savoir-reconnaître","À savoir reconnaître",[2066,2296,2297,2307],{},[2069,2298,2299],{},[2072,2300,2301,2304],{},[2075,2302,2303],{},"Situation",[2075,2305,2306],{},"Action",[2082,2308,2309,2317,2325,2335],{},[2072,2310,2311,2314],{},[2087,2312,2313],{},"Couleur (0, 0, 0)",[2087,2315,2316],{},"Noir (toutes jauges éteintes).",[2072,2318,2319,2322],{},[2087,2320,2321],{},"Couleur (255, 255, 255)",[2087,2323,2324],{},"Blanc (toutes jauges à fond).",[2072,2326,2327,2332],{},[2087,2328,2329],{},[655,2330,2331],{},"r = g = b",[2087,2333,2334],{},"Une nuance de gris.",[2072,2336,2337,2340],{},[2087,2338,2339],{},"Effet identique sur toute l'image",[2087,2341,2342,2343,2346],{},"Une ",[602,2344,2345],{},"fonction"," appliquée à chaque pixel.",[593,2348,1921],{"id":1920},[706,2350,2351,2356,2365],{},[709,2352,2353,2354,743],{},"Confondre l'ordre des composantes : c'est toujours ",[602,2355,895],{},[709,2357,2358,2359,2364],{},"Produire une valeur ",[602,2360,2361,2362],{},"hors de ",[655,2363,1940],{}," — c'est le signe que la\nformule est mal posée.",[709,2366,2367,2368,2370],{},"Croire que la fonction modifie le pixel d'origine : non, elle ",[602,2369,1095],{},"\nun nouveau trio.",[593,2372,2374],{"id":2373},"en-une-formule","En une formule",[598,2376,2377,2378,2381],{},"Une retouche photo = ",[602,2379,2380],{},"une formule sur trois nombres",", appliquée à toutes\nles cases de la grille.",[1974,2383,2384],{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":695,"searchDepth":949,"depth":949,"links":2386},[2387,2388,2389,2390,2391,2392,2393],{"id":2016,"depth":949,"text":2017},{"id":2027,"depth":949,"text":2028},{"id":2063,"depth":949,"text":2064},{"id":2165,"depth":949,"text":2166},{"id":2293,"depth":949,"text":2294},{"id":1920,"depth":949,"text":1921},{"id":2373,"depth":949,"text":2374},"Mémo de référence pour transformer un pixel par programme.",{},"\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb.memo",[],{"title":2010,"description":2394},"0.snt-2nde\u002Fsg-photo-numerique\u002F4.traitement-rgb.memo","Nmrs1Zz3n1NgoQEc2ae0uUIhU-ljqK7qdjoeXh9i1wc",{"id":2402,"title":2403,"body":2404,"description":2777,"extension":1991,"meta":2778,"navigation":1998,"path":2779,"seo":2780,"stem":2781,"__hash__":2782},"coursSlides\u002F0.snt-2nde\u002Fsg-photo-numerique\u002F4.traitement-rgb.slides.md","Traiter une image en Python — diapositives",{"type":590,"value":2405,"toc":2775},[2406,2410,2413,2416,2420,2445,2447,2451,2479,2481,2485,2488,2513,2519,2521,2525,2528,2587,2595,2597,2601,2608,2671,2676,2678,2682,2685,2710,2713,2715,2719,2735,2737,2741,2761,2763,2767,2773],[2407,2408,181],"h1",{"id":2409},"traiter-une-image-en-python",[598,2411,2412],{},"Modifier les composantes R, G, B d'un pixel — un pixel à la fois.",[2414,2415],"hr",{},[2407,2417,2419],{"id":2418},"une-image-une-grille-de-jauges","Une image = une grille de jauges",[706,2421,2422,2428,2433,2439],{},[709,2423,2424,2425,743],{},"Chaque case de la grille = un ",[602,2426,2427],{},"pixel",[709,2429,2430,2431,2044],{},"Chaque pixel = ",[602,2432,2043],{},[709,2434,2047,2435,640,2437,644],{},[602,2436,639],{},[602,2438,643],{},[709,2440,2441,2442,650],{},"Modifier l'image = ",[602,2443,2444],{},"tourner les jauges",[2414,2446],{},[2407,2448,2450],{"id":2449},"un-pixel-trois-nombres","Un pixel = trois nombres",[706,2452,2453,2458,2463,2468,2473],{},[709,2454,2455,2457],{},[655,2456,661],{}," → noir.",[709,2459,2460,2462],{},[655,2461,665],{}," → blanc.",[709,2464,2465,2467],{},[655,2466,657],{}," → rouge pur.",[709,2469,2470,2472],{},[655,2471,701],{}," → vert pur.",[709,2474,2475,2478],{},[655,2476,2477],{},"(0, 0, 255)"," → bleu pur.",[2414,2480],{},[2407,2482,2484],{"id":2483},"lidée-dune-transformation","L'idée d'une transformation",[598,2486,2487],{},"Pour chaque pixel, le programme :",[729,2489,2490,2501,2507],{},[709,2491,2492,736,2495,677,2497,677,2499,743],{},[602,2493,2494],{},"Lit",[655,2496,676],{},[655,2498,680],{},[655,2500,684],{},[709,2502,2503,2506],{},[602,2504,2505],{},"Calcule"," trois nouveaux nombres.",[709,2508,2509,2512],{},[602,2510,2511],{},"Renvoie"," la nouvelle couleur.",[598,2514,2515,2516,743],{},"L'effet de la retouche tient dans ",[602,2517,2518],{},"la formule de calcul",[2414,2520],{},[2407,2522,2524],{"id":2523},"effet-négatif","Effet « négatif »",[598,2526,2527],{},"Inverser chaque jauge :",[924,2529,2531],{"className":926,"code":2530,"language":928,"meta":695,"style":695},"def negatif(r, g, b):\n    return 255 - r, 255 - g, 255 - b\n\nprint(negatif(10, 200, 50))  # (245, 55, 205)\n",[655,2532,2533,2541,2563,2567],{"__ignoreMap":695},[783,2534,2535,2537,2539],{"class":933,"line":934},[783,2536,938],{"class":937},[783,2538,942],{"class":941},[783,2540,946],{"class":945},[783,2542,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561],{"class":933,"line":949},[783,2544,952],{"class":937},[783,2546,956],{"class":955},[783,2548,959],{"class":937},[783,2550,962],{"class":945},[783,2552,643],{"class":955},[783,2554,959],{"class":937},[783,2556,969],{"class":945},[783,2558,643],{"class":955},[783,2560,959],{"class":937},[783,2562,976],{"class":945},[783,2564,2565],{"class":933,"line":979},[783,2566,983],{"emptyLinePlaceholder":982},[783,2568,2569,2571,2573,2575,2577,2579,2581,2583,2585],{"class":933,"line":986},[783,2570,989],{"class":955},[783,2572,992],{"class":945},[783,2574,995],{"class":955},[783,2576,677],{"class":945},[783,2578,1000],{"class":955},[783,2580,677],{"class":945},[783,2582,1005],{"class":955},[783,2584,1055],{"class":945},[783,2586,1012],{"class":1011},[706,2588,2589,2592],{},[709,2590,2591],{},"0 → 255, 255 → 0.",[709,2593,2594],{},"Noir devient blanc et inversement.",[2414,2596],{},[2407,2598,2600],{"id":2599},"effet-niveaux-de-gris","Effet « niveaux de gris »",[598,2602,2603,2604,2607],{},"Régler les trois jauges à la ",[602,2605,2606],{},"même valeur"," : leur moyenne.",[924,2609,2611],{"className":926,"code":2610,"language":928,"meta":695,"style":695},"def gris(r, g, b):\n    moy = (r + g + b) \u002F\u002F 3\n    return moy, moy, moy\n\nprint(gris(200, 50, 80))  # (110, 110, 110)\n",[655,2612,2613,2621,2641,2647,2651],{"__ignoreMap":695},[783,2614,2615,2617,2619],{"class":933,"line":934},[783,2616,938],{"class":937},[783,2618,1328],{"class":941},[783,2620,946],{"class":945},[783,2622,2623,2625,2627,2629,2631,2633,2635,2637,2639],{"class":933,"line":949},[783,2624,1335],{"class":945},[783,2626,808],{"class":937},[783,2628,1340],{"class":945},[783,2630,1159],{"class":937},[783,2632,1345],{"class":945},[783,2634,1159],{"class":937},[783,2636,1350],{"class":945},[783,2638,1353],{"class":937},[783,2640,2259],{"class":955},[783,2642,2643,2645],{"class":933,"line":979},[783,2644,952],{"class":937},[783,2646,1369],{"class":945},[783,2648,2649],{"class":933,"line":986},[783,2650,983],{"emptyLinePlaceholder":982},[783,2652,2653,2655,2657,2659,2661,2663,2665,2667,2669],{"class":933,"line":1015},[783,2654,989],{"class":955},[783,2656,1380],{"class":945},[783,2658,1000],{"class":955},[783,2660,677],{"class":945},[783,2662,1005],{"class":955},[783,2664,677],{"class":945},[783,2666,1436],{"class":955},[783,2668,1055],{"class":945},[783,2670,1441],{"class":1011},[598,2672,2673,2675],{},[655,2674,2331],{}," → nuance de gris.",[2414,2677],{},[2407,2679,2681],{"id":2680},"filtrer-une-couche","Filtrer une couche",[598,2683,2684],{},"Garder uniquement le rouge — éteindre vert et bleu :",[924,2686,2688],{"className":926,"code":2687,"language":928,"meta":695,"style":695},"def filtre_rouge(r, g, b):\n    return r, 0, 0\n",[655,2689,2690,2698],{"__ignoreMap":695},[783,2691,2692,2694,2696],{"class":933,"line":934},[783,2693,938],{"class":937},[783,2695,1523],{"class":941},[783,2697,946],{"class":945},[783,2699,2700,2702,2704,2706,2708],{"class":933,"line":949},[783,2701,952],{"class":937},[783,2703,962],{"class":945},[783,2705,639],{"class":955},[783,2707,677],{"class":945},[783,2709,1538],{"class":955},[598,2711,2712],{},"Effet : une image qui ne contient plus que des nuances de rouge.",[2414,2714],{},[2407,2716,2718],{"id":2717},"sur-une-image-entière-démo","Sur une image entière (démo)",[1717,2720,2721],{"icon":1719,"title":1720},[598,2722,2723,2724,2727,2728,2730,2731,2734],{},"Avec PIL\u002FPillow, le programme ",[602,2725,2726],{},"parcourt toutes les cases"," et applique\nla fonction ",[655,2729,1079],{}," à chacune. ",[602,2732,2733],{},"La fonction reste inchangée"," — le\nreste sert juste au parcours et à l'enregistrement.",[2414,2736],{},[2407,2738,2740],{"id":2739},"pièges","Pièges",[706,2742,2743,2748,2755],{},[709,2744,2745,2746,743],{},"Toujours dans l'ordre ",[602,2747,895],{},[709,2749,2750,2751,2754],{},"Valeurs entre ",[602,2752,2753],{},"0 et 255"," — sinon la formule est mal posée.",[709,2756,2757,2758,2760],{},"La fonction ",[602,2759,1095],{}," un nouveau trio, elle ne change pas l'ancien.",[2414,2762],{},[2407,2764,2766],{"id":2765},"à-retenir","À retenir",[598,2768,2769,2770,2772],{},"Toute retouche photo se ramène à ",[602,2771,2380],{},",\nappliquée à chaque pixel de l'image. Vous savez en écrire trois.",[1974,2774,2384],{},{"title":695,"searchDepth":949,"depth":949,"links":2776},[],"Deck projetable de la séance « modifier les couleurs d'un pixel ».",{},"\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb.slides",{"title":2403,"description":2777},"0.snt-2nde\u002Fsg-photo-numerique\u002F4.traitement-rgb.slides","LFnBi7-clsm5mgYOEtt2qs8r30v0w3ocLq8ztWBHi3I",{"id":2009,"title":2010,"bo":2784,"body":2785,"description":2394,"eval":1990,"extension":1991,"labo":1990,"meta":3100,"navigation":1998,"path":2396,"quizzes":3101,"readingTime":934,"seo":3102,"stem":2399,"tp":1990,"__hash__":2400},[588],{"type":590,"value":2786,"toc":3091},[2787,2789,2793,2795,2819,2821,2901,2903,2961,3023,3025,3065,3067,3083,3085,3089],[593,2788,2017],{"id":2016},[598,2790,2020,2791,2024],{},[602,2792,2023],{},[593,2794,2028],{"id":2027},[706,2796,2797,2801,2805,2811],{},[709,2798,2033,2799,2037],{},[602,2800,2036],{},[709,2802,2040,2803,2044],{},[602,2804,2043],{},[709,2806,2047,2807,640,2809,644],{},[602,2808,639],{},[602,2810,643],{},[709,2812,2054,2813,677,2815,677,2817,743],{},[655,2814,676],{},[655,2816,680],{},[655,2818,684],{},[593,2820,2064],{"id":2063},[2066,2822,2823,2831],{},[2069,2824,2825],{},[2072,2826,2827,2829],{},[2075,2828,2077],{},[2075,2830,2080],{},[2082,2832,2833,2847,2859,2873,2887],{},[2072,2834,2835,2839],{},[2087,2836,2837],{},[602,2838,2091],{},[2087,2840,2841,677,2843,677,2845],{},[655,2842,2096],{},[655,2844,2099],{},[655,2846,2102],{},[2072,2848,2849,2853],{},[2087,2850,2851],{},[602,2852,2109],{},[2087,2854,2855,2115,2857],{},[655,2856,2114],{},[655,2858,1314],{},[2072,2860,2861,2865],{},[2087,2862,2863],{},[602,2864,2124],{},[2087,2866,2867,677,2869,677,2871],{},[655,2868,676],{},[655,2870,639],{},[655,2872,639],{},[2072,2874,2875,2879],{},[2087,2876,2877],{},[602,2878,2139],{},[2087,2880,2881,677,2883,677,2885],{},[655,2882,639],{},[655,2884,680],{},[655,2886,639],{},[2072,2888,2889,2893],{},[2087,2890,2891],{},[602,2892,2154],{},[2087,2894,2895,677,2897,677,2899],{},[655,2896,639],{},[655,2898,639],{},[655,2900,684],{},[593,2902,2166],{"id":2165},[924,2904,2905],{"className":926,"code":2169,"language":928,"meta":695,"style":695},[655,2906,2907,2915,2937,2941],{"__ignoreMap":695},[783,2908,2909,2911,2913],{"class":933,"line":934},[783,2910,938],{"class":937},[783,2912,942],{"class":941},[783,2914,946],{"class":945},[783,2916,2917,2919,2921,2923,2925,2927,2929,2931,2933,2935],{"class":933,"line":949},[783,2918,952],{"class":937},[783,2920,956],{"class":955},[783,2922,959],{"class":937},[783,2924,962],{"class":945},[783,2926,643],{"class":955},[783,2928,959],{"class":937},[783,2930,969],{"class":945},[783,2932,643],{"class":955},[783,2934,959],{"class":937},[783,2936,976],{"class":945},[783,2938,2939],{"class":933,"line":979},[783,2940,983],{"emptyLinePlaceholder":982},[783,2942,2943,2945,2947,2949,2951,2953,2955,2957,2959],{"class":933,"line":986},[783,2944,989],{"class":955},[783,2946,992],{"class":945},[783,2948,995],{"class":955},[783,2950,677],{"class":945},[783,2952,1000],{"class":955},[783,2954,677],{"class":945},[783,2956,1005],{"class":955},[783,2958,1563],{"class":945},[783,2960,1012],{"class":1011},[924,2962,2963],{"className":926,"code":2228,"language":928,"meta":695,"style":695},[655,2964,2965,2973,2993,2999,3003],{"__ignoreMap":695},[783,2966,2967,2969,2971],{"class":933,"line":934},[783,2968,938],{"class":937},[783,2970,1328],{"class":941},[783,2972,946],{"class":945},[783,2974,2975,2977,2979,2981,2983,2985,2987,2989,2991],{"class":933,"line":949},[783,2976,1335],{"class":945},[783,2978,808],{"class":937},[783,2980,1340],{"class":945},[783,2982,1159],{"class":937},[783,2984,1345],{"class":945},[783,2986,1159],{"class":937},[783,2988,1350],{"class":945},[783,2990,1353],{"class":937},[783,2992,2259],{"class":955},[783,2994,2995,2997],{"class":933,"line":979},[783,2996,952],{"class":937},[783,2998,1369],{"class":945},[783,3000,3001],{"class":933,"line":986},[783,3002,983],{"emptyLinePlaceholder":982},[783,3004,3005,3007,3009,3011,3013,3015,3017,3019,3021],{"class":933,"line":1015},[783,3006,989],{"class":955},[783,3008,1380],{"class":945},[783,3010,643],{"class":955},[783,3012,677],{"class":945},[783,3014,639],{"class":955},[783,3016,677],{"class":945},[783,3018,639],{"class":955},[783,3020,1032],{"class":945},[783,3022,2290],{"class":1011},[593,3024,2294],{"id":2293},[2066,3026,3027,3035],{},[2069,3028,3029],{},[2072,3030,3031,3033],{},[2075,3032,2303],{},[2075,3034,2306],{},[2082,3036,3037,3043,3049,3057],{},[2072,3038,3039,3041],{},[2087,3040,2313],{},[2087,3042,2316],{},[2072,3044,3045,3047],{},[2087,3046,2321],{},[2087,3048,2324],{},[2072,3050,3051,3055],{},[2087,3052,3053],{},[655,3054,2331],{},[2087,3056,2334],{},[2072,3058,3059,3061],{},[2087,3060,2339],{},[2087,3062,2342,3063,2346],{},[602,3064,2345],{},[593,3066,1921],{"id":1920},[706,3068,3069,3073,3079],{},[709,3070,2353,3071,743],{},[602,3072,895],{},[709,3074,2358,3075,2364],{},[602,3076,2361,3077],{},[655,3078,1940],{},[709,3080,2367,3081,2370],{},[602,3082,1095],{},[593,3084,2374],{"id":2373},[598,3086,2377,3087,2381],{},[602,3088,2380],{},[1974,3090,2384],{},{"title":695,"searchDepth":949,"depth":949,"links":3092},[3093,3094,3095,3096,3097,3098,3099],{"id":2016,"depth":949,"text":2017},{"id":2027,"depth":949,"text":2028},{"id":2063,"depth":949,"text":2064},{"id":2165,"depth":949,"text":2166},{"id":2293,"depth":949,"text":2294},{"id":1920,"depth":949,"text":1921},{"id":2373,"depth":949,"text":2374},{},[],{"title":2010,"description":2394},{"id":2402,"title":2403,"body":3104,"description":2777,"extension":1991,"meta":3410,"navigation":1998,"path":2779,"seo":3411,"stem":2781,"__hash__":2782},{"type":590,"value":3105,"toc":3408},[3106,3108,3110,3112,3114,3134,3136,3138,3160,3162,3164,3166,3186,3190,3192,3194,3196,3254,3260,3262,3264,3268,3330,3334,3336,3338,3340,3364,3366,3368,3370,3380,3382,3384,3398,3400,3402,3406],[2407,3107,181],{"id":2409},[598,3109,2412],{},[2414,3111],{},[2407,3113,2419],{"id":2418},[706,3115,3116,3120,3124,3130],{},[709,3117,2424,3118,743],{},[602,3119,2427],{},[709,3121,2430,3122,2044],{},[602,3123,2043],{},[709,3125,2047,3126,640,3128,644],{},[602,3127,639],{},[602,3129,643],{},[709,3131,2441,3132,650],{},[602,3133,2444],{},[2414,3135],{},[2407,3137,2450],{"id":2449},[706,3139,3140,3144,3148,3152,3156],{},[709,3141,3142,2457],{},[655,3143,661],{},[709,3145,3146,2462],{},[655,3147,665],{},[709,3149,3150,2467],{},[655,3151,657],{},[709,3153,3154,2472],{},[655,3155,701],{},[709,3157,3158,2478],{},[655,3159,2477],{},[2414,3161],{},[2407,3163,2484],{"id":2483},[598,3165,2487],{},[729,3167,3168,3178,3182],{},[709,3169,3170,736,3172,677,3174,677,3176,743],{},[602,3171,2494],{},[655,3173,676],{},[655,3175,680],{},[655,3177,684],{},[709,3179,3180,2506],{},[602,3181,2505],{},[709,3183,3184,2512],{},[602,3185,2511],{},[598,3187,2515,3188,743],{},[602,3189,2518],{},[2414,3191],{},[2407,3193,2524],{"id":2523},[598,3195,2527],{},[924,3197,3198],{"className":926,"code":2530,"language":928,"meta":695,"style":695},[655,3199,3200,3208,3230,3234],{"__ignoreMap":695},[783,3201,3202,3204,3206],{"class":933,"line":934},[783,3203,938],{"class":937},[783,3205,942],{"class":941},[783,3207,946],{"class":945},[783,3209,3210,3212,3214,3216,3218,3220,3222,3224,3226,3228],{"class":933,"line":949},[783,3211,952],{"class":937},[783,3213,956],{"class":955},[783,3215,959],{"class":937},[783,3217,962],{"class":945},[783,3219,643],{"class":955},[783,3221,959],{"class":937},[783,3223,969],{"class":945},[783,3225,643],{"class":955},[783,3227,959],{"class":937},[783,3229,976],{"class":945},[783,3231,3232],{"class":933,"line":979},[783,3233,983],{"emptyLinePlaceholder":982},[783,3235,3236,3238,3240,3242,3244,3246,3248,3250,3252],{"class":933,"line":986},[783,3237,989],{"class":955},[783,3239,992],{"class":945},[783,3241,995],{"class":955},[783,3243,677],{"class":945},[783,3245,1000],{"class":955},[783,3247,677],{"class":945},[783,3249,1005],{"class":955},[783,3251,1055],{"class":945},[783,3253,1012],{"class":1011},[706,3255,3256,3258],{},[709,3257,2591],{},[709,3259,2594],{},[2414,3261],{},[2407,3263,2600],{"id":2599},[598,3265,2603,3266,2607],{},[602,3267,2606],{},[924,3269,3270],{"className":926,"code":2610,"language":928,"meta":695,"style":695},[655,3271,3272,3280,3300,3306,3310],{"__ignoreMap":695},[783,3273,3274,3276,3278],{"class":933,"line":934},[783,3275,938],{"class":937},[783,3277,1328],{"class":941},[783,3279,946],{"class":945},[783,3281,3282,3284,3286,3288,3290,3292,3294,3296,3298],{"class":933,"line":949},[783,3283,1335],{"class":945},[783,3285,808],{"class":937},[783,3287,1340],{"class":945},[783,3289,1159],{"class":937},[783,3291,1345],{"class":945},[783,3293,1159],{"class":937},[783,3295,1350],{"class":945},[783,3297,1353],{"class":937},[783,3299,2259],{"class":955},[783,3301,3302,3304],{"class":933,"line":979},[783,3303,952],{"class":937},[783,3305,1369],{"class":945},[783,3307,3308],{"class":933,"line":986},[783,3309,983],{"emptyLinePlaceholder":982},[783,3311,3312,3314,3316,3318,3320,3322,3324,3326,3328],{"class":933,"line":1015},[783,3313,989],{"class":955},[783,3315,1380],{"class":945},[783,3317,1000],{"class":955},[783,3319,677],{"class":945},[783,3321,1005],{"class":955},[783,3323,677],{"class":945},[783,3325,1436],{"class":955},[783,3327,1055],{"class":945},[783,3329,1441],{"class":1011},[598,3331,3332,2675],{},[655,3333,2331],{},[2414,3335],{},[2407,3337,2681],{"id":2680},[598,3339,2684],{},[924,3341,3342],{"className":926,"code":2687,"language":928,"meta":695,"style":695},[655,3343,3344,3352],{"__ignoreMap":695},[783,3345,3346,3348,3350],{"class":933,"line":934},[783,3347,938],{"class":937},[783,3349,1523],{"class":941},[783,3351,946],{"class":945},[783,3353,3354,3356,3358,3360,3362],{"class":933,"line":949},[783,3355,952],{"class":937},[783,3357,962],{"class":945},[783,3359,639],{"class":955},[783,3361,677],{"class":945},[783,3363,1538],{"class":955},[598,3365,2712],{},[2414,3367],{},[2407,3369,2718],{"id":2717},[1717,3371,3372],{"icon":1719,"title":1720},[598,3373,2723,3374,2727,3376,2730,3378,2734],{},[602,3375,2726],{},[655,3377,1079],{},[602,3379,2733],{},[2414,3381],{},[2407,3383,2740],{"id":2739},[706,3385,3386,3390,3394],{},[709,3387,2745,3388,743],{},[602,3389,895],{},[709,3391,2750,3392,2754],{},[602,3393,2753],{},[709,3395,2757,3396,2760],{},[602,3397,1095],{},[2414,3399],{},[2407,3401,2766],{"id":2765},[598,3403,2769,3404,2772],{},[602,3405,2380],{},[1974,3407,2384],{},{"title":695,"searchDepth":949,"depth":949,"links":3409},[],{},{"title":2403,"description":2777},1788035577078]