samedi 6 mai 2017

RedCV: How to fade an image

Image processing software such as GIMP includes various techniques to fade an image. Here, the idea is to use pixel intensity of the image to fade in or out the image. Red images are 8-bit. So, each ARGB channel can have a value from 0 to 255, and these values represent the intensity of the image. 
Power function can help us for a faster image rendering. In mathematics, a power function is a function of the form f(x)=x^p, where p is constant and x is a variable. When p= 0, f(x) is the constant function f(x) = 1, and when p = 1, f(x) is the identity function f(x) = x. This mean that if we use a p value between 0 and 1,we can modify each RGB value to control image intensity and fading effects. This can be done since rcvPow function does accept float or integer values for exponent.

Code sample

    Title:   "Simple Fading Sample"
    Author:  "Francois Jouen"
    File:    %fading.red
    Needs:   'View
]
#include %../../libs/redcv.red ; for redCV functions
margins: 10x10
defSize: 512x512
img1: rcvCreateImage defSize
dst:  rcvCreateImage defSize
isFile: false
delta: 0.0

loadImage: does [
    isFile: false
    sl/data: 0%
    delta: 0.0
    tmp: request-file
    if not none? tmp [
        img1: rcvLoadImage tmp
        dst:  rcvCloneImage img1
        canvas/image: dst
        isFile: true
    ]
]

; ***************** Test Program ****************************
view win: layout [
        title "Simple Contrast Test"
        origin margins space margins
        button 60 "Load"        [loadImage]                     
        sl: slider 240 [if isFile [
                            delta: 1.0 - to float! sl/data * 1
                            vf/data: form delta 
                            rcvPow img1 dst delta   
                        ]                
        ]   
        vf: field 50 "1.0"                              
        button 50 "Quit"        [rcvReleaseImage img1 rcvReleaseImage dst Quit]
        return 
        canvas: base 512x512 dst
        do [sl/data: 0%]    
]

And the images




6 commentaires:

  1. Génère une erreur lors de la manipulation du slider :
    *** Script Error: rcvPow does not allow float! for its val argument
    *** Where: rcvPow
    *** Stack: view either do-events set do-event-loop... etc !
    Dommage, encore une feature qui m'intéresse au plus haut point...
    sylvie.vathoux

    RépondreSupprimer
  2. Oups, je dois mettre à jour github! Ce sera fait d'ici la fin du week-end avec plein de nouveautés :)

    RépondreSupprimer
  3. RedCV update here: https://github.com/ldci/redCV

    RépondreSupprimer
  4. Bonjour François,
    Peut-on utiliser le fading indépendamment sur une seule couleur ? Avec une autre fonction de la lib peut-être ?

    RépondreSupprimer
  5. @sylvie.vathoux. Tu peux me préciser ce que tu voudrais faire sur une seule couleur? C'est pas clair pour moi.

    RépondreSupprimer
  6. En fait jouer avec les histogrammes. J'ai trouvé colorImage que j'emploie sur un de tes scripts démo bricolé, mais je n'arrive pas à obtenir ce que je veux. Je me penche dessus un peu plus sérieusement et je te passerai un bout de script si ça ne va pas mieux.

    RépondreSupprimer