Pàgines

Oct 25, 2010

Oct 21, 2010

HDR, High Dynamic Range

En una fotografia amb gran contrasto de llum, la imatge final (si no la tractem) ha d'esser un compromís entre les zones clares i les fosques.
Afortunadament moltes càmeres actuals ens permeten fer fotografies amb contrast intel·ligent, però si volem un control més acurat del resultat podem usar la següent tècnica:

Programem la càmera de tal manera que automàticament ens faci 3 fotografies, la primera seria la 'correcta' la següent
 -2EV i la tercera +2EV (mireu-vos el manual de la vostra càmera, si és porfesional o prouser, segur que  trobeu com fer-ho i si no ho podeu fer a mà).

Així doncs, tenim 3 fotografies una 'correcta' un altre 'clara' i un altre 'fosca'. La fotografia ideal seria una composició de les 3. De la 'correcta' agafem les mitges llums, de la 'clara' les penombres i de la 'fosca' les zones d'alta lluminositat.

Finalment, per obtenir la foto ideal, usem internet on, gràcies a la feina de genis altruistes, trobem eines com el següent programa: EnfuseGUI.

Properament publicaré exemples. De moment podeu veure aquest de HDR a Wikipedia


A la Canon EOS 400D/Rebel XT podem canviar aquest ajust al menú AEB (Exp. Sec. en castellà) i si a més posem la càmera en modus ràfega (Continuous shooting), quan premem el disparador tindrem una ràfega de 3 (i només 3) fotografies cada una exposada tal com hem definit al menú AEB.

Informació Exif de les fotografies

Usant el programa ExifTool podem consultar i modifica la informació Exif de les fotografies.
Per usar-lo, només cal reneombrar el fitxer '.exe' amb els paràmetres que volguem. Per exemple:
  si renombrem el fitxer ExifTool.exe a:

      ExifTool(-k).exe                       Presenta les instruccions de funcionament
      ExifTool(-a -u -g1 -k).exe       Presenta totes les etiquetes Exif del fitxer
      ExifTool(-all= -k).exe              Esborrem totes les etiquetes Exif del fitxer

Un cop renombrat el ExifTool, arrosseguem amb el mouse les fotografies sobre l'executable (en Windows, en altres sistemes operatius ho desconec), i ens presentarà una finestra DOS amb el resultat (amb altres paràmetres podem fer que escrigui el resultat sobre un fitxer de text).

