Mercredi 31 juillet 2019

Cher Journal,

Divers sujets sont abordés aujourd'hui, dont un de traitement d'images, avec une petite originalité : Léna ne posera pas pour les essais, le modèle est un tantinet différent.

Pulseaudio dans Debian 10

Depuis la sortie de Debian 10 Buster, des plaintes arrivent fréquemment à propos d'un certain site web qui, au démarrage d'une vidéo, se met à voir le son monter à 100%. Ce phénomène serait apparemment causé par Pulseaudio, composant de la pile de son désormais obligatoire pour le support de certains navigateurs web. La solution à ce problème serait de couper un composant qui pourrait se traduire par égaliseur de volume, activé par défaut.

Ce composant est une bête noire des mélomanes, en témoigne Kenneth Parker dans un courriel récent sur la liste de diffusion de Debian. Deux méthodes sont possibles pour le couper. Pour désactiver l'égaliseur au niveau système, le fichier /etc/pulse/daemon.conf doit être édité pour décommenter et régler la variable suivante avec la valeur adaptée :

flat-volumes = no

En tant que simple utilisateur, cette correction peut être apportée dans le répertoire home, plus précisément en créant le fichier ~/.config/pulse/daemon.conf, et en collant le contenu publié ci-dessus.

Un bon moyen de vérifier que le réglage est désormais correct est d'écouter l'un des morceaux mentionnés par Kenneth, soit le Boléro de Ravel, soit le morceau suivant.

Musique

Le mercredi, c'est musique, avec l'Ouverture 1812 de Tchaïkovski. Ce morceau a été popularisé, pour ainsi dire, par le film V for Vandetta, sorti en 2006. La partition requiert un orchestre classique, accompagné de pièces d'artilleries, dont les tirs font partie intégrante de la composition. Étant donné la logistique nécessaire à la sécurité du public et de l'orchestre, l'armement peut être substitué à des coups de masse sur de grosses caisses de résonance. Dans le film, pour les besoins du personnage, les coups de canon sont remplacés par des explosions de charges de démolition.

Tchaïkovski en 1893
Dernier portrait du compositeur Piotr Ilitch Tchaïkovski, tiré en 1893,
     l'homme regarde en direction du preneur de vue.  Le sujet porte une barbe
     blanche de taille moyenne et a le front dégagé, et est assis sur une
     chaise probablement en bois, chichement décorée de diverses moulures.

Normalement, l'enregistrement proposé ne devrait pas avoir été égalisé en volume, enfin c'est mon impression. En plus d'être intéressante, cette composition devrait permettre de vérifier que le problème de Pulseaudio est correctement résolu.

Compression d'images

Quelques rares entrées de journal sont assaisonnées d'illustrations et de figures en tout genre. Afin de diminuer un peu la charge pour la récupération des images dans le flux RSS, ou pour doper la vitesse de chargement des pages sur les connexions à Internet les plus fragile, comme les liaisons satellites, ou derrière les vieux modems, ces illustrations sont en voie de compression. La méthode utilisée est librement inspirée de celle de la version solaire de Low←Tech Magazine, basée sur l'usage du format PNG, combiné à l'usage du dithering, initialement conçu pour rendre les images bénéficiant d'une important profondeur de couleur, typiquement d'une quantification de 24 ou 32 bits, sur des terminaux de plus faible capacité de rendu : 16, voir 8 bits, parfois limité aux nuances de gris, et parfois même uniquement capable de rendus en noir et blanc. Quelques différences reste notables, la première étant qu'un clic sur l'image compressée mène au fichier d'origine, ou tout du moins une version compressée sans pertes, en haute qualité. D'autre part, seule une sélection d'images est compressée ; si les petits détails de la figure sont nécessaires à la compréhension du document, ou si un aspect artistique doit être conservé, alors la compression n'est pas appliquée.

