jeudi 6 août 2015

GMIC sur Windows 10 64 bits

Les premiers tests de G'MIC sur Windows 10 Pro. 64 bits sont bons :o)
Voici deux copies d'écran.


G'MIC Gimp




G'MIC en lignes de commandes





jeudi 23 juillet 2015

Version GMIC 1.6.5.1 stable du 23 juillet 2015

Cette version stable 1.6.5.1 stable du 23 juillet 2015 est disponible en téléchargement à partir de ce lien :
Volume : 24,5 Mo (25 726 844 octets)


jeudi 25 juin 2015

Environnement de compilation Windows (Juin 2015)


À partir du 25 juin 2015 nous proposons un nouvel environnement de compilation utilisant les compilateurs GCC.

Ce nouvel environnement remplace "petit-msys-mingw-gimp28" et "petit-msys-mingw-64bits-gimp28" et permet de compiler des binaires pour Windows en 32 bits et en 64 bits.

Il est disponible à partir de ce lien :
http://www.aljacom.com/~gimp/petit-msys2-mingw-32bits-64bits-gimp28.7z
               Volume de l'archive : 597 Mo (626 464 438 octets)
               MD5 :  a20eed4b65c7729671080635f82b4b0b
               Version 1 du 23 juin 2015.

Pour l'installation, il faut :
 - Prévoir un espace disponible d'environ 6 Go sur le disque C:
 - Installer l'environnement sur une version Windows 64 bits.
 - Créer un répertoire temporaire pour les extractions car, en principe, il n'est pas autorisé de décompresser directement en C:\
 - Extraire l'archive "petit-msys2-mingw-32bits-64bits-gimp28.7z" dans ce répertoire temporaire.
 - Glisser le répertoire ( petit-msys2-mingw-32bits-64bits-gimp28 )  en C:\  pour obtenir  C:\petit-msys2-mingw-32bits-64bits-gimp28

Le fichier "Readme_petit-msys2-mingw-32bits-64bits-gimp28.txt" contient quelques informations au sujet de cet environnement.

Les correspondances des répertoires sont dans :
               C:\petit-msys2-mingw-32bits-64bits-gimp28\msys64\etc\fstab

Les paramètres de MSYS sont dans :
               C:\petit-msys2-mingw-32bits-64bits-gimp28\msys64\etc\profile
               C:\petit-msys2-mingw-32bits-64bits-gimp28\msys64\etc\profile_gcc510

Pour compiler des binaires en 32 bits cliquer sur :
               C:\petit-msys2-mingw-32bits-64bits-gimp28\start_MSYS2_GCC492-32bit.bat

Pour compiler des binaires en 64 bits cliquer sur :
               C:\petit-msys2-mingw-32bits-64bits-gimp28\start_MSYS2_GCC492-64bit.bat

Ces fichiers "profile" sont écrasés par l'action des fichiers "start_MSYS2_GCC492-32bit.bat" et "start_MSYS2_GCC492-64bit.bat"  ( profile_gcc510  devient  profile )

Le terminal MSYS est plus moderne que sur les anciennes versions.

Caractéristiques de l'environnement :
 - Basé sur MSYS2 http://sourceforge.net/projects/msys2/
 - Téléchargements des paquets 32 bits et 64 bits via l'utilitaire "pacman" https://wiki.archlinux.org/index.php/pacman
 - GCC 5.1.0 est installé pour compiler les binaires en 64 bits.

Modifications apportées :
 - GCC 5.1.0 (64 bits)
 - jpeg-9a (32 bits et 64 bits)
 - libpng-1.6.17 (32 bits et 64 bits)
 - tiff-4.0.4beta (32 bits et 64 bits)
 - babl-0.1.13 (32 bits et 64 bits)
 - libiconv-1.14 (32 bits et 64 bits)
 - glib-2.45.2 (32 bits et 64 bits)
 - exiv2-0.25 (64 bits)
 - gegl-0.2.1 (32 bits et 64 bits)
 - gimp-2.8.15 (32 bits et 64 bits)
 - gegl-0.3.1 (32 bits et 64 bits)


Compiler un plug-in GIMP ( exemple avec vignetting.c ) :

 - Binaires en 32 bits
Clic sur  C:\petit-msys2-mingw-32bits-64bits-gimp28\start_MSYS2_GCC492-32bit.bat
Dans la fenêtre du terminal faire :
               cd /env
               gimptool-2.0 --build /env/vignetting.c

 - Binaires en 64 bits
Clic sur  C:\petit-msys2-mingw-32bits-64bits-gimp28\start_MSYS2_GCC492-64bit.bat
Dans la fenêtre du terminal faire :
                cd /env
                gimptool-2.0 --build /env/vignetting.c


