Modules et Traitements

Modules et Traitements ALS

Vue d’ensemble

Ici, vous trouverez une documentation dĂ©taillĂ©e sur les modules et traitements d’ALS.

De ce qu’est un module Ă  la façon dont fonctionne un traitement, vous trouverez tout ce que vous devez savoir sur les rouages d’ALS.

Module

Un module ALS est une unitĂ© de traitement Ă©laborĂ©e responsable d’une tĂąche spĂ©cifique.

  • Il a son propre moteur
  • Il peut ĂȘtre dĂ©marrĂ© et arrĂȘtĂ© Ă  volontĂ©
  • Il a accĂšs aux paramĂštres dĂ©finis dans les prĂ©fĂ©rences ALS
  • Son comportement peut ĂȘtre contrĂŽlĂ© via l’interface ALS

Les modules sont simples et isolĂ©s. Ils n’ont aucune connaissance des autres parties de l’application. Ils font simplement leur travail et rendent compte Ă  l’application.

Module utilitaire

Un module utilitaire est un module trĂšs simple qui est chargĂ© d’une unique tĂąche auxiliaire Ă  l’intĂ©rieur d’ALS.

ALS utilise 2 modules utilitaires :

  • Scanner
  • Server

Module principal

Un module principal est un module spĂ©cialisĂ© qui est chargĂ© de traitements d’images.

  • Il a sa propre file d’attente d’images en entrĂ©e
  • Il traite chaque image qu’il prend de la file d’attente, puis diffuse le rĂ©sultat Ă  l’application.

Un module principal est dĂ©marrĂ© avec ALS et continue de sonder sa file d’attente pour de nouvelles images Ă  traiter, jusqu’Ă  ce que l’application soit fermĂ©e.