Una aplicació especialment útil (sobre tot si en l'arxiu hi tenim fotografies de diferents càmeres), és renombrar les fotografies amb la data de creació:

     exiftool "-FileName<createdate" %y%m%d_%h%m%s%%-c.%%e="" -d="" dir
         Rename all images in "dir" according to the CreateDate date and
         time, adding a copy number with leading '-' if the file already
         exists ("%-c"), and preserving the original file extension (%e).
         Note the extra '%' necessary to escape the filename codes (%c and
         %e) in the date format string.

Cal notar que el format aaaa-mm-dd hh:mm:ss és a més ideal per endreçar alfabèticament els fitxers
(Si el format fos dd-mm-aaaa, les primeres fotografies serien les del dia 1 de qualsevol mes i any).

Oct 20, 2010

Fotografia del Guggenheim de Bilbo

A vegades hi ha fotografies vulgars que et donen sorpreses. La original és del 2008, i 2 any i escaig després, revisant l'arxiu fotogràfic de Picassa va sortir això (i ja posats en vaig revisar altres).



Prova de Adobe Lightroom 3.2

Detall del fons original del blog al 200%:



Després de tractar-lo amb una demo de Adobe Lightroom 3.2
Ajustant l'enfocament i la reducció de soroll


Realment és una passada

Modificació de la plantilla del blog al Blogger de Google

Aquesta es la meva modificació de la plantilla del blog:

Primer cal fer una còpia de seguretat del blog:
      Disseny - Modifica l'HTML - Baixar la plantilla completa

A Disseny de la plantilla - Avançat - CSS, he afegit:

.tabs-inner .widget ul            {                                                  background: rgba(   0,   0,  0,    0);         }
.tabs-inner .widget li a          { border: rgba(   0,   0,   0, 0.3)  solid 1px;    background: rgba( 255, 150,  50, 0.2);         }
.tabs-inner .widget li.selected a { border: rgba(   0,   0,   0, 0.5)  solid 1px;    background: rgba( 255, 150,  50, 0.4);         }
.tabs-inner .widget li a:hover    { border: rgba(   0,   0,   0, 0.6)  solid 1px;    background: rgba( 255, 150,  50, 0.6);         }
.post           {                                                font-size: 80%;                                                       }
.post-header    {                                                font-size: 90%;                                                       }
.post-outer     { border: rgba(   0,    0,    0, 0.5) solid 1px; border-radius: 7px; background: rgba(   0,   0,   0, 0.5);         }
.sidebar        { border: rgba(   0,    0,    0,   0) solid 5px; border-radius: 7px; background: rgba(   0,   0,   0, 0.6);         }
.widget ul      {                                                                    background: rgba(   0,   0,   0, 0.1);         }
.widget-content   {                                              font-size: 90%;                                                    }
.content-outer  {                                                                    background: rgba(   0,   0,   0, 0.7);         }
'.fauxcolumn-inner {                                                                  background: rgba(   0,   0,   0, 0.3);         }
'.body-fauxcolumns {                                                                  background: rgba(   0,   0,   0, 0.3);         }
'.date-header {font-size: 120%; background: rgba(100, 1000, 1000, 0.4); text-align: center; max-width: 15%;  border:solid 20px rgba(100, 1000, 1000, 0.3); border-radius: 20px; 'height: 50px;}

Les 3 darreres línies estan comentades i per tant no s'apliquen.
i el resultat és:
Abans


Després


Oct 3, 2010

MS-Acces

Runtime:

Convert Twips to Píxeles
'''''''''''' Per convertir twips a pixels
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Public Const WU_LOGPIXELSX = 88
Public Const WU_LOGPIXELSY = 90
Public Const X_HOR    As Long = &H0
Public Const X_VERT   As Long = &H1
'''''''''''' Per convertir twips a pixels


Public Function TwipsToPixels(lngTwips As Long, lngDirection As Long) As Long
   'Handle to device
   Dim lngDC As Long
   Dim lngPixelsPerInch As Long
   Const nTwipsPerInch = 1440
   lngDC = GetDC(0)


   Select Case lngDirection
    Case X_HOR                  ' els pixels no son quadrats
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
    Case X_VERT
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
   End Select
   lngDC = ReleaseDC(0, lngDC)
   TwipsToPixels = (lngTwips / nTwipsPerInch) * lngPixelsPerInch
End Function


Public Function PixelsToTwips(lngTwips As Long, lngDirection As Long) As Long
   'Handle to device
   Dim lngDC As Long
   Dim lngPixelsPerInch As Long
   Const nTwipsPerInch = 1440
   lngDC = GetDC(0)


   Select Case lngDirection
    Case X_HOR                  ' els pixels no son quadrats
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
    Case X_VERT
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
   End Select
   lngDC = ReleaseDC(0, lngDC)
   PixelsToTwips = (lngTwips / lngPixelsPerInch) * nTwipsPerInch
End Function

