Il y a quelques mois, un client JMP a contacté le support technique de JMP pour en savoir plus sur la fonctionnalité d'image dans JMP 9 . En particulier, le client a demandé s'il existait une fonction permettant de mélanger deux images. Le support technique m'a transmis cette question.
J'avais ajouté des fonctionnalités d'image dans JMP 9, notamment un certain nombre de fonctions permettant de manipuler une seule image. Mais je n'avais ajouté aucune fonction qui agissait sur plusieurs images ensemble. J'ai réfléchi à cette requête et je me suis rendu compte que ce serait assez facile à faire en langage JSL (JMP Scripting Language) en utilisant les fonctionnalités existantes.

J'ai rapidement mis en place un script JSL simple pour mélanger deux images. L'interface graphique permet à l'utilisateur de spécifier deux images et de contrôler le rapport Image1 à Image2. Il affiche également l'image fusionnée résultante à l'utilisateur.
Les boutons, nommés Image1 et Image2, ouvrent un sélecteur de fichier et permettent à l'utilisateur de naviguer vers les images à fusionner. Une fois qu'une image est sélectionnée, l'utilisateur obtient une petite vue de l'image. Le curseur définit la proportion entre Image1 et Image2. Avec le pouce à gauche du curseur, le résultat est 100% Image1. Un pouce centré sur le curseur donnera 50% Image1 et 50% Image2.
La grande zone d’affichage située en haut permet d’afficher les résultats des deux images fusionnées. L'image fusionnée aura la même taille que les images d'origine et la zone de visualisation sera redimensionnée en conséquence. Actuellement, je suppose que les deux images à mélanger ont la même taille. Finalement, j'ajouterai peut-être un peu de logique pour gérer le cas où ils sont différents. Ou peut-être que je vais laisser ça comme un exercice pour vous!
La motivation pour vouloir cette fonctionnalité était à l'origine de comparer les images prises avant et après une tornade. Une tornade mortelle sur EF5 avait frappé Joplin (Missouri) et l’utilisateur de JMP souhaitait comparer ces images de manière fusionnée. J'ai cherché sur Internet sur Google et trouvé des images prises autour de Joplin avant et après la tornade. Les images n'étaient pas exactement alignées, mais elles étaient suffisamment proches pour que vous puissiez travailler avec. J'ai manipulé les images en dehors de JMP pour mieux les aligner, et les ai rognées pour avoir la même taille. Voici un exemple d'un ensemble d'images avant et après avec un mélange de 50%.

Vous pouvez télécharger l’ensemble du script JSL à partir de la Echange de fichiers JMP . Le script s'appelle ImageBlend.jsl . Mais le code le plus intéressant du script est la fonction de fusion:
doBlend = expr (
{mat1R, mat1G, mat1B} = img1 << getPixels ( "rgb" )
{mat2R, mat2G, mat2B} = img2 << getPixels ( "rgb" )
mat3R = mat2R * par + mat1R * ( 1,0 - par);
mat3G = mat2G * par + mat1G * ( 1,0 - par);
mat3B = mat2B * par + mat1B * ( 1,0 - par);
img3 << setPixels ( "rgb" , {mat3R, mat3G, mat3B});
imgBlendBox << reshow;
)
La commande getPixels ("rgb") renvoie chaque image sous forme de collection de trois matrices - une pour chaque composant de couleur, rouge, vert et bleu. Pour mélanger les images, nous multiplions Image2 par le pourcentage, puis nous l'ajoutons à Image1 multiplié par 1 moins le pourcentage. Nous définissons ensuite cela comme image résultante, Image3. C'est tout ce qu'on peut en dire. Pour une explication plus détaillée de getPixels (), ainsi que d’autres fonctionnalités d’image, consultez un autre de mes blogs, Améliorez votre image avec JMP 9 .
Si vous avez assisté au JMP Sommet Découverte 2011 Tout cela peut vous paraître familier. Je l'ai démo dans le cadre de ma présentation, L’image n’est pas tout, mais c’est quelque chose dans JMP 9 , bien que vous puissiez reconnaître que j’ai décidé de modifier légèrement l’interface.
Comme toujours, laissez-moi savoir ce que vous pensez.