GMIC :

 - Modifier CImg.h pour OpenCV
#include
#include
#include
#include
remplace :
#include
#include "cv.h"
#include "highgui.h"

 - Modifier gmic.cpp pour assurer la compatibilité avec nos versions Gimp Portable
if (!_path_rc) _path_rc = getenv("GMIC_PATH");
if (!_path_rc) _path_rc = getenv("GMIC_GIMP_PATH");
remplace :
if (!_path_rc) _path_rc = getenv("GMIC_PATH");

 - Binaires en 32 bits
Clic sur  C:\petit-msys2-mingw-32bits-64bits-gimp28\start_MSYS2_GCC492-32bit.bat
Dans la fenêtre du terminal faire :
                cd /env
                ./compile_gmic_and_gmic-gimp_plugin_32_win_OPENCV.sh
Attendre.

 - Binaires en 64 bits
Clic sur  C:\petit-msys2-mingw-32bits-64bits-gimp28\start_MSYS2_GCC492-64bit.bat
Dans la fenêtre du terminal faire :
                cd /env
                ./compile_gmic_and_gmic-gimp_plugin_64_win_OPENCV.sh
Attendre.

Une version GMIC 1.6.5.0 stable compilée avec cet environnement est disponible sur :
http://www.aljacom.com/~gmic/gmic-1650-full-win-32bits-64bits-20150623.7z
               Volume : 22,4 Mo (23 554 542 octets)


mercredi 24 juin 2015

Version GMIC 1.6.5.0 stable du 24 juin 2015

Cette version stable 1.6.5.0 stable du 24 juin 2015 est disponible en téléchargement à partir de ce lien :
Volume : 22,4 Mo (23 554 542 octets)

 - Cette version est compilée avec un nouvel environnement 32-64 bits qui sera mis à disposition.
 - Elle est aussi compatible avec nos versions portables de Gimp qui utilisent la variable d'environnement GMIC_GIMP_PATH (localisation du répertoire des mises à jour des filtres).



dimanche 24 mai 2015

Version GMIC 1.6.3.1 stable du 24 mai 2015

Cette version stable 1.6.3.1 stable du 24 mai 2015 est disponible en téléchargement àq partir de ce lien :
Volume : 20,4 Mo (21 437 378 octets)

Cette version est compatible avec nos versions portables de Gimp qui utilisent la variable d'environnement GMIC_GIMP_PATH (localisation du répertoire des mises à jour des filtres).


samedi 16 mai 2015

S'amuser avec G'MIC

Les commandes utilisées sur une image de 800*800 pixels

-gimp_chessboard 80,80,0,0,0,1,0,0,0,255,255,255,255,255,0
-Annular_Steiner_Chain_Round_Tile 800,1,0,0,100,0,100,4,85.0909,1,0,0,0,255,0,255,255,0,0,0,0,255,0,0
-samj_Cercle_Polaire 1,0,0,1,0,0,2,0,0,0,50,50
-samj_Barbouillage_Paint_Daub 2,2,100,0.2,1,4,1,2,8

Rendu




samedi 2 mai 2015

Cercles adjacents avec G'MIC Gimp

Accès au filtre sur G'MIC Gimp par :
Rendering > Adjacent Annular Steiner Chains




lundi 27 avril 2015

Rayons de couleurs en spirale avec G'MIC Gimp

Accès au filtre sur G'MIC Gimp par :
Rendering > Twisted Rays


Voici 3 exemples :







samedi 25 avril 2015

Cercles Concentriques G'MIC Gimp

Accès au filtre sur G'MIC Gimp par :
ARRAYS & TILES > Concentric Circles A

Trois essais :






Sur l'image : http://fontplay.com/freephotos/seventeen/fpx110610-02.jpg



Avec Symmetrizoscope








dimanche 19 avril 2015

Filtre "Annular Steiner Chain Round Tiles" - G'MIC Gimp

Accès sur G'MIC Gimp par :
ARRAYS & TILES > Annular Steiner Chain Round Tiles

Voici deux exemples créés avec ce filtre sur cette image :
http://fontplay.com/freephotos/seventeen/fpx110610-02.jpg

Les lignes de commandes :
-Annular_Steiner_Chain_Round_Tile_en 800,1,0,0,100,0,100,30,0,0,0,0,0,255,0,255,255,0,127,0,0,255,127,0
-Annular_Steiner_Chain_Round_Tile_en 800,1,0,0,100,180,70,24,0,1,0,0,0,255,6,255,255,0,127,0,0,255,127,0





Une composition à partir de ce filtre :






mercredi 15 avril 2015

Version GMIC 1.6.2.0 stable du 15 avril 2015

