Dissimuler une image – Bac théorique – Section informatique – 2024

Bac Info 26-01-26
33 0

Sujet (Algo et programmation - Bac 2024)

On se propose de dissimuler une image Img2 dans une autre image Imgl de manière discrète en utilisant les étapes de dissimulation détaillées ci-après.

Les deux images sont représentées par deux matrices de même dimension L*C pixels. Un pixel est un enregistrement composé de trois champs R, V et B de type entier (code décimal entre 0 et 255) représentant respectivement les couleurs Rouge, Verte et Bleue.

Exemple : l'enregistrement (80,120,43) représente un pixel dont le champ R = 80, le champ V = 120 et le champ B = 43.

Etapes de dissimulation

- Pour chaque deux pixels de même position dans les images Imgl et Img2 :

1- Conversion binaire : convertir en binaire les deux codes décimaux de la couleur rouge des deux pixels pour obtenir ainsi deux nombres binaires chacun de 8 chiffres : binl pour le pixel de Imgl et bin2 pour le pixel de

 

2- Dissimulation : remplacer les 4 derniers bits (les plus à droite) de binl par les 4 premiers bits (les plus à gauche) du nombre binaire

3- Conversion décimale : convertir la valeur binaire résultat de l'étape "Dissimulation" en décimale qui devient alors la nouvelle valeur de la couleur rouge du pixel de l'image

- Refaire les trois étapes précédentes pour la couleur verte puis pour la couleur bleue.

Travail demandé :

1) Déclarer un type pour les matrices représentant les deux images Img1 et Img2 sachant que 2 < L < 400 et 2 < C < 500, ainsi que tous les types nécessaires à sa déclaration. 2) Ecrire un algorithme d'un module Resultat (Imgl , Img2 , L , C) permettant de dissimuler une image représentée par une matrice Img2 dans une image représentée par une matrice Imgl, en appliquant le principe décrit précédemment sachant que les deux matrices Img1 et Img2 ont le même nombre de lignes L et le même nombre de colonnes C.

3) Ecrire un algorithme d'un module nommé Image (Img1 , L , C , Ch) permettant de générer un fichier texte F contenant les représentations décimales des couleurs des pixels de l'image résultat Une ligne du fichier F correspond à une ligne de la matrice résultat et contient la concaténation des codes des couleurs des pixels structurés comme suit :

- les codes des couleurs d'un pixel sont séparés par un tiret "-".

- les pixels sont séparés par le caractère "#".

NB:

- Le paramètre Ch utilisé dans l'entête du module Image est une chaine de caractères contenant l'emplacement et le nom physique du fichier F.

- Le module demandé doit prendre en charge la création et la fermeture du fichier F.

Exemple :

Pour la matrice résultat Img1 précédente, la concaténation des pixels donne pour :

- la Cre ligne : 181-7-2#180-16-17

- la 2ème ligne : 167-16-112#153-60-91

Et ainsi le contenu du fichier F est :

 

Solution Algorithmique

Dans cet algorithme, On va utiliser quatre fonctions fonctions et quatre procédures

- la fonction saisie()

- la procédure remplir_img()

- la fonction decimal_vers_octet()

- la fonction octet_vers_decimal()

- la procédure afficher_img()

- la fonction dissimuler()

- la procédure resultat()

- la procédure remplir_fichier

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
l entier
c entier
img1 matrice
img2 matrice

 

La fonction saisie

Cette fonction permet de saisir et retourner un entier compris entre binf et bsup en contrôlant la validité de la saisie.

Déclaration des objets

Objet Type / Nature
n entier

 

La procédure remplir_img

Cette procédure permet de remplir une image de l lignes et c colonnes en saisissant, pour chaque pixel, les composantes rouge, verte et bleue.

Déclaration des objets

Objet Type / Nature
i entier
j entier
pixel enregistrement

 

La fonction decimal_vers_octet

Cette fonction transforme un entier décimal en un octet binaire (chaîne de 8 bits).

Déclaration des objets

Objet Type / Nature
i entier
binaire chaîne

 

La fonction octet_vers_decimal

Cette fonction Fonction convertit un octet binaire (8 bits) en nombre décimal

Déclaration des objets

Objet Type / Nature
i entier
decimal entier
puissance entier

 

La procédure afficher_img

La procédure afficher_img affiche à l’écran tous les pixels de l’image sous forme de matrice

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La fonction dissimuler

Cette fonction réalise une dissimulation d’information entre deux valeurs décimales.

Déclaration des objets

Objet Type / Nature
octet1 chaîne
octet2 chaîne

 

La procédure resultat

La procédure resultat dissimule entièrement l’image img2 à l’intérieur de l’image img1, composante par composante et pixel par pixel.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La procédure remplir_fichier

La procédure remplir_fichier sauvegarde l’image finale (contenant l’image dissimulée) dans un fichier texte, en conservant la structure de l’image et les valeurs RGB de chaque pixel.

Déclaration des objets

Objet Type / Nature
i entier
j entier
ligne chaîne

 

Solution en Python

Exécution du programme

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info