Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#set page("a4", flipped: true, margin: 0.8cm)
#set text(11pt, lang: "fr")

#let activite(titre, membres, duree, prerequis, description, materiel, content, extensions, etayages) = {
for i in range(calc.div-euclid(content.len(), 5)) {
content.at(i*5+1) = strong(content.at(i*5+1))
}
table(
columns: (2fr, 3.3fr, 12fr, 3fr, 4fr),
stroke: black+1pt,
align: center+horizon,
[*Titre*], table.cell(colspan: 4, titre),
[*Membres*], table.cell(colspan: 4, membres),
[*Durée*], table.cell(colspan: 4, duree),
..{ if prerequis != [] {([*Prérequis*], table.cell(colspan:4, prerequis))}},
[*Description*], table.cell(colspan: 4, description),
[*Matériel*], table.cell(colspan: 4, materiel),
[*Durée*], [*Phase*], [*Activités*], [*Orga*], [*Matériel*],
..content,
..{ if extensions != [] {([*Extensions*], table.cell(colspan:4, extensions))}},
..{ if etayages != [] {([*Étayages*], table.cell(colspan:4, etayages))}},
)
}

#activite([Imagecompression], [Liliana, Joachim], [1h], [Savoir compter et colorier],
[Faire découvrir la notion de pixel, la compression (et son intérêt) et une façon de le faire (le RLE)],
[
- par binôme : 1 feuille 3 grilles 6x6 vierge, 3 grilles 6x6 basiques
- Quelques feuilles d'une animation 3 frames au cas où extension
- à projeter : 1 grille entièrement complétée, 2 grilles à moitié complétées avec RLE pour la partie vide, 2 grilles variabilité compression
],
(
[5'],
[Introduction],
[
- Expliquer ce qu'est un pixel et une image en noir et blanc (#emoji.warning et pas niveau de gris)
- Consignes pour l'activité de la phase suivante
],
[A présente, B prépare les feuilles pour après (sans les donner)],
[Une image noire et blanc basse résolution projetée],

[10'],
[Encodage binôme sans compression],
[
- Bouger éventuellement les tables en binôme
- Les binômes se séparent un travail : un décrit une image en disant "noir" ou "blanc", l'autre doit la reproduire sur sa feuille plastifiée
],
[B distribue les feuilles, puis A et B viennent superviser],
[une grille simple (6x6) remplie pour l'un, vide pour l'autre par binôme],

[5'-10'],
[Courte restitution et questionnement d'idées],
[
- 36 fois dire "blanc" ou "noir"
- Des idées pour améliorer ça (guider si besoin avec "on veut juste des nombres")
],
[A parle, B prépare le tableau interactif],
[
$emptyset$
],

[15'],
[Explication],
[
- Expliquer l'idée de la compression RLE
- Demander comment encoder avec retour à la ligne
- Que faire si on commence avec un noir/blanc
- Faire venir au tableau un élève avec une seconde grille du même genre
],
[B parle pendant que A prépare le matériel à donner],
[Sur tableau interactif 2 grilles à moitié remplie au dessus, avec des valeurs en dessous],

[15'],
[Encodage RLE en binôme],
[Faire appliquer l'encodage RLE par binôme, chacun étant à tour de rôle l'encodeur et le décodeur sur des nouvelles images],
[A distribue et B prépare le tableau, puis A et B viennent superviser],
[2x(nouvelle grille (6x6) remplie pour l'un, vide pour l'autre par binôme)],

[10'],
[Institutionnalisation],
[
- Nombre d'instructions pour décrire une image inférieur, et intérêt de réduire ce nombre pour communiquer
- Mais mise en évidence de la variabilité de la taille de l'encodé
- Intérêt historique pour compresser des images avec des palettes prédéfinies
],
[B conclue la taille de RLE, A présente l'intérêt en info],
[2 exemples avec des compressions de tailles opposés (une image uniforme, une alternance)]
),
[
Et quid de la vidéo ? (leur donner une feuille animation 3 frames) Comment optimiser les retours à la ligne ? Comment le faire avec de la couleur ?
],
[],
)
Binary file added ImageCompression/Images/2026.pdf
Binary file not shown.
207 changes: 207 additions & 0 deletions ImageCompression/Images/2026.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
#set page("a4", flipped: false, margin: 0.8cm)

#let draw(d, size:1.4cm) = {
let dp = d.flatten().map(c => {
if c==0 {
table.cell(fill: white, v(size))
} else {
table.cell(fill: black, v(size))
}
})

table(
columns: (size,)*6,
inset: 0pt,
row-gutter: 0pt,
column-gutter: 0pt,
stroke: black+1pt,
..dp
)
}


// A imprimer pour chaque binôme, et découper d'une part les vides ensemble, et les remplis individuellement
#let empty = (
(0,0,0,0,0,0),
(0,0,0,0,0,0),
(0,0,0,0,0,0),
(0,0,0,0,0,0),
(0,0,0,0,0,0),
(0,0,0,0,0,0),
)

#let loss = (
(0,1,0,1,0,0),
(0,1,0,1,0,1),
(0,1,0,1,0,1),
(1,0,1,1,0,0),
(1,0,1,1,0,0),
(1,0,1,1,1,1),
)

#let sheep = (
(0,0,0,0,0,0),
(1,1,1,1,1,1),
(1,0,1,1,0,1),
(1,1,1,1,1,1),
(0,1,1,0,1,0),
(0,1,1,0,1,0),
)

#let Quinson = (
(0,0,1,1,0,0),
(0,1,0,0,1,0),
(1,0,0,0,0,1),
(1,0,0,1,0,1),
(0,1,0,0,1,0),
(0,0,1,1,0,1),
)

#align(center,
grid(
align: center+horizon,
row-gutter: 1cm,
column-gutter: 1cm,
columns: 2,
draw(loss),
draw(loss),
draw(sheep),
draw(sheep),
draw(Quinson),
draw(Quinson)
)
)