L'entrée du 21 décembre 2018 a permis de faire quelques essais sur un paysage. L'entrée du 11 mars 2019 comporte une photographie ayant subit le même traitement, mais pas les schémas. La technique de compression se fait en quelques étapes :

  1. après obtention de l'image d'origine, de la compression sans perte peut être appliquée si une réduction de la taille du fichier en résulte, ce peut être intéressant avec les bitmaps bruts ou les vieux fichiers GIF, mais si le fichier d'origine est déjà stocké dans un format avec perte, typiquement le JPEG, alors ne rien faire est la meilleure approche ;
  2. l'image compressée sans perte est réduite afin de tenir dans un écran de 800 par 600 pixels, cette passe seule permet déjà de réduire de manière substantielle l'occupation en mémoire de l'image, tout en la rendant relativement facile à lire sur la plupart des écrans, excepté ceux de haute densité de pixels peut-être ;
  3. l'image finale est obtenue par application de algorithme de dithering, et plus précisément en appliquant la méthode de Floyd-Steinberg, paramétré de manière à obtenir une image en noir et blanc, mais sans nuances de gris, et encore moins de couleurs, et le tout est exporté au format PNG avec le moins de fioritures possibles.

Le résultat typique d'une telle compression est une réduction de la taille de l'image à un fichier de moins de 32 kio. Dans le cas présent du tableau de Tchaïkovski, la réduction est d'un ordre de grandeur par rapport à l'original en GIF, qui par ailleurs a été converti en PNG pour gagner quelque kilooctets.

L'une des différences majeures par rapport à Low←Tech est le choix de l'algorithme de dithering, le basique Bayer pour Khris De Decker, auteur des articles du magasine, et Floyd-Steinberg pour moi. La différence entre les deux algorithme est notable en termes d'apparence de l'image résultante, comme visible dans la figure suivante :

Tchaïkovski en 1893, compressé avec l'algorithme de Bayer
Représentation de Tchaïkosvki similaire à la précédente, à l'exception
     notable de l'algorithme de dithering employé, les points noirs participant
     à réguler les nuances de gris sont espacés de manière régulière, mais le
     détail des formes de l'image d'origine est plus flou que précédemment.

Toutefois, l'algorithme de Bayer compresse beaucoup mieux que Floyd-Steinberg quand le format PNG est utilisé pour embarquer l'image. Ma version du portrait de Tchaïkovski pèse 24 437 octets, tandis que l'hypothétique version de Low←Tech montrée dans la précédente figure ne pèse plus que 11 924 octets. Néanmoins, ma préférence va a la version de Floyd-Steinberg car l'image résultante a un petit côté gravure, que la version de Bayer échoue à rendre. D'ailleurs, la version compressée avec pertes de mes images porte une extension -gravure pour être différenciée de l'originale.

Un intérêt auxiliaire à toute cette méthode de compression particulière est que si d'aventure cette entrée de journal devait être imprimée, alors l'utilisation d'un imprimante monochrome ne serait pas le moins du monde gênante. Le format JPEG ne semble pas permettre ce genre de manipulation, en tout cas pas facilement. Ceci étant appliquer une telle compression avec une forte perte permet d'obtenir des images tout à fait capable de rivaliser en taille avec les illustrations sous dithering en PNG. La version compressée à 15% de l'image d'origine, après réduction de la résolution, a une taille de 11 752 octets et a l'allure suivante :

Tchaïkovski en 1893, compressé en JPEG à 15% de la qualité de l'image d'origine
Toujours la même image de Tchaïkovski, cette fois fortement compressée au
     format JPEG, donc avec pertes, et à ce niveau de compression, le sujet à
     toujours la même allure, même si quelques artefacts peuvent apparaitre,
     notamment au niveau de la partie supérieure du dossier de la chaise ou les
     aplats de couleur carrés sur la veste.

Le logiciel Gimp est utilisé pour procéder aux différentes transformations et conversions ; l'outillage nécessaire est caché dans le menu Image → Mode → Indexed pour toute la partie concernant le dithering monochrome. Éventuellement, ImageMagick, et sa commande convert, pourrait être utilisé pour automatiser ce processus.

[ICO]NameLast modifiedSize
[PARENTDIR]Parent Directory  -
[IMG]Tchaikovsky.png2019-07-31 17:50 209K
[IMG]Tchaikovsky-gravure.png2019-07-31 17:50 24K
[IMG]Tchaikovsky-bayer.png2019-07-31 19:02 12K
[IMG]Tchaikovsky-15pc.jpg2019-07-31 19:48 11K

  —