Giter Club home page Giter Club logo

imagetools's Introduction

% [POLYTECH APP3] Development project with C langage % October 2017 - December 2017 % Detcheberry Valentin & Vuillemin Anthony

imagetools

Imagetools is a school project made at Polytech Paris Sud. It is develop with C langage.

This project can manipulate BMP and PGM pictures.

Features

  • Read a picture
  • Save a picture
  • Set filters
    • Reversed
    • Horizontal rotation
    • Vertical rotation
    • Linear filtering
      • FIR 1D horizontal
      • FIR 1D vertical
      • FIR 2D with matrix convolution
        • FIR 2D border x
        • FIR 2D border y
        • Sobel filter
  • Get histogram
    • With only intensity
    • With all component (only for BMP)
  • Save histogram
  • Set histogram equalisation

Interfaces

Imagetools have 3 interfaces :

  • Console interface
  • Commande line interface
  • Graphical interface

Compilation

To compile the whole project : make

If you only want one interface :

  • Console interface : make ci
  • Command line interface : make cli
  • Graphical interface : make gui

Use

CI : Console interface

Launch : ./imagetools-ci.out

CLI : Command line interface

Launch ./imagetools-cli.out

Command's list

  • Open an image (-p for pgm and -b for bmp)
  • Set a filter
    • --gray
    • --reversed
    • --h-rotate
    • --v-rotate
    • --fir1d-h (+ int_depth)
    • --fir1d-v (+ int_depth)
    • --fir2d-x
    • --fir2d-y
    • --sobel
    • --equalize-hist
  • Get histogram (--histogram + r,g,b,i or c + path)
  • Save image (-s path)

Each command will be apply in the order which they are passed

Examples

We get lena.ascii.pgm, and we set the reversed filter, we save the intensity histogram and save the new picture as reversed/lena.ascii.pgm

./imagetools -p img/lena.ascii.pgm --reversed --histogram i histogram/lena.ascii.pgm -s reversed/lena.ascii.pgm

GUI : Graphical interface

Launch ./imagetools-gui.out

imagetools's People

Contributors

hagbuck avatar sireconflexe avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

imagetools's Issues

Conception d'une interface console

Concevoir et désigner les interfaces console et graphique
Chaque interface doit être le plus user friendly possible.

Se référer au README.md pour avoir la liste non exhaustive des fonctionnalité à intégrer

Gestion des PGM P5

Il faudrait si possible gérer les PGM P5 qui sont des PGM binaire alors que les PGM P2 sont des fichiers plats

Histogramme changer les couleurs

Il faudrait changer les couleurs de l'histogramme. Que le fond soit noir et les trait blanc, ce qui aurait plus de sans si on fessait un cumul des différentes composante de l'histogramme

Ajout des const

Il faut ajouter des const dans les paramètres surtout dans le PGM mais aussi dans le BMP.

Rappel:

TYPE* ptr : Le pointeur peut venir pointer autre chose

TYPE* const ptr : Le pointeur ne peut pas pointer autre chose, mais ce qu'il pointe peut être modifier

const TYPE* const ptr : Le pointeur ne peut pas être modifier ainsi que ce qu'il pointe

[PGM]Gestion du paramètre NULL

Dans le cas où l'utilisateur passe un pointeur NULL aux fonctions, cela risque de faire planter les fonctions. Il faut gérer ce cas là

Sauvegarder une PGM

  • Transformer une structure PGM en chaîne de caractères
  • Enregistrer la chaîne dans un fichier .PGM

Histogramme cumulé

Il serait intéressant de développer des histogramme cumulé, voire nécessaire pour l'égalisation

Histogramme du PGM

Ajout d'une structure qui contient un Histogramme (Conception de la structure)
Ajout d'une fonction prenant un PGM_image et qui renvoie son Histogramme

[GUI] Listing dossier

Lister le contenue d'un dossier et pouvoir naviger simplement. Il faut designer et concevoir les actions possible.

On utilisera surement dirent.h. Sinon GTK+ mais sa licence GPL contaminera notre MIT

[BMP] Histogramme

Créer une structure permettant la représentation d'un histogramme. Ainsi que la possibilité de le sauvegarder en format image

[BMP] Segmenter RGB

Les structures et fonctions RGB commencent à devenir nombreuse, il faudrait les mettre dans un autre fichier

[GUI] Choix de la techno

Il faut choisir la bibliothèque à utiliser pour développer l'interface graphique.

Il faut prendre en compte, la technologie en elle même et la compatibilité de la licence avec nos objectifs

Filtre inverse

Il faut créer un filtre qui inverse l'image

Il faut définir si on applique le filtre sur le PGM_image directement ou si la fonction de filtre renvoi un autre PGM_image.... Ou les deux !

[GUI] Affichage des histogrammes

Dans l'idéal on aurait aimé pouvoir afficher les histogrammes dans la fenêtre, mais cela s'avère un petit peux compliqué. Pour l'instant on ne peut que les sauvegarder.

Le problème c'est qu'on affiche des BMP_image et donc on convertie les histogramme en image, or c'est beaucoup plus difficile de réduire un BMP_image en hauteur qu'un BMP_histogramme

Filtre inverse BMP

Concevoir un fonction qui prend un BMP (#5) et qui renvois un autre BMP inversé

[BUG] stack smashing detecte

Pendant enregistrement d'une image PGM
*** stack smashing detected ***: <unknown> terminated Aborted (core dumped)
Dépassement mémoire.
La taille du tableau contenant la chaîne de caractères était définit par #define FILE_MAX_SIZE 2048. La valeur à été passé a 4096. Dans l'idéal il faudrait allouer la mémoire nécessaire plutôt que de passer par une constante.

Rerédiger le Makefile

Pour les version à suivre, il faudrait mettre à jour le Makefile et le mettre en Anglais.

Pourquoi pas en proposer plusieurs dans différentes langue ? A voire plus tard

Fichier de test en masse

Il faudrait faire un script sh qui effectue un certain nombre d'opération sur plusieurs fichier afin de générer plusieurs images de rendu pour gagner du temps lors de la démonstration et pour avoir un référentiel de performance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.