#pagebreak()
// A imprimer en nombre réduit

#let LWSS = (
(
(0,0,0,0,0,0),
(0,1,0,0,1,0),
(1,0,0,0,0,0),
(1,0,0,0,1,0),
(1,1,1,1,0,0),
(0,0,0,0,0,0),
),
(
(0,0,0,0,0,0),
(0,1,1,0,0,0),
(1,1,0,1,1,0),
(0,1,1,1,1,0),
(0,0,1,1,0,0),
(0,0,0,0,0,0),
),
(
(0,0,0,0,0,0),
(1,1,1,1,0,0),
(1,0,0,0,1,0),
(1,0,0,0,0,0),
(0,1,0,0,1,0),
(0,0,0,0,0,0),
),
)

#align(center,
grid(
align: center+horizon,
row-gutter: 1cm,
column-gutter: 1cm,
columns: 2,
draw(LWSS.at(0)),
draw(empty),
draw(LWSS.at(1)),
draw(empty),
draw(LWSS.at(2)),
draw(empty)
)
)

#pagebreak()

#align(center,
grid(
align: center+horizon,
row-gutter: 1cm,
column-gutter: 1cm,
columns: 2,
draw(empty),
draw(empty),
draw(empty),
draw(empty),
draw(empty),
draw(empty)
)
)

#pagebreak()

// A projeter

#let alternate = (
(1,0,1,0,1,0),
(1,0,1,0,1,0),
(1,0,1,0,1,0),
(1,0,1,0,1,0),
(1,0,1,0,1,0),
(1,0,1,0,1,0),
)

#let emoji = (
(0,1,0,0,1,0),
(0,1,0,0,1,0),
(0,1,0,0,1,0),
(0,0,0,0,0,0),
(1,0,0,0,0,1),
(0,1,1,1,1,0),
)

#let cat = (
(1,0,0,0,0,1),
(1,1,1,1,1,1),
(1,0,1,1,0,1),
/*(1,1,0,0,1,1),
(0,1,1,1,1,0),
(0,0,1,1,0,0),*/
(0,0,0,0,0,0),
(0,0,0,0,0,0),
(0,0,0,0,0,0),
)

#let king = (
(0,0,0,0,0,0),
(0,0,0,0,0,0),
(0,0,0,0,0,0),
/*(1,0,1,0,1,0),
(1,1,1,1,1,1),
(0,1,1,1,1,0),*/
(0,1,1,1,1,0),
(0,1,1,1,1,0),
(0,0,1,1,0,0),
)

#align(center,
grid(
align: center+horizon,
row-gutter: 1cm,
column-gutter: 1cm,
columns: 2,
draw(emoji), // Une image B&W facile
[
Gauche: \
0, 2, 2, 2 \
1, 4, 1 \
2, 2, 2 \

Droite: \
0, 1, 1, 1, 1, 1, 1 \
0, 6 \
1, 4, 1
],
draw(cat),
draw(king),
draw(empty), // Court à compresser
draw(alternate), // Long à compresser
)
)

15 changes: 15 additions & 0 deletions ImageCompression/Rapport/2026_MoyenLeFournis_Rapport.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Rapport d'étonnement 2026

Première activitée effectuée avec les deux classes de 21/24 CM1-CM2 (02/03 et 16/03).
Liliana Moyen et Joachim Le Fournis accompagnés Pablo Espana Gutierrez et des deux professeurs.