Cette version stable 1.6.2.0 du 15 avril 2015 (Win 32 bits et Win 64 bits) utilise LibCurl, OpenMP et OpenCV.

AVERTISSEMENT - ATTENTION
 - G'MIC en lignes de commandes et G'MIC-Gimp sont compilés avec libcurl version curl-7.41.0 (les DLL nécessaires sont ajoutées et l'exécutable curl.exe est supprimé).
 - 2 exécutables sont ajoutés dans les répertoires de G'MIC en lignes de commandes : gmicol.exe & gmicol-silent.exe

Téléchargement :
Volume : 19,5 Mo (20 512 568 octets)

Des fichiers de test (.bat) pour les nouvelles fonctions et commandes sont ajoutés dans les répertoires G'MIC en ligne de commande.






lundi 13 avril 2015

Filtre "Variations On A Single Color" - G'MIC Gimp

Accès sur G'MIC Gimp par :
Artistic > Variations On A Single Color

Voici deux exemples créés avec ce filtre sur cette image :
http://fontplay.com/freephotos/seventeen/fpx110610-02.jpg


Variations_On_A_Single_Color_1.jpg
-samj_texture_coloree_en 0,0.7,200,125,50,5,5,45,200,4,0.2,1,10,1,1




Variations_On_A_Single_Color_2.jpg
-samj_texture_coloree_en 1,0.7,173,34,127,5,5,45,200,4,0.2,8,5,1,1



dimanche 12 avril 2015

Signal sinusoïdal sortie PWM pour Arduino UNO

Voici un petit programme qui permet de créer un signal sinusoïdal sur la sortie PWM d'un Arduino UNO.
La fréquence de sortie est limitée.
Le signal de sortie PWM (pin 6) est filtré. Le filtre utilisé est fait avec des composants disponibles à la maison (suffisants pour les tests).

Le programme DDS_Sinewave_Generator.ino :


// Sources 
// http://web.csulb.edu/~hill/ee470/Lab%202d%20-%20Sine_Wave_Generator.pdf
// http://web.csulb.edu/~hill/ee470/sinewave_pcm.zip
// samj le 12 avril 2015



// Schema du filtre de sortie à brancher sur Pin 6 pwm Arduino UNO (fait avec des composants disponibles à la maison)
//
// Pin6____270ohms__________0.47mH__________0.47mH____________________Tension de sortie sinusoïdale
//                    |               |               |          |
//                    |               |               |          |
//                   470nF          1000nF           470nF      270ohms 
//                    |               |               |          |
//  0V________________|_______________|_______________|__________| 
//
//
// Autre schéma http://interface.khm.de/wp-content/uploads/2009/12/dds_lowpass1251.jpg



/*
* sinewave_pcm
*
* Generates 8-bit PCM sinewave on pin 6 using pulse-width modulation (PWM).
* For Arduino with Atmega368P at 16 MHz.
*
* Uses timers 1 and 0. Timer 1 reads the sinewave table, SAMPLE_RATE times a second.
* The sinewave table has 256 entries. Consequently, the sinewave has a frequency of
* f = SAMPLE_RATE / 256
* Each entry in the sinewave table defines the duty-cycle of Timer 0. Timer 0
* holds pin 6 high from 0 to 255 ticks out of a 256-tick cycle, depending on
* the current duty cycle. Timer 0 repeats 62500 times per second (16000000 / 256),
* much faster than the generated sinewave generated frequency.
*
* References:
* http://www.atmel.com/dyn/resources/prod_documents/doc2542.pdf
* http://www.analog.com/library/analogdialogue/archives/38-08/dds.html
* http://www.evilmadscientist.com/article.php/avrdac
* http://playground.arduino.cc/Code/PCMAudio
* http://www.arduino.cc/playground/Code/R2APCMAudio
* http://www.scienceprog.com/generate-sine-wave-modulated-pwm-with-avrmicrocontroller/
* http://www.scienceprog.com/avr-dds-signal-generator-v10/
* http://documentation.renesas.com/eng/products/region/rtas/mpumcu/apn/sinewave.pdf
* http://ww1.microchip.com/downloads/en/AppNotes/00655a.pdf
*
* By Gary Hill
* Adapted
*/

#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>


// Varie selon modèle, ici UNO, la fréquence est limitée (BF)
// #define SAMPLE_RATE 10000 // T~26 ms F~38.4 Hz
// #define SAMPLE_RATE 100000 // T~2.6 ms F~384 Hz
// #define SAMPLE_RATE 26000 // F~100 Hz
#define SAMPLE_RATE 26000 // F~100 Hz


/*
* The sinewave data needs to be unsigned, 8-bit
*
* sinewavedata.h should look like this:
* const int sinewave_length=256;
*
* const unsigned char sinewave_data[] PROGMEM = {0x80,0x83, ...
*
*/

/* Sinewave table
 * Reference:
 * http://www.scienceprog.com/generate-sine-wave-modulated-pwm-with-avr-microcontroller/
*/

const int sinewave_length=256;

const unsigned char sinewave_data[] PROGMEM = {
0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,
0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c};



int outputPin = 6; // (PCINT22/OC0A/AIN0)PD6, Arduino Digital Pin 6
volatile uint16_t sample;
// This is called at SAMPLE_RATE kHz to load the next sample.
ISR(TIMER1_COMPA_vect) {
    if (sample >= sinewave_length) {
      sample = -1;
    }
    else {
      OCR0A = pgm_read_byte(&sinewave_data[sample]);
    }
  ++sample;
  }

void startPlayback()
  {
    pinMode(outputPin, OUTPUT);
      // Set Timer 0 Fast PWM Mode (Section 14.7.3)
      // WGM = 0b011 = 3 (Table 14-8)
      // TOP = 0xFF, update OCR0A register at BOTTOM
    TCCR0A |= _BV(WGM01) | _BV(WGM00);
    TCCR0B &= ~_BV(WGM02);
      // Do non-inverting PWM on pin OC0A, arduino digital pin 6
      // COM0A = 0b10, clear OC0A pin on compare match,
      // set 0C0A pin at BOTTOM (Table 14-3)
    TCCR0A = (TCCR0A | _BV(COM0A1)) & ~_BV(COM0A0);
      // COM0B = 0b00, OC0B disconnected (Table 14-6)
    TCCR0A &= ~(_BV(COM0B1) | _BV(COM0B0));
      // No prescaler, CS = 0b001 (Table 14-9)
    TCCR0B = (TCCR0B & ~(_BV(CS02) | _BV(CS01))) | _BV(CS00);
      // Set initial pulse width to the first sample.
    OCR0A = pgm_read_byte(&sinewave_data[0]);
      // Set up Timer 1 to send a sample every interrupt.
    cli(); // disable interrupts
      // Set CTC mode (Section 15.9.2 Clear Timer on Compare Match)
      // WGM = 0b0100, TOP = OCR1A, Update 0CR1A Immediate (Table 15-4)
      // Have to set OCR1A *after*, otherwise it gets reset to 0!
    TCCR1B = (TCCR1B & ~_BV(WGM13)) | _BV(WGM12);
    TCCR1A = TCCR1A & ~(_BV(WGM11) | _BV(WGM10));
      // No prescaler, CS = 0b001 (Table 15-5)
    TCCR1B = (TCCR1B & ~(_BV(CS12) | _BV(CS11))) | _BV(CS10);
      // Set the compare register (OCR1A).
      // OCR1A is a 16-bit register, so we have to do this with
      // interrupts disabled to be safe.
    OCR1A = F_CPU / SAMPLE_RATE; // 16e6 / 8000 = 2000
      // Enable interrupt when TCNT1 == OCR1A (p.136)
    TIMSK1 |= _BV(OCIE1A);
    sample = 0;
    sei(); // enable interrupts
  }

void setup()
  {
    startPlayback();
  }

void loop()
  {
    while (true);
  }




Le signal :




mercredi 1 avril 2015

Filtre Paint Daub - G'MIC Gimp

Accès sur G'MIC Gimp par :
Artistic > Paint Daub

Voici deux exemples créés avec ce filtre sur ces images :
http://fontplay.com/freephotos/seventeen/fpx110610-02.jpg
http://fontplay.com/freephotos/seventhn/fp121606-03.jpg





Fanart sur une partie de l'image :
http://www.avatarmovie.com/assets/wallpaper/wallpaper_m_1024X768.jpg
-samj_Barbouillage_Paint_Daub_en 2,2,400,0.5,1,3.3213,1






lundi 30 mars 2015

Mise à jour du script-fu Bokeh Effect

La mise à jour du script Bokeh_Effect_By_Starlight86_V2_Gimp_2_8.scm pour Gimp 2.8.14 par Jontait2 est disponible à partir de ce lien :

Accès par :
Fichier > Créer > Motifs > Bokeh Effect Version 2.3 ...
File > Create > Patterns > Bokeh Effect Version 2.3 ...



Gimp plug-in Wavelet Denoise 0.3.1 jthack Win 32-64

Téléchargement :
149 Ko (152 845 octets)

Accès par :
Filtres > Amélioration > Wavelet Denoise
Filters > Enhance > Wavelet Denoise

Modifications apportées :
http://gimpchat.com/viewtopic.php?f=8&t=12199