De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Bruno Buys
Data de Publicação: 14 de março de 2010
Recentemente adquiri uma câmera digital reflex Nikon D90. Essa câmera não é uma automática "aponte-e-clique": ela pertence ao grupo das semi-profissionais. Tem diversos recursos avançados, grava imagens em modo raw e possui lentes intercambiáveis.
O objetivo dessa dica é contribuir para desfazer a idéia de que não dá para usar software livre com esta classe de equipamentos, ou que não existem softwares adequados para uso pro ou semi-pro, ou que o GNU/Linux não está pronto para o desktop publishing e artes gráficas. Essa noção, embora não surpreendentemente, ainda está muito presente internet afora.
Digo que não surpreende porque o suporte oficial dado pelo fabricante ainda é restrito aos sistemas proprietários. Ao navegar pelo CD fornecido em conjunto, só se vê suporte a eles, e nenhuma informação que ajude a integrar e usar o equipamento com software livre.
Se você possui uma câmera digital reflex, mesmo que não seja a D90 (outra marca e modelo), ainda pode se beneficiar com essa dica. Alguns procedimentos e informações de referência que uso aqui podem ser facilmente adaptados.
Mãos à obra:
Dizer que a câmera trabalha bem em conjunto com software livre significa dizer que existem programas livres capazes de lidar com todos os arquivos e informações que a câmera gera. Em outras palavras, precisamos de programas para:
Bom, imagens jpeg são facilmente tratáveis através de várias ferramentas tradicionais de software livre, e nenhuma distribuição atual carece de suporte a elas. Portanto passo direto para o formato raw.
O raw pode ser melhor descrito como um tipo de arquivo, não um formato específico. Cada fabricante possui o seu: Nikon com o NEF, Canon com os CRW e CR2, MRW da Minolta, etc. O que eles têm em comum é o fato de que são uma espécie de "negativo digital": eles contêm toda a informação capturada pelo sensor, sem nenhuma edição feita pelo processador da câmera. Até pouco tempo atrás podia se dizer também que eram formatos sem perda (lossless), mas isso está mudando, e já existem formatos raw com compactação com perda de informação.
A maior vantagem de se configurar a câmera para usar o formato raw é que o processo de conversão do raw para o formato de saída (tiff, ou mesmo jpeg) pode ser feito no computador, sob controle do fotógrafo. Tornando-se assim mais uma etapa na elaboração da imagem final, e cujo domínio permite grande poder de influir no resultado.
O suporte a raw no mundo livre é baseado no software dcraw (http://www.cybercom.net/~dcoffin/dcraw). Ele funciona decodificando uma infinidade de formatos diferentes, de praticamente todos os fabricantes de câmeras.
O dcraw é um programa de linha de comando. Usá-lo diretamente tem a vantagem de permitir que você fique na vanguarda do desenvolvimento. O autor, Dave Coffin, é muito produtivo, e lança versões novas freqüentemente.
Baixando a última versão:
wget http://www.cybercom.net/~dcoffin/dcraw/dcraw.c
Compilando:
gcc -o dcraw -O4 dcraw.c -lm -ljpeg -llcms
ou
gcc -o dcraw -O4 dcraw.c -lm -DNO_JPEG -DNO_LCMS
(sem suporte ao Little CMS)
Depois disso, copie o executável criado para algum lugar no seu $PATH.
Usando o dcraw:
Como toda ferramenta de linha de comando, o dcraw é bom para tratamentos em lotes.
Converte uma imagem raw da D90 em ppm:
dcraw dsc_0001.nef
Converte para tiff em vez de ppm:
dcraw -T dsc_0001.nef
Converte uma imagem raw em jpg: (nesse caso não é bem uma conversão. O que acontece é que as imagens raw geradas por câmeras digitais possuem uma miniatura embutida. só precisamos extrai-la)
dcraw -e dsc_0001.nef
A extração da miniatura é muito mais rápida do que a revelação do raw. Na revelação o dcraw faz a interpolação dos pixels, o que demanda cpu e tempo.
Sendo a extração do jpeg tão rápida, não recomendo configurar a câmera para gerar arquivos jpeg, nem raw+jpeg. Isso só vai tomar espaço no seu cartão de memória. A menos que você realmente esteja convicto de que não vai querer editar as imagens depois de baixá-las no computador, não há motivo para gerar arquivos jpeg.
O dcraw possui ainda uma variedade de opções interessantes, e não vou cobrir todas aqui. Uma delas é a de embutir perfil de cores na imagem. Se estiver trabalhando com bureaus gráficos e os responsáveis pela impressão do seu arquivo pedirem perfil embutido, você pode usar o dcraw para isso. Há também opções para controle de balanço de branco, o que pode influenciar bastante o resultado.
Extraindo jpegs em um diretório com muitos arquivos raw:
dcraw -e *.nef
ou, para evitar o famoso "argument list too long":
for raw in *.nef ; do dcraw -e $raw done
Para edição interativa de raw, recomendo dois programas: o UFRaw e o Rawstudio. Ambos são muito bons, mas operam com conceitos um pouco diferentes. O UFRaw abre e edita foto por foto. O Rawstudio é mais focado em edição de um conjunto de imagens, por exemplo, uma coleção guardada em um diretório.
A desvantagem deles é que trazem sua própria versão do dcraw (no qual se baseiam para revelar as imagens), e que sempre está algumas versões atrás da atual.
apt-get install ufraw rawstudio
Usar o UFRaw é muito simples, clique o direito na imagem raw e peça para o gerenciador de arquivos abri-la com o UFRaw. Uma interface abrirá, com a foto à direita, e os controles necessários à esquerda. Dali você pode sair experimentando tudo. Quando a imagem estiver a gosto, o menu "Salvar" permite escolher formato de saída e local.
Se a sua versão do UFRaw disser que o balanço de branco da D90 (camera WB) não está disponível, atualize-o para a última versão. No Debian Lenny, a versão 0.16 já não tem esse problema.
Já o Rawstudio opera como um processador em lotes. Existem também controles para as ferramentas de transformação da imagem, mas a idéia é, depois que o tratamento a ser aplicado estiver definido, construir um "batch" de imagens e aplicá-lo em todas elas.
O Rawstudio também permite uso de perfil de cores, o que é cada vez mais importante em fotografia avançada.
Com as saídas em tiff e jpeg, você pode seguir com seu fluxo de trabalho integrando com o Gimp, Krita, ou qualquer outro software de sua preferência.
A D90 é a primeira câmera digital reflex a gravar filmes. E com áudio! Surpreendentemente, a Nikon não optou por nenhum formato bizarro de vídeo para essa funcionalidade. Ao contrário, usou o bom e velho .avi. O .avi, curiosamente, também não é bem um "formato de vídeo". Está mais para um conteiner, onde pode haver diversos fluxos de dados, como por exemplo, um fluxo de vídeo e um, dois, ou mais fluxos de áudio. A utilidade disso é termos, por exemplo, um áudio de um videoclip em português e o mesmo áudio em espanhol. Sendo assim, o usuário pode trocar de linguagem ao assistir, e tudo isso em um mesmo arquivo.
O .avi é muito bem suportado em software livre. Você pode escolher entre uma variedade de programas para assisti-lo ou editá-lo. Indico o mplayer e o vlc para exibição, e o avidemux e o mencoder para edições simples.
apt-get install mplayer vlc mencoder avidemux
Existem interfaces gráficas para o mplayer, para quem gosta delas. Se você pedir para instalar somente o "mplayer" provavelmente acabará só com o programa de linha de comando.
O avidemux permite abrir um filme avi, cortar as partes relevantes, com uma ótima interface gráfica, remontá-las em um videoclip caseiro. Pode também remover barras pretas e logotipos. Pode inclusive recodificar o vídeo e áudio para outros formatos, como o h.264.
Aqui estão informações sobre o vídeo gravado pela D90, usando-se o mplayer com o parâmetro -identify para sondá-las:
Playing dsc_0001.avi. AVI file format detected. ID_VIDEO_ID=0 [aviheader] Video stream found, -vid 0 ID_AUDIO_ID=1 [aviheader] Audio stream found, -aid 1 VIDEO: [MJPG] 1280x720 24bpp 24.000 fps 13754.0 kbps (1679.0 kbyte/s) ID_FILENAME=dsc_0001.avi ID_DEMUXER=avi ID_VIDEO_FORMAT=MJPG ID_VIDEO_BITRATE=13754040 ID_VIDEO_WIDTH=1280 ID_VIDEO_HEIGHT=720 ID_VIDEO_FPS=24.000 ID_VIDEO_ASPECT=0.0000 ID_AUDIO_FORMAT=1 ID_AUDIO_BITRATE=176400 ID_AUDIO_RATE=0 ID_AUDIO_NCH=0 ID_LENGTH=80.00 ID_SEEKABLE=1 ========================================================================== Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Selected video codec: [ffmjpeg] vfm: ffmpeg (FFmpeg MJPEG decoder) ========================================================================== ID_VIDEO_CODEC=ffmjpeg ========================================================================== Opening audio decoder: [pcm] Uncompressed PCM audio decoder AUDIO: 11025 Hz, 1 ch, s16le, 176.4 kbit/100.00% (ratio: 22050->22050) ID_AUDIO_BITRATE=176400 ID_AUDIO_RATE=11025 ID_AUDIO_NCH=1 Selected audio codec: [pcm] afm: pcm (Uncompressed PCM) ========================================================================== AO: [alsa] 48000Hz 1ch s16le (2 bytes per sample) ID_AUDIO_CODEC=pcm Starting playback... VDec: vo config request - 1280 x 720 (preferred colorspace: Planar 422P) Could not find matching colorspace - retrying with -vf scale... Opening video filter: [scale] VDec: using Planar 422P as output csp (no 1) O que tiramos de importante disso é: VIDEO: [MJPG] 1280x720 24bpp 24.000 fps 13754.0 kbps (1679.0 kbyte/s) Vídeo Motion JPG, com quadros de 1280x720, a 24 quadros por segundo. Áudio PCM uncompressed, 176.4 kbit, e 1 canal (ou seja, o som é mono, veja: ID_AUDIO_NCH=1).
Para coisas como entrevistas, conversas entre duas pessoas, ou filmes bem simples, a câmera é muito boa. A imagem é bem clara, definida, e tem boa suavidade. Você só fica limitado ao espaço no cartão de memória. Mas mesmo isso, hoje em dia já não é tão problemático.
O som mono, porém, não ajuda a dar uma noção espacial à imagem. Se você filmar uma festa de aniversário, por exemplo, com muita gente falando ao mesmo tempo, perceberá que é difícil saber de onde vem o som.
Metadados da imagem são os dados que a câmera insere no arquivo fotográfico, além dos pixels, que são a informação visual da imagem, propriamente dita. São dados explicativos da imagem e das circunstâncias no momento que a foto foi feita. Ter acesso a eles é fundamental, pois eles podem estar levando consigo informações que você não deseja que levem, ou não estarem levando informações que poderiam beneficiá-lo muito.
O mundo dos metadados é complexo, e movediço. Existem diversos formatos de metadados diferentes, alguns muito conhecidos, como o exif e o iptc, e outros menos documentados, como formatos proprietários (sempre eles...) e os mais recentes. É difícil até mesmo saber se o que você vê na tela são todos os metadados que sua imagem possui. Alguns são binários, como os perfis de cores, embora a maioria seja texto puro.
Por isso tudo, vou me deter em exemplos simples e úteis aqui.
Para ter acesso aos metadados de uma imagem raw, use o script perl exiftool. Ele consegue ler, gravar e apagar metadados de uma boa quantidade de tipos de arquivo diferentes, para uma quantidade maior ainda de formatos de metadados.
apt-get install libimage-exiftool-perl
Ainda existem as possibilidades de se usar o próprio dcraw, ou o exiv2. Mas, sinceramente, com o exiftool em mãos, você não vai querer usar nenhum outro.
apt-get install exiv2
Usando o dcraw para ver metadados:
bruno@boson:~/d90/geotag$ dcraw -i -v dsc_0001.nef Filename: dsc_0001.nef Timestamp: Sat Feb 20 03:08:20 2010 Camera: NIKON D90 ISO speed: 200 Shutter: 1/6.0 sec Aperture: f/3.5 Focal length: 18.0 mm Embedded ICC profile: no Number of raw images: 1 Thumb size: 4288 x 2848 Full size: 4352 x 2868 Image size: 4310 x 2868 Output size: 4310 x 2868 Raw colors: 3 Filter pattern: GBRGGBRGGBRGGBRG Daylight multipliers: 2.008508 0.925194 1.076160 Camera multipliers: 1.917969 1.000000 1.187500 0.000000
O que o dcraw mostra aqui são os metadados relevantes para revelação fotográfica, como ISO, abertura e velocidade. Mas existem muitos outros que não foram mostrados aqui.
bruno@boson:~/d90/geotag$ exiv2 dsc_0001.nef Warning: Size 6600 of Exif.Nikon3.0x0091 exceeds 4096 bytes limit. Not decoded. File name : dsc_0001.nef File size : 9583969 Bytes MIME type : image/tiff Image size : 4352 x 2868 Camera make : NIKON CORPORATION Camera model : NIKON D90 Image timestamp : 2010:02:20 03:08:20 Image number : Exposure time : 1/6 s Aperture : F3.5 Exposure bias : 0 Flash : No flash Flash bias : Focal length : 18.0 mm (35 mm equivalent: 27.0 mm) Subject distance: ISO speed : 200 Exposure mode : Manual Metering mode : Multi-segment Macro mode : Image quality : RAW Exif Resolution : 4352 x 2868 White balance : CLOUDY Thumbnail : None Copyright : Exif comment : (C)BRUNO BUYS, 2010
O exiv2 mostra a tag do comentário exif:
dsc_0001.nef Exif comment : (C)BRUNO BUYS, 2010
Então, você pode ver que nos metadados está dito quais aberturas de lente você usou, se o flash disparou ou não, etc. Poder controlar quem tem acesso a estes dados é muito importante.
No exiftool:
exiftool dsc_0001.nef
Esse comando gera uma saída de 249 linhas (a mais completa que há), portanto não vou inseri-lo aqui.
Exiftool mostrando o comentário exif:
User Comment : (C)BRUNO BUYS, 2010
Então tanto exiv2 quanto exiftool mostram a tag que a câmera inseriu no arquivo.
Só que quando extraio a miniatura jpg contida no raw, a tag de comentário com a linha do autor não é colocada. Temos que inseri-la, porque o jpg é que é o arquivo que iremos colocar no flickr, em blogs, na internet, etc. O raw provavelmente vai ficar guardado nos seus arquivos e backups.
Inserindo a linha de autor:
exiftool -Comment='(c)Fulano 2010' dsc_0001.jpg
Inserindo em lotes:
for jpg in *jpg ; do exiftool -Comment='(c)Fulano 2010' $jpg done
Evidentemente, você pode usar o campo de comentário para qualquer coisa, além de seu nome de autor.
Com isso, se alguém pegar uma foto sua e usar em algum site, você tem meios de verificar sua autoria. Claro, há meios de apagar a linha de comentário. O método não é 100% seguro.
Apagando metadados:
exiftool -all= dsc_0001.nef
Existem metadados que podem armazenar coordenadas geográficas. Isso permite que uma foto seja facilmente localizada no Google Earth, ou qualquer outro programa semelhante.
Para usar essa funcionalidade, você precisa ter um dispositivo GPS que possa ser adaptado na câmera. Com o dispositivo ligado, a câmera lê as coordenadas de GPS e as insere como metadados em cada foto que é feita.
A D90 permite pelo menos dois dispositivos GPS: o da própria Nikon (http://www.nikonusa.com/Find-Your-Nikon/Photography-Accessories/Miscellaneous/25396/GP-1-GPS-Unit.html) e o nGPS, da Columbus (http://www.pocketgpsworld.com/Columbus-nGPS-geotagging-dongle-for-Nikon-cameras-review-3722.php).
Quando equipada com um GPS, a câmera insere os metadados relacionados:
bruno@boson:~/d90/dica_d90$ exiftool 0002.NEF | grep -i gps GPS Version ID : 2.2.0.0 GPS Latitude Ref : North GPS Longitude Ref : West GPS Altitude Ref : Above Sea Level GPS Time Stamp : 02:46:36 GPS Satellites : 12 GPS Map Datum : GPS Date Stamp : 2009:11:23 GPS Altitude : 5 m Above Sea Level GPS Date/Time : 2009:11:23 02:46:36Z GPS Latitude : 49 deg 18' 35.21" N GPS Longitude : 123 deg 4' 55.42" W GPS Position : 49 deg 18' 35.21" N, 123 deg 4' 55.42" W
Esta imagem é de uma cidade no Canadá. Gentilmente cedida por John Biehler (http://johnbiehler.com/).
O interessante aqui é a posição (GPS Position), que contém as duas coordenadas necessárias para localização do ponto no Google Earth. Outros dados interessantes são o número de satélites (12) a que o dispositivo tinha acesso quando a foto foi feita. Isso é uma medida da precisão da coordenada. Quanto mais satélites, melhor. Essa foto foi feita no hemisfério norte. Não sei se existem diferenças de lá para cá, na recepção de satélites GPS, mas até hoje só consegui no máximo 9 satélites.
Há um probleminha aqui, o exiftool usa "deg" para exprimir o caractere de grau, nas coordenadas. Com isso, não é possível colar essa coordenada diretamente no Google Earth, ele precisa mesmo da coordenada expressa como 49° 18' 35.21" N, 123° 4' 55.42" W (com a "bolinha" no grau).
Para remediar essa situação, eu escrevi esta pequena função que usa o exiftool e o sed para editar a coordenada e torná-la diretamente apropriada ao GE:
pos(){ exiftool -composite:all "$1" | grep Position | sed -e "s/ deg/°/g" -e "s/GPS Position : //g" }
Com essa função no seu .bashrc, você pode simplesmente comandar:
pos 0002.NEF
e obterá:
49° 18' 35.21" N, 123° 4' 55.42"W
(se nunca fez isso, experimente copiar e colar essa coordenada no GE).
Para ver a coordenada graficamente, e com a conveniência de um gerenciador de arquivos, eu criei outro script e um serviço no menu Actions, no konqueror.
O script:
#!/bin/bash . ~/.bashrc pos(){ exiftool -composite:all "$1" | grep Position | sed -e "s/ deg/°/g" -e "s/GPS Position : //g" } POSICAO=`pos $1` if [ -z $POSICAO ] ; then POSICAO="Não há coordenada GPS para essa imagem" fi kdialog -title "Latitude x Longitude" --msgbox "$POSICAO" #fim do script
Salvei este script em ~/bin e depois criei um serviço com nome gps.desktop em ~/.kde/share/apps/konqueror/servicemenus, contendo o seguinte conteúdo:
# # Bruno Buys, 2010. Para KDE da série 3! # Sob a GPLv3. # Copie para $HOME/.kde/share/apps/konqueror/servicemenus. # [Desktop Entry] ServiceTypes=image/* Actions=Mostra gps [Desktop Action Mostra gps] Name=Mostra coordenadas GPS Icon=googleearth Exec=/home/bruno/bin/kpos
Com isso, o kdialog mostra graficamente a saída do comando exiftool para gerar as coordenadas, e o sed o edita para ser diretamente colado no GE.
Você pode ainda adaptar essa infra-estrutura para mostrar outros metadados que sejam relevantes para você, basta modificar a parte dos comandos referente ao exiftool, e ao grep "position". Não precisa ficar limitado aos GPS. Essa é uma das belezas do software livre: tudo se adapta.
Essa última parte de metadados geográficos eu desenvolvi para poder colar no GE as coordenadas de fotos da viagem de férias que estou com minha esposa, a Fernanda, que começou na terça-feira, 2 de março. Se você quiser acompanhar-nos (e ver o poder dos metadados GPS em ação), veja o nosso blog de viagem, em http://www.nandaebruno.com.br.
Com isso tudo em mãos, você tem a sua D90 (ou outras digitais reflex) integrada sem problemas ao seu desktop livre.
Até a volta, e feliz hacking!!
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários