24. Detecção do Parâmetro Físico-Químico Cor - Fotometria com Webcam

Nessa seção vamos nos dedicar a explorar o uso de uma webcam simples para medidas de colorimetria (análise de cores) para o monitoramento da qualidade da água.

A disponibilidade de câmeras com boa resolução em praticamente todos os celulares tem estimulado o desenvolvimento de inúmeros projetos que mostram o uso dessa câmeras para análises colorimétricas em diferentes materiais.

A tese Colorimetric Water Quality Sensing with Mobile Smart Phones é um bom exemplo do uso dessa técnica para análise de água.

Inicialmente vamos utilizar uma webcam simples para desenvolver o programa de aquisição e análise de imagem em ambiente Linux.

Fiz os primeiros testes com uma webcam tentando capturar as imagens de uma coluna de água pura (filtrada com filtro de polipropileno e carvão ativo) com a expectativa de quantificar a coloração azulada da água. (Color of Water - Wikipedia).

Por isso fixei um LED branco em um cap de PVC de 1/2" e coloquei na extremidade de um cano de PVC com ~39cm de comprimento. E na outra extremidade ajustei a lente de uma webcam para tentar capturar imagens e avaliar a possibilidade de quantificar a coloração azulada da coluna dágua.

Utilizando uma resistência variei a intensidade do LED mas mesmo com a intensidade mínima a imagem obtida com a webcam mostra uma região luminosa central (branca) no centro de uma grande area escura como na figura 304

Figura 304. Imagem obtida por uma webcam, com o programa Kamerka, de uma coluna de água de ~39cm de comprimento em um tubo de PVC de 1/2" iluminado na extremidade por um LED branco.

Imagem obtida por uma webcam, com o programa Kamerka, de uma coluna de água de ~39cm de comprimento em um tubo de PVC de 1/2" iluminado na extremidade por um LED branco.