## Remarques générales
- La première consigned "que N&B" n'a pas été si bien comprise dans son intérêt
- Quelques difficultés attendues pour comprendre la consigne de "juste des nombres", beaucoup d'utilisation des mains
- Les enfants essayaient trop souvent de regarder ce que l'autre avait (que ce soit le dessinateur l'image de base, ou dans l'autre sens)
- Une bonne intuition sur l'application, mais pas tant sur les concepts. Un déclic qui intervient pour beaucoup de monde d'un coup
- Bonne idée de faire une grille fixe pour les images

## Potentielle amélioration
- Ils se sont beaucoup perdu car ils cherchaient une orientation dans l'image. Soit ajouter des symboles dans les cases ou ajouter une flèche indiquant le haut ? (même si ça n'a pas d'intérêt en pratique)
- Trouver un meilleur exemple pour parler des palettes de couleurs (surtout si l'activité `Pixels` arrive après)
Binary file added ImageCompression/TraceEcrite/2026.pdf
Binary file not shown.
50 changes: 50 additions & 0 deletions ImageCompression/TraceEcrite/2026.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#import "@preview/wrap-it:0.1.1": wrap-content
#set page("a4", flipped: false, margin: 1.5cm)
#set text(14pt)
#set par(justify: true)
#import "../Images/2026.typ": draw

/* #draw((
(0,0,1,0,0,0),
(0,1,1,0,0,0),
(1,1,1,0,0,0),
/*
(0,0,1,0,0,0),
(1,1,1,1,1,1),
(0,1,1,1,1,0),
*/
(0,0,0,0,0,0),
(0,0,0,0,0,0),
(0,0,0,0,0,0),
), size: 0.6cm) */

#let size = 0.6cm
#let bc = table.cell(fill: black, v(size))
#let wc = table.cell(fill: white, v(size))
#let im = table(
columns: (0.6cm,)*6 + (1cm,2cm),
inset: 0pt,
row-gutter: 0pt,
column-gutter: 0pt,
stroke: black+1pt,
align: horizon,
wc, wc, bc, wc, wc, wc, table.cell(rowspan: 6, stroke: none)[], [],
wc, bc, bc, wc, wc, wc, [],
bc, bc, bc, wc, wc, wc, [],
wc, wc, wc, wc, wc, wc, box(inset: 4pt)[0, 2, 1, 3],
wc, wc, wc, wc, wc, wc, box(inset: 4pt)[6],
wc, wc, wc, wc, wc, wc, box(inset: 4pt)[0, 1, 4, 1]
)
// #let im = image("trace.png", width: 8cm)
#let te = [
Aujourd'hui, nous avons vu qu'une image sur un ordinateur est composée de petits carrés nommés ................. /* pixels */, qui ici sont noirs et blancs. De plus, nous avons vu comment ............................... /* encoder */ ces images, c'est-à-dire les décrire d'une façon compréhensible par un ordinateur, qui ne manipule que des nombres. Nous avons vu que la façon naturelle de le faire, en ne disant pour chaque pixel que s'il est blanc ou noir, est peu efficace. C'est pourquoi nous avons ensuite vu une façon de .................................... /* compresser */ cette image, nommée .................................................................................. /* encodage par longueur de plage */ Cette technique n'est plus utilisée aujourd'hui, mais a eu une place importante en informatique pour transmettre des images.
]
#let con = wrap-content(im, te)

#stack(
dir: ttb,
spacing: 2cm,
con,
con,
con
)
14 changes: 14 additions & 0 deletions Pixels/CompteRendu/2026_RedorLeFournis_CompteRendu.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Rapport d'activité Pixels (Kolmogorov) 2026
Avant dernière séance dans deux classe (30/03/2026) de 21/24 CM1-CM2.
Ewan Redor et Joachim Le Fournis accompagnés des deux professeurs.*

## Bilan général

Les élèves prennent plus de temps que prévu pour faire un dessin. On a préféré ne pas faire la course prévue pour se concentrer sur les exercices en trinôme. Durant les exercices, les trinômes étaient parfois en conflit sur quel rôle faire, ce qui ralentissait l'activité.
Pour la conclusion, nous avons essayé d'expliquer le [théorème d'invariance](https://en.wikipedia.org/wiki/Kolmogorov_complexity#Invariance_theorem) aux élèves, en prenant l'exemple d'une description en anglais et d'un dictionnaire de traduction de l'anglais au français et en illustrant à l'aide de dessins sur des slides. Les élèves ont eu beaucoup de mal à comprendre. Il est préférable de ne pas essayer d'expliquer des résultats théoriques et de favoriser une activité simple.

## Conseils pour les prochaines fois

- Garder l'activité simple.
- Ne pas prévoir trop d'exercices, s'attendre à ce que les élèves aillent doucement.
- Discuter avec les élèves sur les différentes manières de décrire une image de manière concise, en les laissant proposer des solutions.
Binary file not shown.
Loading