Imprimir texto a la impresora predeterminada con Access Basic (1.x/2.0)
    'Obre el canal de la impressora
    Open "\\estacio4\zebra" For Output As #1
  
    'Configuració de la impressora
    Print #1, "^XA~TA-008~JSN^LT0^MMT^MNW^MTT^PON^PMN^LH0,0^JMA^PR4,4^MD0^JUS^LRN^CI27^XZ"
  
    'Nou format d'etiqueta i Llargada Etiqueta
    Print #1, "^XA^LL0200"
  
    'Amplada
    Print #1, "^PW639"
  
    'Codi de Barres de la 1ª Etiqueta
    Print #1, "^BY2,3,32^FT133,118^BCN,,N,N"
    Print #1, "^FD>;" & Ref_Imprimir & "^FS"
  
    'Codi de Barres de la 2ª Etiqueta
    Print #1, "^BY2,3,32^FT357,118^BCN,,N,N"
    Print #1, "^FD>;" & Ref_Imprimir & "^FS"
  
    'Referència 1ª etiqueta
    Print #1, "^FT162,139^A0N,23,24^FD" & Ref_Maca & "^FS"
  
    'Referència 2ª etiqueta
    Print #1, "^FT386,139^A0N,23,24^FD" & Ref_Maca & "^FS"
  
    'Imprimeix el nobre necessari d'etiquetes (Sortida de 2)
    Print #1, "^PQ" & CStr(Q2) & "," & CStr(Q2) & ",1,N^XZ"
  
    'Tanca el canal de la Impressora
    Close #1

.NET Framework Solutions—In Search of the Lost Win32 API
Per moure una finestra clicant el botó 'BotoDesp' (p.65)

'Constantes para SendMessage
Public Const WM_LBUTTONUP = &H202
Public Const WM_SYSCOMMAND = &H112
Public Const SC_MOVE = &HF010
Public Const MOUSE_MOVE = &HF012
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Boolean


Private Sub BotoDesp_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    BotoDesp.Picture = DirectoriRecursos & "P" & Right(BotoDesp.Picture, 9)
    Clicat = True
    Call SendMessage(Me.hwnd, WM_SYSCOMMAND, MOUSE_MOVE, 0)
End Sub

Private Sub BotoDesp_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Clicat And Button = 1 Then
        Call SetWindowPos(Application.hWndAccessApp, HWND_TOP, -200, -200, 10, 10, 0)
        Call ReleaseCapture
        Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
    End If
End Sub


Private Sub BotoDesp_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    BotoDesp.Picture = DirectoriRecursos & Right(BotoDesp.Picture, 9)
    Clicat = False
End Sub

Espais de color HSL and HSV

Wii, Arduino Links

Motion Plus y Nunchuck juntos en el Arduino
Wii MotionPlus + Arduino
Wii Remote WiKi
Wiimote from Willi
WiiMote
Wii Motion Plus + Arduino = Love from Random Hacks
Motion Plus and Nunchuck together on the Arduino from Random Hacks
Wiimote/Extension Controllers. Data format and connection
A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications
Arduino code for simplified Kalman filter. Using a 5DOF IMU (accelerometer and gyroscope combo)
Arduino Wire Library (I2C)
Kalman Filtered Nunchuck & Wii Motion Plus on Arduino Forum

Mètode dels mínims quadrats
float[ ] x = {x,x,x,...}, y = {y,y,y,...};
int n = x.length;              // = y.length;
float sumx=0, sumy=0, sumxy=0, sumx2=0;
for (int i = 0; i  <  n; i++){
    sumx += x[i];
    sumy += y[i];
    sumx2 += x[i] * x[i];
    sumxy += x[i] * y[i];
}
float denominador = sumx*sumy - n*sumx2;
float m = (sumx*sumy-n*sumxy) / denominador;
float b = (sumx*sumxy-sumx2*sumy) / denominador;
println(m +" "+ b);                              // y = m·x + b (si substituim x per t (temps)


WiiMote WiKi Bluetooth Conection
Filtering Sensor Data with a Kalman Filter
How to: Arduino and Nintendo Nunchuck for pan and tilt camera interface on DIY Drones

Tracking Your Fingers with the Wiimote by Johnny Chung Lee
Friday, December 21, 2007
Wiimote Finger Tracking -FAQ and Adv Discussion

Read wii nunchuck data into arduino
Wii Nunchuck Mouse
Wii Nunchuck Mouse Code Breakdown
Wiimote light follower with servo
Winscape (virtual Window) - The Making Of

Digital Signage. Preview de Dupla 2.0

Dupla, el programa de digital signage senzill i barat.
Amb 3 simples passos pots publicar a la teva instal·lació de vídeo tots els continguts que vulguis.

Més informació »