flowchart LR
DÉMARRER((Start))
TEST{{Images dans la file d'attente ?}}
PRENDRE[Prend l'image en tĂȘte de file]
TRAITER[Traite l'image]
DIFFUSER[Diffuse le résultat]
ATTENDRE[Attend 20ms]

DÉMARRER --> TEST
TEST -- Oui --> PRENDRE
TEST -- Non --> ATTENDRE
PRENDRE --> TRAITER
TRAITER --> DIFFUSER
DIFFUSER --> ATTENDRE
ATTENDRE --> TEST

classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: 'Poppins', sans-serif
classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: 'Poppins',sans-serif
classDef wait  fill: #444, stroke: #262, stroke-width: 2px, color: #c6c6c6, font-family: 'Poppins', sans-serif
classDef test fill: #444, stroke: #226,stroke-width: 2px, color: #c6c6c6, font-family:'Poppins', sans-serif

class DÉMARRER bounds
class TEST test
class PRENDRE step
class TRAITER step
class DIFFUSER step
class ATTENDRE wait

Flux de travail du module principal

ALS a 4 modules principaux :

  • Preprocess
  • Stack
  • Process
  • Save

Pipeline

Un pipeline est un module principal spécialisé qui divise son travail en soumettant son image à une série de tùches simples appelées traitement.

Il gĂšre la liste des traitements Ă  exĂ©cuter sur les images de sa file d’attente et l’ordre dans lequel ils sont exĂ©cutĂ©s.

Il s’assure que chaque traitement est exĂ©cutĂ© dans l’ordre, chaque traitement travaillant sur le rĂ©sultat du prĂ©cĂ©dent.

Une fois le dernier traitement terminĂ©, le pipeline diffuse le rĂ©sultat Ă  l’application.

flowchart LR
DÉMARRER((Start))
TEST{{Images dans la file d'attente ?}}
PRENDRE[Prend l'image en tĂȘte de file]
subgraph Traitement
    A[Traitement A]
    B[Traitement B]
end
DIFFUSER[Diffuse le résultat]
ATTENDRE[Attend 20ms]

DÉMARRER --> TEST
TEST -- Oui --> PRENDRE
TEST -- Non --> ATTENDRE
PRENDRE --> A
A -.-> B
B --> DIFFUSER
DIFFUSER --> ATTENDRE
ATTENDRE --> TEST

classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: 'Poppins', sans-serif
classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: 'Poppins',sans-serif
classDef process fill: #333, stroke: #622, stroke-width: 2px, color: #c6c6c6, font-family: 'Poppins', sans-serif
classDef wait  fill: #444, stroke: #262,stroke-width: 2px, color: #c6c6c6, font-family:'Poppins', sans-serif
classDef test fill: #444, stroke: #226, stroke-width: 2px, color: #c6c6c6, font-family: 'Poppins', sans-serif

class DÉMARRER bounds
class TEST test
class PRENDRE step
class A process
class B process
class DIFFUSER step
class ATTENDRE wait

Flux de travail du pipeline

2 des modules principaux sont des pipelines :

  • Preprocess
  • Process

Traitement

Un traitement est la plus petite unité de traitement dans ALS

Il est gĂ©rĂ© par son pipeline parent et est responsable d’une tĂąche spĂ©cifique Ă  effectuer sur une image donnĂ©e.

  • Il a accĂšs aux paramĂštres dĂ©finis dans les prĂ©fĂ©rences ALS
  • Il est contrĂŽlĂ© par son pipeline parent
  • Si l’image donnĂ©e est vide, le traitement renverra une image vide.
  • Si le traitement est dĂ©sactivĂ© dans les prĂ©fĂ©rences, le traitement renverra simplement l’image donnĂ©e, inchangĂ©e.
  • Si une erreur se produit pendant son travail sur l’image, le traitement signalera le problĂšme Ă  ALS et renverra une image vide.

Domaines

Comme indiqué précédemment, ALS est divisé en deux domaines :

  • le domaine des Brutes : oĂč vos brutes sont traitĂ©Ă©s
  • le domaine des Images : oĂč les images d’ALS sont affichĂ©es et sauvegardĂ©es

Ci-dessous, le dĂ©tail des flux Ă  l’intĂ©rieur de chaque domaine.

Domaine des Brutes

Du systĂšme de fichiers au module Stacker

flowchart LR

    subgraph Filesystem
        SCAN_FOLDER@{ shape: lin-cyl, label: "Dossier Scanné" }
    end
        
    subgraph Scanner Module 
        SCANNER_ENGINE[Moteur]
    end
           
    subgraph Preprocess Module
        direction TB
        PREPROCESS_ENGINE[Moteur]
        HOT_PIXEL[Suppression Pixels Chauds]
        DARK_SUB[Soustraction de Dark]
        DEBAYER[Dématriçage]
    end  

    subgraph Stacker Module
        direction TB
        STACK_ENGINE[Moteur]
    end

    SCAN_FOLDER -.-> SCANNER_ENGINE
    SCANNER_ENGINE -.-> PREPROCESS_ENGINE
    PREPROCESS_ENGINE -.-> STACK_ENGINE
    
    classDef module fill:#333,stroke:darkred,stroke-width:2px
    classDef main_module fill:#333,stroke:darkred,stroke-width:4px,color:#c6c6c6,font-family:'Poppins',sans-serif
    classDef process fill:#262626,stroke:darkred,stroke-width:1px,color:#c3c3c3,font-family:'Poppins',sans-serif
    classDef folder fill:#555,stroke:#970,stroke-width:2px,color:#c6c6c6,font-family:'Poppins',sans-serif
    classDef display fill:#555,stroke:#222,stroke-width:2px,color:#c6c6c6,font-family:'Poppins',sans-serif
    
    class SCANNER_ENGINE module
    class PREPROCESS_ENGINE main_module
    class STACK_ENGINE main_module
    class HOT_PIXEL process
    class DARK_SUB process
    class DEBAYER process
    class SCAN_FOLDER folder

Flux à l'intérieur du domaine des subs

Domaine des Images

Du module Stacker aux affichages et au systĂšme de fichiers de sortie

flowchart LR

subgraph Module Stacker
    direction TB
    STACK_ENGINE[Moteur]
end

subgraph Module Process
    direction TB
    PROCESS_ENGINE[Moteur]
    STRETCH[Autostretch]
    LEVELS[Niveaux]
    COLOR_BAL[Balance des couleurs]
end 

subgraph Module Save
    direction TB
    SAVE_ENGINE[Moteur]
end

subgraph SystĂšme de fichiers
    direction TB
    
    WEB_FOLDER@{ shape: lin-cyl, label: "Dossier Web" }
    WORK_FOLDER@{ shape: lin-cyl, label: "Dossier de travail" }
end

subgraph Module Server
    direction TB
    SERVER_ENGINE[Moteur]
end

subgraph Interface
    direction TB
    SCREEN@{ shape: curv-trap, label: "Zone centrale" }
    HISTOGRAM@{ shape: curv-trap, label: "Histogramme" }
end

STACK_ENGINE --> PROCESS_ENGINE

PROCESS_ENGINE --> SAVE_ENGINE
PROCESS_ENGINE ---> SCREEN
PROCESS_ENGINE ---> HISTOGRAM

SAVE_ENGINE --> WEB_FOLDER
SAVE_ENGINE --> WORK_FOLDER

WEB_FOLDER --> SERVER_ENGINE

classDef module fill:#333,stroke:darkred,stroke-width:2px
classDef main_module fill:#333,stroke:darkred,stroke-width:4px,color:#c6c6c6,font-family:'Poppins',sans-serif
classDef process fill:#262626,stroke:darkred,stroke-width:1px,color:#c3c3c3,font-family:'Poppins',sans-serif
classDef folder fill:#555,stroke:#970,stroke-width:2px,color:#c6c6c6,font-family:'Poppins',sans-serif
classDef display fill:#555,stroke:#222,stroke-width:2px,color:#c6c6c6,font-family:'Poppins',sans-serif

class STACK_ENGINE main_module
class PROCESS_ENGINE main_module
class SAVE_ENGINE main_module
class SERVER_ENGINE module
class SCREEN display
class HISTOGRAM display
class WEB_FOLDER folder
class WORK_FOLDER folder
class STRETCH process
class LEVELS process
class COLOR_BAL process

Flux à l'intérieur du domaine des images


Scanner

Documentation dĂ©taillĂ©e du module scanner d’ALS

Preprocess

Documentation dĂ©taillĂ©e du module Preprocess d’ALS

Stacker

Documentation dĂ©taillĂ©e du module Stack d’ALS

Save

Documentation dĂ©taillĂ©e du module Save d’ALS