Modificar brillo de la pantalla

En muchas ocasiones me he visto en la necesidad de cambiar la luminosidad del monitor, pero para ello tenía que ir a un menú de la pantalla y luego a otro y de allí a otro hasta que encontré las siguientes funciones que me evitan todo esto:


SetDeviceGammaRamp  // GetDeviceGammaRamp

Lo que hace es seleccionar la "curva gamma" de la tarjeta gráfica.
Según Wikipedia:
La correccion gammano-linearidad gammacodificacion gamma, o simplemente gamma, es como se denomina cierta operacion no-lineal que se usa para codificar y decodificar luminancia o valores triestimulos en sistemas de video o imagen.La correccion gamma es, en su forma mas sencilla, definida por la siguiente ley de potencias:
V_{\text{out}} = A {V_{\text{in}}}^{\gamma}
donde A es una constante y las entradas y salidas son valores reales no negativos; en el caso comun de A = 1, las entradas y salidas caen tipicamente en el rango 0-1. Un valor gamma γ < 1 a veces se denomina gamma de codificacion, y el proceso de codificar con esta compresion no-lineal basada en una ley de potencias se llama compresion gamma; a la inversa un valor gamma y > 1 se llama gamma de decodificacion y la aplicacion de la ley de potencias expansiva se llama expansion gamma.

Codificación en Delphi :


type
tRamp=array[0..2, 0..255] of Word;
var
lRamp,lRamp1: tRamp;
function AjustarBrillo(Brillo: Byte): Boolean;
var
i, Delta: Integer;

DC: HDC;
begin
Result := False;
DC := GetDC(0); // obtener handle de screen
if DC <> 0 then // obtenido ?
begin
for i := 0 to 255 do
begin
Delta := i * (Brillo+128 );
if Delta > 65535 then Delta := 65535; //evitar desborde
lRamp[0, i]:= Delta; // Red
lRamp[1, i]:= Delta; // Green
lRamp[2, i]:= Delta; // Blue
end;
Result := SetDeviceGammaRamp(DC, lRamp); // ajustar gama
ReleaseDC(0, DC); // liberar DC
end;
end;


// Obtengo el brillo actual en el evento Oncreate de la aplicación

function ObtenerBrillo : tRamp;
begin
DC := GetDC(0); // obtener handle de screen
windows.GetDeviceGammaRamp(DC,lRamp1);
ReleaseDC(0, DC); // liberar DC
Result:=lRamp1;
end;

Algoritmo de Canny - deteccion de bordes en imagenes


Es un algoritmo desarrollado en 1986 por  John F. Canny  catedrático de la Universidad de Berkeley, intenta encontrar los bordes en  imágenes utilizando el cálculo de variaciones.  La función óptima en el algoritmo de Canny es descrita  por la suma de cuatro términos exponenciales, pero se puede aproximar por la primera derivada de una gaussiana.

Autor: Barbichette