SlideShare ist ein Scribd-Unternehmen logo
1 von 20
MANIPULATION DES
IMAGES IRM SUR
NAVIGATEUR
Tarik Zakaria Benmerar
Equipe ParIMed
LES LOGICIELS EXISTANTS DE
MANIPULATION DES IMAGES IRM
LES APPORTS DU NAVIGATEUR
 Zéro Installation.
 Environnement d’exécution plus sûr
(Sandboxing).
 Pervasivité (Exécution sur PC, mobile,
tablette, etc.).
 Facilité d’accès au logiciel (Un seul URL à
taper).
 Centralisation de la maintenance.
NÉANMOINS LE
NAVIGATEUR EST UN
ENVIRONNEMENT A PART.
LES ÉTAPES À SUIVRE
POUR MANIPULER UNE
IMAGE IRM
(FORMAT NIFTI).
ETAPE 1: LIRE LE FICHIER SOUS
UNE STRUCTURE DE DONNÉES
ARRAY BUFFER
 Array Buffer représente des données brutes
génériques de taille fixe.
 Un Typed Array permet de lire le array buffer
sous un format donné (Entier 32 bits, Float
64 bits, etc.).
 Deux Méthodes pour lire le fichier sour Array
Buffer :
 Requête AJAX (Lecture à partir d’un url).
 Lecture avec un champs fichier (Lecture locale).
ETAPE 1: LIRE LE FICHIER SOUS
UNE STRUCTURE DE DONNÉES
ARRAY BUFFER
 Récupération d’un Array Buffer avec Ajax
:
 Utilisation d’un standard XHR2 responseType.
 Pas de support dans jQuery Ajax.
ETAPE 1: LIRE LE FICHIER SOUS
UNE STRUCTURE DE DONNÉES
ARRAY BUFFER
 Patch XHR2 responseType pour jQuery :
ETAPE 1: LIRE LE FICHIER SOUS
UNE STRUCTURE DE DONNÉES
ARRAY BUFFER
 Récupération d’un Array Buffer avec
champs file :
 Ecouter l’évènement change dans un champs file.
 Utiliser un FileReader et la méthode
readAsArrayBuffer() pour lire le fichier.
ETAPE 1: LIRE LE FICHIER SOUS
UNE STRUCTURE DE DONNÉES
ARRAY BUFFER
$(‘#file’).on(‘change’, function ( e ) {
var fileReader = new FileReader(),
file = e.target.files[ 0 ];
//Read the file locally
fileReader.onload = function ( e )
{
var fileArrayBuffer =
e.target.result;
//Manipuler le fichier ici.
}
fileReader.readAsArrayBuffer( file
);
});
ETAPE 2 : PARSER LE FICHIER IRM
SOUS FORMAT NIFTI
 Utiliser un Typed Array pour extraire
chaque partie du fichier d’IRM.
ETAPE 2 : PARSER LE FICHIER IRM
SOUS FORMAT NIFTI
 Documentation NIFTI (Header +
Volumes).
ETAPE 2 : PARSER LE FICHIER IRM
SOUS FORMAT NIFTI
 Comment extraire une donnée de