Antes de tentar analisar as componentes RGB da imagem, percebi que a intensidade luminosa da imagem gerada variava dependendo da intensidade luminosa do LED. Ou seja, o programa ou a câmera fazia um autoajuste da intensidade luminosa. :-(

Experimentei uma antiga câmera como na figura 305.

Figura 305. Webcam Intel

Webcam Intel

Usei o programa Cheese mas a imagem aparecia totalmente escura. Só depois de ajustar o brilho com o programa Kamerka foi possível usar essa câmera com os demais programas instalados: Cheese, Kamoso e Camorama.

Percebi que foi necessário usar alguns recursos de configuração disponíveis apenas por alguns programas.

A minha intenção é poder automatizar a captura de imagens mas controlando os parâmetros de captura para evitar que o programa, ou a câmera, faça um autoajuste indesejado.

Além disso também observei em alguns casos uma alteração aleatória no padrão de cores, ou seja, as cores eram modificadas em sucessivas capturas de imagens.

Não encontrei opções de comandos por linha de comando para automatizar o uso desses programas com interface gráfica, por isso comecei a pesquisar programas com execução por linha de comando.

Fiz alguns testes com o programa Streamer (Fonte: Webcam-HOWTO, How to record the webcam with command line? e Usar Webcam No Linux Pelo Terminal):

streamer -o teste.ppm
streamer -c /dev/video0 -b 24 -o teste.jpeg

E para ver as opções:

streamer -h

Mas senti falta de mais opções de configuração, então passei a explorar os recursos do programa fswebcam.

O programa pode ser executado com o comando básico:

fswebcam teste_fswebcam.jpeg

Gerando uma imagem jpeg com tamanho de 320x240.

Para saber todas as opções disponíveis:

  $ fswebcam -?
Usage: fswebcam [<options>] <filename> [[<options>] <filename> ... ]

 Options:

 -?, --help                   Display this help page and exit.
 -c, --config <filename>      Load configuration from file.
 -q, --quiet                  Hides all messages except for errors.
 -v, --verbose                Displays extra messages while capturing
     --version                Displays the version and exits.
 -l, --loop <seconds>         Run in loop mode.
 -b, --background             Run in the background.
 -o, --output <filename>      Output the log to a file.
 -d, --device <name>          Sets the source to use.
 -i, --input <number/name>    Selects the input to use.
 -t, --tuner <number>         Selects the tuner to use.
 -f, --frequency <number>     Selects the frequency use.
 -p, --palette <name>         Selects the palette format to use.
 -D, --delay <number>         Sets the pre-capture delay time. (seconds)
 -r, --resolution <size>      Sets the capture resolution.
     --fps <framerate>        Sets the capture frame rate.
 -F, --frames <number>        Sets the number of frames to capture.
 -S, --skip <number>          Sets the number of frames to skip.
     --dumpframe <filename>   Dump a raw frame to file.
 -s, --set <name>=<value>     Sets a control value.
     --revert                 Restores original captured image.
     --flip <direction>       Flips the image. (h, v)
     --crop <size>[,<offset>] Crop a part of the image.
     --scale <size>           Scales the image.
     --rotate <angle>         Rotates the image in right angles.
     --deinterlace            Reduces interlace artifacts.
     --invert                 Inverts the images colours.
     --greyscale              Removes colour from the image.
     --swapchannels <c1c2>    Swap channels c1 and c2.
     --no-banner              Hides the banner.
     --top-banner             Puts the banner at the top.
     --bottom-banner          Puts the banner at the bottom. (Default)
     --banner-colour <colour> Sets the banner colour. (#AARRGGBB)
     --line-colour <colour>   Sets the banner line colour.
     --text-colour <colour>   Sets the text colour.
     --font <[name][:size]>   Sets the font and/or size.
     --no-shadow              Disables the text shadow.
     --shadow                 Enables the text shadow.
     --title <text>           Sets the main title. (top left)
     --no-title               Clears the main title.
     --subtitle <text>        Sets the sub-title. (bottom left)
     --no-subtitle            Clears the sub-title.
     --timestamp <format>     Sets the timestamp format. (top right)
     --no-timestamp           Clears the timestamp.
     --gmt                    Use GMT instead of local timezone.
     --info <text>            Sets the info text. (bottom right)
     --no-info                Clears the info text.
     --underlay <PNG image>   Sets the underlay image.
     --no-underlay            Clears the underlay.
     --overlay <PNG image>    Sets the overlay image.
     --no-overlay             Clears the overlay.
     --jpeg <factor>          Outputs a JPEG image. (-1, 0 - 95)
     --png <factor>           Outputs a PNG image. (-1, 0 - 10)
     --save <filename>        Save image to file.
     --exec <command>         Execute a command and wait for it to complete.

Para definir a resolução usamos a opção -r:

fswebcam -r 640x480 teste_fswebcam.jpg

Mas nos primeiros testes que fiz observei um problema de alteração de cores ao capturar imagens sucessivas como mostra a figura 306.

Figura 306. Modificação nas cores da imagem com capturas sucessivas usando o comando fswebcam -r 640x480 --title Teste teste_fswebcam.jpg.

Modificação nas cores da imagem com capturas sucessivas usando o comando fswebcam -r 640x480 --title Teste teste_fswebcam.jpg.

No site fswebcam not displaying images properly encontrei dicas de algumas opções de comando que ajudaram a minimizar o problema.

E resolvi experimentar o efeito da opção S que define o número de quadros (frames) que devem ser descartados para a captura. A maioria das câmeras tem um curto período de inicialização durante o qual as cores e o brilho podem ficar distorcidos. (Fonte: Simple Santa-Cam Hack with BeagleBone Black e Webcam capture using fswebcam)

Resolvi variar o parâmetro S (de 1 até 30) para verificar o efeito na qualidade das cores, usando o comando:

fswebcam -r 640x480 -S [1-N] teste_fswebcam.jpg

E foi possível verificar uma melhora nítida a partir de S=8 e aparentemente estabilizando a partir de S=10 como mostra a animação 307.

Figura 307. Modificação nas cores da imagem variando a opção S (skip frames) usando o comando fswebcam -r 640x480 -S [1-29] teste_fswebcam.jpg .

Modificação nas cores da imagem variando a opção S (skip frames) usando o comando fswebcam -r 640x480 -S [1-29] teste_fswebcam.jpg .

Dica

A captura sequencial das imagens foi automatizada com o script:

    #!/usr/bin/env tclsh

#Script para gerar automaticamente imagens com o programa fswebcam 
set l 30

for {set i 1} {$i < $l} {incr i} {
    puts "i: $i"
    puts  [set title "   S = $i"]
    set file [format "teste_fswebcam_%02d" $i].jpg
    set font "luxisr:80"
    
    catch {exec fswebcam -r 640x480 -S $i --top-banner --no-timestamp \
	       --font $font --title $title $file} msg
}
  

E o gif animado foi criada com o programa Imagemagick:

convert -delay 100 -resize 160x120 -loop 0 teste_fswebcam_*.jpg teste_fswebcam_01.gif

Dica

A opção --list-controls permite visualizar as opções de configuração disponíveis para a câmera:

  fswebcam --list-controls
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Available Controls        Current Value   Range
------------------        -------------   -----
Error reading value of control 'User Controls'.
VIDIOC_G_CTRL: Permission denied
User Controls             N/A             [Unknown Control Type]
Brightness                140 (54%)       0 - 255
Contrast                  135 (52%)       0 - 255
Gamma                     2               1 - 6
Gain, Automatic           True           True | False
Power Line Frequency      Disabled        Disabled | 50 Hz | 60 Hz
Sharpness                 0               0 - 3
Error reading value of control 'JPEG Compression Controls'.
VIDIOC_G_CTRL: Permission denied
JPEG Compression Controls N/A             [Unknown Control Type]
Compression Quality       75 (67%)        50 - 87
Adjusting resolution from 384x288 to 320x240.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
There are unsaved changes to the image.

Experimentei os mesmos comandos com outra câmera mais antiga e percebi que o tempo de aquisição era mais lento e o problema de alteração da cores aparecia mesmo com S=24.

Testei incluir a opção fps (quadros por segundo) variando de 10 a 30, mas não houve alteração no tempo de aquisição.

Fiz 30 capturas mantendo S em 30 e para minha surpresa algumas capturas foram alteradas. Ou seja, com essa câmera mais antiga a opção S não era garantia de evitar o problema.

Incluí o fps=30 mas não evitou algumas capturas com cor alterada.

Tentei modificar o ganho de True para False, com o comando:

  fswebcam   --set "Gain, Automatic"=0

E confirmando a alteração:

  fswebcam --list-controls
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Available Controls        Current Value   Range
------------------        -------------   -----
Error reading value of control 'User Controls'.
VIDIOC_G_CTRL: Permission denied
User Controls             N/A             [Unknown Control Type]
Brightness                140 (54%)       0 - 255
Contrast                  135 (52%)       0 - 255
Gamma                     2               1 - 6
Gain, Automatic           True           True | False
...

Depois dessa nova alteração fiz nova série de 30 capturas e não houve alteração de cor.

Essas alterações são perdidas se a câmera for religada, retornando para os valores default.

E com o ganho automático ativado fiz uma série de 240 capturas nas quais 6 capturas tiveram alteração na cor (verde -> violeta e vermelho -> verde e azul -> preto).

Ou seja, o ganho automático não interfere na alteração das cores. E diante da dificuldade para eliminar completamente essas capturas com inversão de cores, resolvi não insistir nessa questão e mais tarde implementar no programa de análise de cores uma rotina para verificar alterações muito discrepantes entre capturas seguidas e usar essa informação como um filtro para eliminar imagens com cores invertidas.

Uma outra alternativa para a configuração da câmera é o pacote v4l2 ou v4l (Fonte: Webcam settings on Ubuntu and Fedora Linux CLI from terminal).

Para testar essa alternativa instalei o pacote:

apt-get install v4l-utils

E os parâmetros de configuração podem ser consultados com o comando:

/home/user$  v4l2-ctl --list-ctrls

User Controls

                     brightness (int)    : min=0 max=255 step=1 default=128 value=55 flags=slider
                       contrast (int)    : min=0 max=255 step=1 default=128 value=135 flags=slider
                          gamma (int)    : min=1 max=6 step=1 default=4 value=2 flags=slider
                 gain_automatic (bool)   : default=1 value=1
           power_line_frequency (menu)   : min=0 max=2 default=0 value=0
                      sharpness (int)    : min=0 max=3 step=1 default=0 value=0 flags=slider

JPEG Compression Controls

            compression_quality (int)    : min=50 max=87 step=1 default=75 value=75
                     brightness (int)    : min=0 max=255 step=1 default=128 value=55 flags=slider
                       contrast (int)    : min=0 max=255 step=1 default=128 value=135 flags=slider
                          gamma (int)    : min=1 max=6 step=1 default=4 value=2 flags=slider
                 gain_automatic (bool)   : default=1 value=1
           power_line_frequency (menu)   : min=0 max=2 default=0 value=0
                      sharpness (int)    : min=0 max=3 step=1 default=0 value=0 flags=slider

Por exemplo o brilho e o ganho automático podem ser alterados com o comando:

v4l2-ctl --set-ctrl brightness=200
v4l2-ctl --set-ctrl auto_gain=0

Links com dicas sobre Fswebcam:

Resolvi comprar uma câmera nova para verificar se o problema de inversão de cores era causado pelo hardware e felizmente pude capturar inúmeras imagens sem observar o efeito da inversão de cores.

A câmera antiga apresentou problemas mas em compensação estimulou o aprendizado de novos conceitos e ferramentas.;-)

O comando fswebcam --list-controls mostrou que a nova câmera oferecia as seguintes opções de configuração: Brightness, Contrast, Saturation, Gamma, Power Line Frequency, Sharpness e Backlight Compensation.

  $ fswebcam --list-controls
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Available Controls        Current Value   Range
------------------        -------------   -----
Brightness                30 (30%)        0 - 100
Contrast                  57 (57%)        0 - 100
Saturation                2               0 - 4
Gamma                     3               1 - 8
Power Line Frequency      50 Hz           Disabled | 50 Hz | 60 Hz
Sharpness                 10 (10%)        0 - 100
Backlight Compensation    1               0 - 1
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
There are unsaved changes to the image.

E aí fiz a seguinte pergunta:

Qual a melhor combinação dos diversos parâmetros para obter a melhor configuração e melhor fidelidade das cores?

Primeiro precisamos estabelecer os possíveis níveis de cada parâmetro: Brightness (25 50 75 100), Contrast (25 50 75 100), Saturation (0 1 2 3 4), Gamma (1 2 3 4 5 6 7 8), Power Line Frequency (Disabled 50 Hz 60 Hz), Sharpness (20 40 60 80 100) e Backlight Compensation (0 1).

A combinação desses parâmetros nos respectivos níveis pode gerar no máximo 19200 (4x4x5x8x3x5x2) possíveis combinações diferentes.

E além disso seria necessário recortar regiões de uma figura multicor e determinar os índices de R (vermelho), G (verde) e B (azul) de diferentes regiões, para só então tentar estabelecer algum critério par ordenar as diferentes configurações com respeito à fidelidade das cores.

Fiz algumas tentativas, mas acabei desistindo dessa abordagem força bruta e preferi selecionar os parâmetros fazendo pequenas alterações nos parâmetros e determinar a melhor configuração de forma subjetiva comparando visualmente as cores das imagens com a imagem real.

Dessa forma cheguei na seguinte configuração:

Para configurar a câmera com os parâmetros desejados com o fswebcam usamos o comando com as seguintes opções:

fswebcam -s "Brightness"=90 -s "Contrast"=80 -s "Saturation"=2 -s "Gamma"=3 -s "Power Line Frequency"="Disabled" -s "Sharpness"=15 -s "Backlight Compensation"=1

Após configurar a câmera a imagem pode ser capturada com o comando:

fswebcam -r 640x480 -S 5 --top-banner --no-timestamp --font "luxisr:6" --title "Título da Imagem" --save imagem_00.jpg

Links úteis

Understanding On-line Amperometric Chlorine Measurements. (Caso o documento não esteja mais diponível clique aqui: Understanding On-line Amperometric Chlorine Measurements.

Network Webcams - Backlight Compensation

Matlab - Set Properties for Webcam Acquisition

Cheap USB Web Camera teardown, analysis and examples

DIGITIZATION OF COLORIMETRIC MEASUREMENTS FOR QUANTITAVE ANALYSES USING A SMARTPHONE

Colorimetric Sensor Arrays for the Detection and Identification of Chemical Weapons and Explosives

Is there a CLI webcam image grabber that works with a video4linux2 device?

Streaming Your Webcam w/ Raspberry Pi

G/Gref = media_G_norm_ref/media_G_norm_amostra Onde media_G_norm_ref: valor médio normalizado do canal verde da referência branco media_G_norm_amostra: valor médio normalizado do canal verde da amostra Outra dica interessante de correção das leituras de RGB feita no artigo: /home/markos/Fotometria/Espectrometria/smartphone_spectrophotometer_05.pdf where R corr is the corrected value, R W the white background value, R B the black background value, and R meas the mea- sured value of the sensor, respectively. Then, the corrected RGB values become ready to be applied to the pre-loaded cali- bration curves. This is similar to the reference electrode and the iR drop compensation used to compare electrochemical potentials obtained in different electrochemical systems #Ajustes do software fswebcam https://forum.arduino.cc/index.php?topic=253571.0 fswebcam -i 0 -d /dev/video0 --set brightness=100% fswebcam -d v4l2:/dev/video0 -i 0 --list-controls same way to adjust Contrast, Saturation, Hue, Sharpness... (https://raspberrypi.stackexchange.com/questions/8303/fswebcam-not-displaying-images-properly) fswebcam -d /dev/video0 -S 2 -s brightness=60% -s Contrast=15% -s Gamma=50% -p YUYV -r 1280x720 --jpeg 80 -s Sharpness=40% -s Saturation=15% --title "New Zealand - Wellington - Tawa" $DIR/$filename Dicas para automatizar os ajustes https://www.raspberrypi.org/forums/viewtopic.php?t=28795&p=283101 https://softsolder.com/2015/04/06/rpi-logitech-quickcam-for-notebook-vs-fswebcam/ Scripts do Imagemagick http://www.fmwconcepts.com/imagemagick/index.php Com uma das câmeras conectadas o comando fswebcam --list-controls retornou as seguintes informações: fswebcam --list-controls --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. Available Controls Current Value Range ------------------ ------------- ----- Error reading value of control 'User Controls'. VIDIOC_G_CTRL: Permission denied User Controls N/A [Unknown Control Type] Brightness 127 (49%) 0 - 255 Contrast 127 (49%) 0 - 255 Gamma 3 1 - 6 Gain, Automatic True True | False Power Line Frequency Disabled Disabled | 50 Hz | 60 Hz Sharpness 1 0 - 3 Error reading value of control 'JPEG Compression Controls'. VIDIOC_G_CTRL: Permission denied JPEG Compression Controls N/A [Unknown Control Type] Compression Quality 75 (67%) 50 - 87 Adjusting resolution from 384x288 to 320x240. --- Capturing frame... Captured frame in 0.00 seconds. --- Processing captured image... There are unsaved changes to the image. Algumas opções não estão disponíveis como: User Controls N/A [Unknown Control Type] JPEG Compression Controls N/A [Unknown Control Type] O programa fswebcam pode ler um arquivo de configuração, gerar imagens de cinza e outras opções (ver man) http://rpicam.blogspot.com.br/p/howto.html http://r3uk.com/index.php/38-tech-tips/software/100-webcam-capture-using-fswebcam Ferramentas que podem ser úteis para a detecção de bordas http://www.imagemagick.org/Usage/transform/#edge Mas o fswebcam exibe o seguinte erro: Unable to find a compatible palette format o comando fswebcam -v retorna: --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. src_v4l2_get_capability,87: /dev/video0 information: src_v4l2_get_capability,88: cap.driver: "spca505" src_v4l2_get_capability,89: cap.card: "USB Camera (0733:0430)" src_v4l2_get_capability,90: cap.bus_info: "usb-0000:00:1d.3-1" src_v4l2_get_capability,91: cap.capabilities=0x85000001 src_v4l2_get_capability,92: - VIDEO_CAPTURE src_v4l2_get_capability,101: - READWRITE src_v4l2_get_capability,103: - STREAMING No input was specified, using the first. src_v4l2_set_input,181: /dev/video0: Input 0 information: src_v4l2_set_input,182: name = "spca505" src_v4l2_set_input,183: type = 00000002 src_v4l2_set_input,185: - CAMERA src_v4l2_set_input,186: audioset = 00000000 src_v4l2_set_input,187: tuner = 00000000 src_v4l2_set_input,188: status = 00000000 src_v4l2_set_pix_format,520: Device offers the following V4L2 pixel formats: src_v4l2_set_pix_format,533: 0: [0x35303553] 'S505' (S505) Unable to find a compatible palette format. A outra câmera MMX retorna as informações: --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. src_v4l2_get_capability,87: /dev/video0 information: src_v4l2_get_capability,88: cap.driver: "gspca_zc3xx" src_v4l2_get_capability,89: cap.card: "PC Camera" src_v4l2_get_capability,90: cap.bus_info: "usb-0000:00:1d.2-1" src_v4l2_get_capability,91: cap.capabilities=0x85000001 src_v4l2_get_capability,92: - VIDEO_CAPTURE src_v4l2_get_capability,101: - READWRITE src_v4l2_get_capability,103: - STREAMING No input was specified, using the first. src_v4l2_set_input,181: /dev/video0: Input 0 information: src_v4l2_set_input,182: name = "gspca_zc3xx" src_v4l2_set_input,183: type = 00000002 src_v4l2_set_input,185: - CAMERA src_v4l2_set_input,186: audioset = 00000000 src_v4l2_set_input,187: tuner = 00000000 src_v4l2_set_input,188: status = 00000000 src_v4l2_set_pix_format,520: Device offers the following V4L2 pixel formats: src_v4l2_set_pix_format,533: 0: [0x4745504A] 'JPEG' (JPEG) Using palette JPEG Adjusting resolution from 384x288 to 320x240. src_v4l2_set_mmap,672: mmap information: src_v4l2_set_mmap,673: frames=4 src_v4l2_set_mmap,722: 0 length=32768 src_v4l2_set_mmap,722: 1 length=32768 src_v4l2_set_mmap,722: 2 length=32768 src_v4l2_set_mmap,722: 3 length=32768 --- Capturing frame... Captured frame in 0.00 seconds. --- Processing captured image... There are unsaved changes to the image. O manual do fswebcam mostra suporte para os seguintes formatos: PNG JPEG MJPEG S561 RGB32 RGB24 BGR32 BGR24 YUYV UYVY YUV420P BAYER SGBRG8 SGRBG8 RGB565 RGB555 Y16 GREY Algumas informações adicionais: v4l-info /dev/video0 Estimating the Underwater Diffuse Attenuation Coefficient with a Low-Cost Instrument: The KdUINO DIY Buoy http://www.mdpi.com/1424-8220/16/3/373/htm Open turbidimeter https://github.com/wash4all/open-turbidimeter-project Wash for All http://wash4all.org/wp/ https://github.com/wash4all/open-turbidimeter-project Turbidímetros DIY http://hackteria.org/wiki/DIY_turbidity_meters Projeto EcoKit https://www.youtube.com/watch?v=QyJSKR7wkc8 https://www.youtube.com/watch?v=TtILYp-d3bE https://www.youtube.com/watch?v=TtILYp-d3bE Colorímetro comercial https://alfakit.ind.br/equipamentos-eletronicos-medidores-de-cloro/2/ #tips to use image #http://wiki.tcl.tk/643 ************************************************************************* http://stackoverflow.com/questions/1472514/convert-light-frequency-to-rgb ************************************************************************* https://forum.arduino.cc/index.php?topic=86862.0 Análise estatística com Tcl http://www.magicsplat.com/articles/statistics.html água filtro mean_R: 115 mean_G: 209 mean_B: 254 água torneira mean_R: 129 mean_G: 214 mean_B: 254 Além disso observei que a webcam faz ajustes automáticos da sensibilidade dependendo da luminosidade. " MPEG video decoding with the UltraSPARC visual instruction set" http://ieeexplore.ieee.org/document/512424/ Do artigo https://www.sciencedirect.com/science/article/pii/S0030399217310216 encontramos um comentário sobre sobre dois tipos de RGB: Linear RGB Non-linear RGB In this paper, the versions before and after gamma-correction are referred to linear and nonlinear, respectively. To separate these two versions, the super- script / is attached to nonlinear color space values. The linear RGB values are obtained by applying the gamma function to each non- linear R / G / B / data with the exponent of 2.2 as expressed in (2). The value of 2.2 comes from the gamma value widely used for displays.

Estimativa da distância mínima para visualização completa e com nitidez da caixa de TicTac:

Para a câmera pequena foi necessário uma distância mínima de 11 cm (superfície da lente até a superfície da caixa) para enquadrar toda a caixa que possui 6 cm de altura x 4 cm de largura. Se somarmos a profundidade da câmera e da caixa podemos estimar uma distância mínima de 15 cm. Mas podemos adicionar mais ~5 cm para colocar um led e um difusor branco na parte de trás da caixa. Ou seja, podemos considerar um comprimento mínimo para a caixa de 20cm. Mas podemos adicionar mais 5 cm, por segurança e teremos um comprimento mínimo de 25 cm de comprimento para uma caixa poder acomodar a webcam, cela, anteparo e led.

E para a largura podemos estimar uns 10 cm para poder acomodar o led emissor e o receptor.

E nas medidas com a câmera antiga para acompanhamento do reator, verificamos que a câmera consegue enquadrar com relativa nitidez um frasco uma região de ~14 - 30 cm de altura e a uma distância de 25 - 35 cm de distância.

É nítida a diferença na nitidez das imagens das duas câmeras.