Skip to content

Application of Seam Carving algorithm displayed with a JavaFX app.

Notifications You must be signed in to change notification settings

JulienElkaim/Seam-Carving-App

Repository files navigation

ResizingApp

School project : Nov. 2018

Table des matières

  1. Introduction
  2. Difficultés rencontrées
  3. Fonctionnalités de base
    1. Ouverture du fichier (Open)
    2. Recadrage (Crop)
    3. Mise à l'échelle (Resize)
    4. Retrait de bandelettes (Carve seams)
    5. Enregistrement du fichier (Save)
  4. Extensions
    1. Persistance des modifications
    2. Remise à zéro des modifications
    3. Zoom
    4. Informations utilisateur selon contexte
    5. Choix de la direction du traitement d'image
    6. Colorisation
  5. Interface utilisateur
    1. Aperçu de l'interface utilisateur
    2. Affichages contextuels
    3. Raccourcis clavier
    4. Fonction d'aide (Help)
  6. Exemple de résultats

Introduction

Java 11, JavaFx

Rendu : 30 novembre

sujet

FXML

L’objectif de ce projet est l’implémentation d’une application de redimensionnement d’image en Java. Cette application permettra d'effectuer les opérations suivantes sur une image : recadrage, mise à l’échelle et seam carving.

Difficultés rencontrées

  • resizing (mise à l'échelle)

    • à effectuer sur la BufferedImage plutôt que sur l'ImageView
  • crop (recadrage)

    • dépendant du FXML et de sa définition de l'ImageView
  • gradient

    • a soulevé le problème de la copie de la BufferedImage
  • on a rencontré des erreurs de type NullPointerException. Il a fallu résoudre ce problème par des if pour traiter les les exceptions

  • quand nous avons travaillé avec les images, on a remarqué qu'il était nécessaire de les cloner pour en avoir une bonne copie

  • l'interface utilisateur plante durant le processing -> trouver un moyen de faire tourner les tâches en arrière plan

  • rajout d'une image de taille plus faible que l'image du château (Broadway) pour que les opérations soient plus rapides à effectuer et à tester

  • nous avons rencontrés des bugs et ajouté des tests afin de les trouver

  • problèmes lors du traitement des différents canaux de couleur. On a donc ajouté un enum pour éviter de se mélanger et clarifier le traitement des différentes couleurs.

Fonctionnalités de base

Ouverture du fichier (Open)

Cette opération permet d'ouvrir un fichier contenant une image, dans le but de l'éditer.

Choix d'implémentation :

  • Ajout d'un chemin par défaut contenant plusieurs images d'exemple.
  • Limitation aux fichiers image de type JPEG.

Mode d'emploi : Au clavier Ctrl + O ou à partir du menu File > Open.

Recadrage (Crop)

Cette opération découpe l'image pour ne garder que le pourcentage de l'image d'origine choisi avec le curseur.

Choix d'implémentation :

  • Pour le recadrage suivant la largeur, on fait le choix de ne garder que la partie gauche de l'image.
  • Pour le recadrage suivant la hauteur (extension), on fait le choix de ne garder que la partie haute de l'image.

Mise à l'échelle (Resize)

Cette opération permet de changer la largeur ou la hauteur de l'image pour qu'elle tienne dans la taille choisie avec le curseur.

Retrait de bandelettes (Carve seams)

Nous suivons cet algorithme.

Choix d'implémentation :

  • Pour le Seam Carving suivant la largeur, les bandelettes verticales sont détruites une par une pour éviter des erreurs de suppression.
  • Pour le Seam Carving suivant la hauteur (extension), les bandelettes horizontales sont détruites une par une pour éviter des erreurs de suppression.

Enregistrement du fichier (Save)

Cette opération permet d'écrire sur le disque le fichier actuellement ouvert.

Choix d'implémentation :

  • Ajout d'un chemin par défaut contenant plusieurs images d'exemple.
  • Limitation aux fichiers image de type JPEG.

Mode d'emploi : Au clavier Ctrl + S ou à partir du menu File > Save.

Extensions

Persistance des modifications

Fonctionnalité : permet d'enregistrer les modifications sur image depuis le dernier enregistrement (checkpoint).

Mode d'emploi : Au clavier Ctrl + V ou à partir du menu Changes > Create checkpoint.

Mis en oeuvre car il n'enregistre que les modifications, il ne crée pas pour autant un fichier image au même titre que Save.

Remise à zéro des modifications

Fontionalité : permet d'annuler les modifications effectuées depuis le dernier checkpoint

Mode d'emploi : Au clavier Ctrl + Shift + V pour revenir au dernier enregistrement (checkpoint) ou à partir du menu Edit > Cancel changes since checkpoint.

Mis en oeuvre pour permettre à l'utilisateur de revenir en arrière pour éviter d'enchainer les changements innoportuns.

Zoom

Fonctionnalité : Permet de zoomer sur l'image de manière intuitive par un clic de souris.

Mode d'emploi :

  1. Sélectionner la fonction Zoom en appuyant sur le bouton Zoom (option par défaut au lancement)
  2. Ajuster le curseur pour définir le facteur de zoom
  3. Cliquer sur l'image pour définir le centre de zoom

Implémenté pour permettre à l'utilisateur d'obtenir directement une sous image de manière très précise dans l'image. La valeur du curseur est utilisée pour définir le facteur de zoom.

Informations utilisateur selon contexte

Fonctionnalité :

  • Gradients : permet d'afficher le gradient RVB de la couleur de votre choix.
  • Energie et Seam : permet d'afficher le résultat du calcul d'énergie sur l'image, ainsi que la bandelette d'énergie minimale.

Mode d'emploi : Survoler la surface associée.

  • Gradients : un des carrés de couleur pour le gradient de la couleur correspondante.
  • Energie et Seam : le Label d'énergie ou le label de l'énergie et du seam d'énergie minimale.

Mis en oeuvre pour proposer à l'utilisateur une nouvelle façon de faire un choix, différente des boutons "classiques", ils permettent de faire un changement temporaire, juste un affichage temporaire du résulat de l'opération souhaitée. Le résultat est à titre informatif pour permettre à l'utilisateur de faire ses futurs choix d'opération.

Choix de la direction du traitement d'image

Fonctionnalité : Choisir si l'utilisateur souhaite effectuer les traitements d'image selon la hauteur ou la largeur.

Mode d'emploi : Au clavier Ctrl + D ou à partir du menu Edit > Switch direction.

Implémenté pour fournir à l'utilisateur un degré de liberté supérieur dans la modification de l'image en cours de modification.

Colorisation

Fonctionnalité : Permet de renforcer ou réduire l'intensité d'une des trois couleurs R/V/B.

Mode d'emploi : Utiliser le curseur associé à la couleur à modifier. La modification se fait dynamiquement.

Cette utilisation des Listeners permet à l'utilisateur de modifier intrinsèquement son image avant de faire des retouches de redimensionnement.

Raccourcis clavier

Fonctionnalité : Permet d'activer rapidement les fonctionnalités implémentées.

Mode d'emploi : Appui simultané des touches de clavier.

Liste des raccourcis au paragraphe [Interface utilisteur](#Raccourcis clavier).

Permet d'améliorer l'interface en relayant certaines fonctions dans le menu, sans pour autant sacrifier l'expérience utilisateur.

Informations contextuelles

Fonctionnalité : Permet une visualisation directe des caractéristiques de l'outil. Améliore l'expérience utilisateur.

Liste des informations concernées au paragraphe Interface utilisteur.

Mode d'emploi :

  • Position du pointeur : Déplacer le curseur sur l'image affichée. L'affichage se fait dans la barre d'état.
  • Autres informations : lecture de l'affichage dans la barre d'état.

Interface utilisateur

Aperçu de l'interface utilisateur

Interface utilisateur, voir dans dossier img si erreur d'affichage

  • Bandeau supérieur : barre de menu.
  • Bandeau inférieur : barre d'état.
  • Bandeau latéral gauche : commandes et affichages.

Affichages contextuels

  • Traitement en cours : cropping | resizing | seam carving
  • Direction : horizontal | vertical
  • Position du pointeur : x pixels à partir de la gauche, y pixels à partir du haut

Raccourcis clavier

  • Ctrl+O Ouverture (Open) d'un fichier image.
  • Ctrl + D Modification du sens (Direction) des traitements sur image.
  • Ctrl + V Persistance des modifications réalisées (Save checkpoint).
  • Ctrl + Shift + V Annualation (Cancel) des modifications effectués depuis le dernier checkpoint
  • Ctrl + S Enregistrement (Save) des modifications en fichier image.
  • F1
    Ouverture du fichier d'aide.

Fonction d'aide (Help)

Permet d'accéder directement au fichier README.md pour comprendre les fonctionnalités.

Mode d'emploi : Au clavier F1 ou à partir du menu Help.

Exemples de résultats

Les traitements ont été réalisés selon la direction horizontale.

Image d'origine

Image d'origine, voir dans dossier img si erreur d'affichage

Image après recadrage (Crop)

Image après recadrage, voir dans dossier img si erreur d'affichage

Image après mise à l'échelle (Resize)

Image après redimensionnement, voir dans dossier img si erreur d'affichage

Image après suppression de bandelettes (Carve seams)

Image après seam carving, voir dans dossier img si erreur d'affichage

About

Application of Seam Carving algorithm displayed with a JavaFX app.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published