l’arraybuffer.var typeBytesNumber = new Array( 1
).byteLength,
bytes = new ArrayType( size ),
targetBytes = new Uint8Array( dataBuffer,
dataPointer, size * typeBytesNumber ),
bytesShadow = new Uint8Array( bytes.buffer
ETAPE 3 : AFFICHER UNE COUPE
IRM.
 Les volumes IRM sont en faites des
intensités de signaux
 Pour l’affichage 2D, on utilise Canvas2D.
 Pour l’affichage 3D, on utilise WebGL.
ETAPE 3 : AFFICHER UNE COUPE
IRM.
 Canvas2D.
 Créer un canvas avec hauter et largeur égale
à la coupe.
 canvas.getImageData() pour éxtraire un
image data comportant un typed array pour le
canvas.
 Insérer le niveau de gris dans l’image data a
partir des données IRM, en prenant en compte
les intensités minimales et maximales.
 canvas.getPutImageData() pour l’affichage
ETAPE 3 : AFFICHER UNE COUPE
IRM.
 Canvas2D.
for( var i = 0; i < canvas.width; i++ ) {
for( var j = 0; j < canvas.height; j++ ) {
var color = ( volume[ i + indiceCoupe * dimX + j *
dimX * dimY ] / max ) * 255;
imgData.data[ ( i + j * canvas.width ) * 4 ] =
color;
imgData.data[ ( i + j * canvas.width ) * 4 + 1 ] =
color;
imgData.data[ ( i + j * canvas.width ) * 4 + 2 ] =
color;
}
ETAPE 3 : AFFICHER UNE COUPE
IRM.
 WebGL.
 La bibliothèque Three.JS offre le DataTexture
pour avoir une texture a partir d’un typed
array.
ETAPE 4 : INTERAGIR AVEC LA
COUPE IRM.
 Sur Desktop : Utilisation des évenements
jQuery (mousemove, mouseup, mouse
down).
 Utiliser le plugin jQuery.mousewheel pour
gérer la roulette.
 Sur Mobile : Une bibliothèque tel que
QuoJS fera l’affaire.
 Utiliser des évènements qui se déclenche
pendant l’intéraction(Swiping, Pinching,
Rotating), mais pas à la fin (Swipe, Pinch).
D’AUTRES CONSIDIRATIONS
TECHNIQUES.
 Web Worker : Traitement sur un Thread
pour ne pas bloquer l’interface
utilisateur.
 Indexed Database : Stockage sur le client des
images.
MERCI POUR VOTRE ATTENTION.

Weitere ähnliche Inhalte

Andere mochten auch

Syse - Projet Méthanisation à Pusignan
Syse - Projet Méthanisation à PusignanSyse - Projet Méthanisation à Pusignan
Syse - Projet Méthanisation à PusignanSerge Barge
 
Presentacion master eeatd_201516 sls
Presentacion master eeatd_201516 slsPresentacion master eeatd_201516 sls
Presentacion master eeatd_201516 slsJordi Quintana
 
Connectwave, la plateforme d'expérimentation et d'usages des Objets Connectés
Connectwave, la plateforme d'expérimentation et d'usages des Objets ConnectésConnectwave, la plateforme d'expérimentation et d'usages des Objets Connectés
Connectwave, la plateforme d'expérimentation et d'usages des Objets ConnectésCNRFID
 
ChamiloCon: Recursos de Software Libre
ChamiloCon: Recursos de Software Libre ChamiloCon: Recursos de Software Libre
ChamiloCon: Recursos de Software Libre Alexandro Colorado
 
Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...
Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...
Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...adreani
 
Espiritualidad Practica 2
Espiritualidad  Practica 2Espiritualidad  Practica 2
Espiritualidad Practica 2Luis Gaviria
 
Arquitectura de la Información
Arquitectura de la InformaciónArquitectura de la Información
Arquitectura de la Informaciónhectorium
 
Hijoscomonavios
HijoscomonaviosHijoscomonavios
Hijoscomonavioskatrojcr
 
por que la Biblia
por que la Bibliapor que la Biblia
por que la BibliaEuler
 
Compras para tí
Compras para tíCompras para tí
Compras para tídjcani
 
VersióN Para Exponer En 1ras Jornadas En Chubut Inicadoresd
VersióN Para Exponer En 1ras Jornadas En  Chubut  InicadoresdVersióN Para Exponer En 1ras Jornadas En  Chubut  Inicadoresd
VersióN Para Exponer En 1ras Jornadas En Chubut Inicadoresdhildaberon
 
Percepcion y su relacion con la realidad
Percepcion y su relacion con la realidadPercepcion y su relacion con la realidad
Percepcion y su relacion con la realidadEuler
 
Rescate Proyecto Divino
Rescate Proyecto DivinoRescate Proyecto Divino
Rescate Proyecto DivinoEuler
 
Las Redes Informaticas.
Las Redes Informaticas.Las Redes Informaticas.
Las Redes Informaticas.mirima
 
Eco Guide Partie 2
Eco Guide Partie 2Eco Guide Partie 2
Eco Guide Partie 2cdtsomme
 
presentacion lo que sea
presentacion lo que seapresentacion lo que sea
presentacion lo que seaadproycom
 

Andere mochten auch (20)

FELIZ NAVIDAD
FELIZ NAVIDADFELIZ NAVIDAD
FELIZ NAVIDAD
 
Syse - Projet Méthanisation à Pusignan
Syse - Projet Méthanisation à PusignanSyse - Projet Méthanisation à Pusignan
Syse - Projet Méthanisation à Pusignan
 
Presentacion master eeatd_201516 sls
Presentacion master eeatd_201516 slsPresentacion master eeatd_201516 sls
Presentacion master eeatd_201516 sls
 
Connectwave, la plateforme d'expérimentation et d'usages des Objets Connectés
Connectwave, la plateforme d'expérimentation et d'usages des Objets ConnectésConnectwave, la plateforme d'expérimentation et d'usages des Objets Connectés
Connectwave, la plateforme d'expérimentation et d'usages des Objets Connectés
 
ChamiloCon: Recursos de Software Libre
ChamiloCon: Recursos de Software Libre ChamiloCon: Recursos de Software Libre
ChamiloCon: Recursos de Software Libre
 
Edf
EdfEdf
Edf
 
Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...
Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...
Commentaires de M. André Marie, chef du bureau des pratiques anti-concurrenti...
 
Le Monde
Le MondeLe Monde
Le Monde
 
Espiritualidad Practica 2
Espiritualidad  Practica 2Espiritualidad  Practica 2
Espiritualidad Practica 2
 
Arquitectura de la Información
Arquitectura de la InformaciónArquitectura de la Información
Arquitectura de la Información
 
Hijoscomonavios
HijoscomonaviosHijoscomonavios
Hijoscomonavios
 
por que la Biblia
por que la Bibliapor que la Biblia
por que la Biblia
 
Compras para tí
Compras para tíCompras para tí
Compras para tí
 
VersióN Para Exponer En 1ras Jornadas En Chubut Inicadoresd
VersióN Para Exponer En 1ras Jornadas En  Chubut  InicadoresdVersióN Para Exponer En 1ras Jornadas En  Chubut  Inicadoresd
VersióN Para Exponer En 1ras Jornadas En Chubut Inicadoresd
 
Percepcion y su relacion con la realidad
Percepcion y su relacion con la realidadPercepcion y su relacion con la realidad
Percepcion y su relacion con la realidad
 
Rescate Proyecto Divino
Rescate Proyecto DivinoRescate Proyecto Divino
Rescate Proyecto Divino
 
Las Redes Informaticas.
Las Redes Informaticas.Las Redes Informaticas.
Las Redes Informaticas.
 
Eco Guide Partie 2
Eco Guide Partie 2Eco Guide Partie 2
Eco Guide Partie 2
 
Les jours de la semaine
Les jours de la semaineLes jours de la semaine
Les jours de la semaine
 
presentacion lo que sea
presentacion lo que seapresentacion lo que sea
presentacion lo que sea
 

Ähnlich wie Manipulation des images IRM sur navigateur - Informatique Humaine et Médicale CSE 2014

Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderMohamed Ben Bouzid
 
Communication avec le serveur Astrisk
Communication avec le serveur AstriskCommunication avec le serveur Astrisk
Communication avec le serveur AstriskImnaTech
 
Déploiement d'un serveur Asterisk
Déploiement d'un serveur Asterisk Déploiement d'un serveur Asterisk
Déploiement d'un serveur Asterisk ImnaTech
 
Tuto Serveur Vocal Interactif (SVI ou IVR)
Tuto Serveur Vocal Interactif  (SVI ou IVR)Tuto Serveur Vocal Interactif  (SVI ou IVR)
Tuto Serveur Vocal Interactif (SVI ou IVR)Dimitri LEMBOKOLO
 
Présentation_Spark.pptx
Présentation_Spark.pptxPrésentation_Spark.pptx
Présentation_Spark.pptxboulonvert
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOSgcatt
 
Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2Emeric Tapachès
 
utilisation des core dump sous linux
utilisation des core dump sous linuxutilisation des core dump sous linux
utilisation des core dump sous linuxThierry Gayet
 
Nouveautés de zabbix 3.0 par Alain Ganuchaud
Nouveautés de zabbix 3.0 par Alain GanuchaudNouveautés de zabbix 3.0 par Alain Ganuchaud
Nouveautés de zabbix 3.0 par Alain GanuchaudAlain Ganuchaud
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Analyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dumpAnalyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dumpGaëtan Trellu
 
Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Hamza Ben Marzouk
 

Ähnlich wie Manipulation des images IRM sur navigateur - Informatique Humaine et Médicale CSE 2014 (20)

Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey Spider
 
Communication avec le serveur Astrisk
Communication avec le serveur AstriskCommunication avec le serveur Astrisk
Communication avec le serveur Astrisk
 
Déploiement d'un serveur Asterisk
Déploiement d'un serveur Asterisk Déploiement d'un serveur Asterisk
Déploiement d'un serveur Asterisk
 
Tuto Serveur Vocal Interactif (SVI ou IVR)
Tuto Serveur Vocal Interactif  (SVI ou IVR)Tuto Serveur Vocal Interactif  (SVI ou IVR)
Tuto Serveur Vocal Interactif (SVI ou IVR)
 
Snort implementation
Snort implementationSnort implementation
Snort implementation
 
TP2 RMI
TP2 RMITP2 RMI
TP2 RMI
 
Crud
CrudCrud
Crud
 
Spring Batch
Spring BatchSpring Batch
Spring Batch
 
Présentation_Spark.pptx
Présentation_Spark.pptxPrésentation_Spark.pptx
Présentation_Spark.pptx
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
Java RMI
Java RMIJava RMI
Java RMI
 
Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2
 
utilisation des core dump sous linux
utilisation des core dump sous linuxutilisation des core dump sous linux
utilisation des core dump sous linux
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
Nouveautés de zabbix 3.0 par Alain Ganuchaud
Nouveautés de zabbix 3.0 par Alain GanuchaudNouveautés de zabbix 3.0 par Alain Ganuchaud
Nouveautés de zabbix 3.0 par Alain Ganuchaud
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Analyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dumpAnalyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dump
 
Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015Rapport atelier Web App Security 2015
Rapport atelier Web App Security 2015
 
rapportWAS
rapportWASrapportWAS
rapportWAS
 
Protection contre l'ARP poisoning et MITM
Protection contre l'ARP poisoning et MITMProtection contre l'ARP poisoning et MITM
Protection contre l'ARP poisoning et MITM
 

Mehr von Tarik Zakaria Benmerar

Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plusVideostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plusTarik Zakaria Benmerar
 
Chapitre 6 - les instructions de chaînes de caractères
Chapitre 6  - les instructions de chaînes de caractèresChapitre 6  - les instructions de chaînes de caractères
Chapitre 6 - les instructions de chaînes de caractèresTarik Zakaria Benmerar
 
Chapitre 5 - fichiers EXE-COM pour le dos
Chapitre 5 -  fichiers EXE-COM pour le dosChapitre 5 -  fichiers EXE-COM pour le dos
Chapitre 5 - fichiers EXE-COM pour le dosTarik Zakaria Benmerar
 
Chapitre 4 - les instructions de saut et conditions
Chapitre 4  - les instructions de saut et conditionsChapitre 4  - les instructions de saut et conditions
Chapitre 4 - les instructions de saut et conditionsTarik Zakaria Benmerar
 
Chapitre 3 - échanges de données et opérations arithmétiques - binaires
Chapitre 3  - échanges de données et opérations arithmétiques - binairesChapitre 3  - échanges de données et opérations arithmétiques - binaires
Chapitre 3 - échanges de données et opérations arithmétiques - binairesTarik Zakaria Benmerar
 
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...Tarik Zakaria Benmerar
 
Chapitre 2.1 - architecture d'un microprocesseur - bus et communication
Chapitre 2.1 -  architecture d'un microprocesseur - bus et communicationChapitre 2.1 -  architecture d'un microprocesseur - bus et communication
Chapitre 2.1 - architecture d'un microprocesseur - bus et communicationTarik Zakaria Benmerar
 
Chapitre 1 - représentation numérique des données
Chapitre 1  - représentation numérique des donnéesChapitre 1  - représentation numérique des données
Chapitre 1 - représentation numérique des donnéesTarik Zakaria Benmerar
 
Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021Tarik Zakaria Benmerar
 
Chapitre 2 - Protocole Modbus (2020/2021)
Chapitre 2 - Protocole Modbus (2020/2021)Chapitre 2 - Protocole Modbus (2020/2021)
Chapitre 2 - Protocole Modbus (2020/2021)Tarik Zakaria Benmerar
 

Mehr von Tarik Zakaria Benmerar (20)

Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plusVideostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
 
Chapitre 8 - les entrées - sorties
Chapitre 8  - les entrées - sortiesChapitre 8  - les entrées - sorties
Chapitre 8 - les entrées - sorties
 
Cyber pink - Time Management
Cyber pink -  Time Management Cyber pink -  Time Management
Cyber pink - Time Management
 
Chapitre 6 - couche transport
Chapitre 6  - couche transportChapitre 6  - couche transport
Chapitre 6 - couche transport
 
Chapitre 5 - couche réseaux
Chapitre 5 - couche réseauxChapitre 5 - couche réseaux
Chapitre 5 - couche réseaux
 
Chapitre 4 - couche liaison
Chapitre 4 - couche liaisonChapitre 4 - couche liaison
Chapitre 4 - couche liaison
 
Chapitre 3 - connecteurs et câbles
Chapitre 3 -   connecteurs et câblesChapitre 3 -   connecteurs et câbles
Chapitre 3 - connecteurs et câbles
 
Chapitre 2 - Transmission
Chapitre 2  - TransmissionChapitre 2  - Transmission
Chapitre 2 - Transmission
 
Chapitre 1 - notions fondamentales
Chapitre 1 -  notions fondamentalesChapitre 1 -  notions fondamentales
Chapitre 1 - notions fondamentales
 
Chapitre 9 - les interruptions
Chapitre 9 -  les interruptionsChapitre 9 -  les interruptions
Chapitre 9 - les interruptions
 
Chapitre 7 - la pile
Chapitre 7 -  la pileChapitre 7 -  la pile
Chapitre 7 - la pile
 
Chapitre 6 - les instructions de chaînes de caractères
Chapitre 6  - les instructions de chaînes de caractèresChapitre 6  - les instructions de chaînes de caractères
Chapitre 6 - les instructions de chaînes de caractères
 
Chapitre 5 - fichiers EXE-COM pour le dos
Chapitre 5 -  fichiers EXE-COM pour le dosChapitre 5 -  fichiers EXE-COM pour le dos
Chapitre 5 - fichiers EXE-COM pour le dos
 
Chapitre 4 - les instructions de saut et conditions
Chapitre 4  - les instructions de saut et conditionsChapitre 4  - les instructions de saut et conditions
Chapitre 4 - les instructions de saut et conditions
 
Chapitre 3 - échanges de données et opérations arithmétiques - binaires
Chapitre 3  - échanges de données et opérations arithmétiques - binairesChapitre 3  - échanges de données et opérations arithmétiques - binaires
Chapitre 3 - échanges de données et opérations arithmétiques - binaires
 
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
 
Chapitre 2.1 - architecture d'un microprocesseur - bus et communication
Chapitre 2.1 -  architecture d'un microprocesseur - bus et communicationChapitre 2.1 -  architecture d'un microprocesseur - bus et communication
Chapitre 2.1 - architecture d'un microprocesseur - bus et communication
 
Chapitre 1 - représentation numérique des données
Chapitre 1  - représentation numérique des donnéesChapitre 1  - représentation numérique des données
Chapitre 1 - représentation numérique des données
 
Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021
 
Chapitre 2 - Protocole Modbus (2020/2021)
Chapitre 2 - Protocole Modbus (2020/2021)Chapitre 2 - Protocole Modbus (2020/2021)
Chapitre 2 - Protocole Modbus (2020/2021)
 

Manipulation des images IRM sur navigateur - Informatique Humaine et Médicale CSE 2014

  • 1. MANIPULATION DES IMAGES IRM SUR NAVIGATEUR Tarik Zakaria Benmerar Equipe ParIMed
  • 2. LES LOGICIELS EXISTANTS DE MANIPULATION DES IMAGES IRM
  • 3. LES APPORTS DU NAVIGATEUR  Zéro Installation.  Environnement d’exécution plus sûr (Sandboxing).  Pervasivité (Exécution sur PC, mobile, tablette, etc.).  Facilité d’accès au logiciel (Un seul URL à taper).  Centralisation de la maintenance.
  • 4. NÉANMOINS LE NAVIGATEUR EST UN ENVIRONNEMENT A PART.
  • 5. LES ÉTAPES À SUIVRE POUR MANIPULER UNE IMAGE IRM (FORMAT NIFTI).
  • 6. ETAPE 1: LIRE LE FICHIER SOUS UNE STRUCTURE DE DONNÉES ARRAY BUFFER  Array Buffer représente des données brutes génériques de taille fixe.  Un Typed Array permet de lire le array buffer sous un format donné (Entier 32 bits, Float 64 bits, etc.).  Deux Méthodes pour lire le fichier sour Array Buffer :  Requête AJAX (Lecture à partir d’un url).  Lecture avec un champs fichier (Lecture locale).
  • 7. ETAPE 1: LIRE LE FICHIER SOUS UNE STRUCTURE DE DONNÉES ARRAY BUFFER  Récupération d’un Array Buffer avec Ajax :  Utilisation d’un standard XHR2 responseType.  Pas de support dans jQuery Ajax.
  • 8. ETAPE 1: LIRE LE FICHIER SOUS UNE STRUCTURE DE DONNÉES ARRAY BUFFER  Patch XHR2 responseType pour jQuery :
  • 9. ETAPE 1: LIRE LE FICHIER SOUS UNE STRUCTURE DE DONNÉES ARRAY BUFFER  Récupération d’un Array Buffer avec champs file :  Ecouter l’évènement change dans un champs file.  Utiliser un FileReader et la méthode readAsArrayBuffer() pour lire le fichier.
  • 10. ETAPE 1: LIRE LE FICHIER SOUS UNE STRUCTURE DE DONNÉES ARRAY BUFFER $(‘#file’).on(‘change’, function ( e ) { var fileReader = new FileReader(), file = e.target.files[ 0 ]; //Read the file locally fileReader.onload = function ( e ) { var fileArrayBuffer = e.target.result; //Manipuler le fichier ici. } fileReader.readAsArrayBuffer( file ); });
  • 11. ETAPE 2 : PARSER LE FICHIER IRM SOUS FORMAT NIFTI  Utiliser un Typed Array pour extraire chaque partie du fichier d’IRM.
  • 12. ETAPE 2 : PARSER LE FICHIER IRM SOUS FORMAT NIFTI  Documentation NIFTI (Header + Volumes).
  • 13. ETAPE 2 : PARSER LE FICHIER IRM SOUS FORMAT NIFTI  Comment extraire une donnée de l’arraybuffer.var typeBytesNumber = new Array( 1 ).byteLength, bytes = new ArrayType( size ), targetBytes = new Uint8Array( dataBuffer, dataPointer, size * typeBytesNumber ), bytesShadow = new Uint8Array( bytes.buffer
  • 14. ETAPE 3 : AFFICHER UNE COUPE IRM.  Les volumes IRM sont en faites des intensités de signaux  Pour l’affichage 2D, on utilise Canvas2D.  Pour l’affichage 3D, on utilise WebGL.
  • 15. ETAPE 3 : AFFICHER UNE COUPE IRM.  Canvas2D.  Créer un canvas avec hauter et largeur égale à la coupe.  canvas.getImageData() pour éxtraire un image data comportant un typed array pour le canvas.  Insérer le niveau de gris dans l’image data a partir des données IRM, en prenant en compte les intensités minimales et maximales.  canvas.getPutImageData() pour l’affichage
  • 16. ETAPE 3 : AFFICHER UNE COUPE IRM.  Canvas2D. for( var i = 0; i < canvas.width; i++ ) { for( var j = 0; j < canvas.height; j++ ) { var color = ( volume[ i + indiceCoupe * dimX + j * dimX * dimY ] / max ) * 255; imgData.data[ ( i + j * canvas.width ) * 4 ] = color; imgData.data[ ( i + j * canvas.width ) * 4 + 1 ] = color; imgData.data[ ( i + j * canvas.width ) * 4 + 2 ] = color; }
  • 17. ETAPE 3 : AFFICHER UNE COUPE IRM.  WebGL.  La bibliothèque Three.JS offre le DataTexture pour avoir une texture a partir d’un typed array.
  • 18. ETAPE 4 : INTERAGIR AVEC LA COUPE IRM.  Sur Desktop : Utilisation des évenements jQuery (mousemove, mouseup, mouse down).  Utiliser le plugin jQuery.mousewheel pour gérer la roulette.  Sur Mobile : Une bibliothèque tel que QuoJS fera l’affaire.  Utiliser des évènements qui se déclenche pendant l’intéraction(Swiping, Pinching, Rotating), mais pas à la fin (Swipe, Pinch).
  • 19. D’AUTRES CONSIDIRATIONS TECHNIQUES.  Web Worker : Traitement sur un Thread pour ne pas bloquer l’interface utilisateur.  Indexed Database : Stockage sur le client des images.
  • 20. MERCI POUR VOTRE ATTENTION.