fundo
Minhas imagens digitais podem ser lidas em um programa de computador como Matlab ou R como matriz amxnx 3, em que mxn é o número de pixels observado por cada um dos três sensores (vermelho, verde e azul) e cada célula da matriz possui um número 1-255 que reflete o brilho observado pelo sensor.
Eu gostaria de usar essas informações para obter uma medida objetiva do verde em uma fotografia, porque quero tentar correlacionar o verde ao crescimento das plantas (imagine uma foto por dia de um campo de milho).
Trabalhos anteriores nessa direção tiveram algum sucesso ao calcular um índice de verde como
- verde% = verde / (azul + vermelho) ou
- divergência verde = 2 * verde - vermelho - azul
das imagens da webcam para cada um dos pixels mxn, mas não havia controle sobre a abertura ou a radiação incidente (ângulo solar).
observe que não estou procurando uma medida 'absoluta' de esverdeamento, a escala e a distribuição do número não importa - ele apenas precisa fornecer uma medida relativa consistente de esverdeamento.
Questão
Posso usar minha SLR para obter uma medida robusta de verde invariável com um ou todos os seguintes itens:
- cobertura de nuvens?
- hora do dia?
- dia do ano? (este é o único requisito)
- proporção de céu / solo em segundo plano?
Status atual
Tive as seguintes idéias, mas não sei ao certo quais seriam necessárias ou quais não teriam efeito na proporção de verde / (vermelho + azul)
- tire uma foto de um pedaço de plástico branco e use esta imagem para normalizar os outros valores
- Corrigir abertura
- Corrigir velocidade do obturador
- defina o balanço de branco usando um pedaço de papel branco
- Tire todas as fotos do mesmo ângulo
- Tire todas as fotos ao meio-dia solar
fonte
Respostas:
Se você puder processar os arquivos RAW, terá uma matriz de pixels bayer composta por linhas RGRGRG e GBGBGB (ou possivelmente linhas RGBGRGBG). Você pode ignorar todos os pixels R e B, resumir os pixels G e obter a raiz quadrada ( já que existem duas vezes mais pixels verdes do que vermelho ou azul) e divida pela metade do número de G pixels. Isso deve fornecer a média ponderada adequada para "verde" na sua foto. Você pode então pegar a média de vermelho e azul e calcular sua porcentagem de verde a partir das três médias.
Para ser mais preciso, você pode levar em consideração a ponderação adequada para os pixels do sensor vermelho, verde e azul, pois os sensores CMOS têm sensibilidades diferentes para cada comprimento de onda da luz. Os pesos dependeriam geralmente do sensor. Essa seria a abordagem simples.
Para considerar a projeção de cores devido à hora do dia, vários tipos de iluminação artificial etc., pode ser mais apropriado pré-processar cada foto em uma ferramenta como o Lightroom para corrigir primeiro o balanço de brancos e, em seguida, realizar o cálculo em imagens de pixel RGB padrão. Ao contrário do processamento de dados do sensor RAW, você deseja ponderar seu cálculo com base na "pureza verde" do pixel, em vez da média geral do componente verde. Quanto mais verde é um pixel, maior é seu peso vs. pixels mais vermelhos ou azuis. A normalização do balanço de brancos antes do processamento deve eliminar qualquer necessidade de complicar uma computação bastante simples com tangentes projetadas para explicar vários fatores como cobertura de nuvens, hora do dia, estação do ano, etc.
Você ainda pode querer considerar grandes áreas de pixels não incidentes, como o céu. Na verdade, não posso ajudá-lo muito nessa área sem saber exatamente o que você está tentando alcançar. O verde de uma "fotografia" em geral provavelmente seria melhor se computasse a proporção de verde para vermelho e azul, que incluiria pixels do "céu".
Quanto ao seu procedimento, não é necessário dizer que, se você tirar as fotos com as mesmas configurações da câmera, sob o mesmo iluminante (mesma intensidade e temperatura de cor), comparadas com uma linha de base comum, como um cartão cinza de 18%, obviamente um longo caminho para normalizar seus resultados. Com o digital, qualquer discrepância pode ser corrigida com o software de processamento RAW e uma ferramenta básica de seleção de balanço de branco, por isso, fotografe em RAW.
Para fornecer mais informações sobre o cálculo do "verde" das suas fotos. Obviamente, existem maneiras simples, como calcular o peso dos pixels da camada verde vs. azul e vermelho ou calcular a pureza do verde em relação à pureza do vermelho / azul dos pixels RGB. Você pode ter mais sorte se converter para um espaço de cores mais apropriado, como HSV ( Matiz / Saturação / Valor , às vezes chamado HSB, substituindo Valor por Brilho) e calcular sua quantidade de verde usando uma curva no espaço HUE. (OBSERVAÇÃO: HSL é um tipo diferente de espaço de cores e provavelmente não seria ideal para calcular quanto "verde" há em uma foto, portanto, eu usaria o HSV. Você pode aprender mais sobre esses espaços de cores aqui.) O verde puro (independentemente da saturação ou do valor) cai em um ângulo de matiz de 120 ° e cai dali quando você avança para o vermelho (a 0 °) ou para o azul (a 240 °). Entre 240 ° e 360 °, haveria quantidade zero de verde em um pixel, independentemente da saturação ou valor.
Fig 1. Gráfico de Matiz - Pureza Verde em Graus de Matiz
Você pode ajustar a curva de ponderação real para atender às suas necessidades específicas; no entanto, uma curva simples pode ser semelhante à seguinte:
O valor para
pureGreen
deve ser 1,0 . Uma fórmula para computaçãogreenness
poderia então ser feita da seguinte maneira:O
hue
é o grau de cor do seu valor de cor HSV. Oradius
é a metade daperiod
qual o verde está presente até certo ponto. Elescale
ajusta a curva do pecado ao nosso período, de modo quesin(scale * hue)
atinge o pico (retorna 1,0) exatamente onde você teria o verde puro (ignorando a intensidade dos verdes). Como a quantidade degreenness
só é válida na primeira metade do nosso período, o cálculo de esverdeamento é válido apenas quando a tonalidade for maior que 0 ° e menor que 240 ° e zero para qualquer outra tonalidade.Você pode ajustar a ponderação ajustando o período, o intervalo dentro do qual você define
green
pode estar presente (ou seja, em vez de 0 a 240, você pode definir uma restrição como40 > hue > 200
alternativa) e definir qualquer coisa fora desse intervalo para ter um verde de 0 Deve-se notar que isso será matematicamente preciso, no entanto, pode não ser inteiramente perceptivamente preciso. É claro que você pode ajustar a fórmula para ajustar o pontopure green
mais ao amarelo (o que pode produzir resultados perceptivamente mais precisos), aumentar a amplitude da curva para o platô e expandir a faixa de verde puro para uma faixa de matiz, em vez de um único valor da tonalidade, etc. Para precisão total da percepção humana, um algoritmo mais complexo processado no CIE XYZ e no CIE L a b *pode ser necessário espaço. (NOTA: A complexidade de trabalhar no espaço XYZ e Lab aumenta dramaticamente além do que descrevi aqui.)Para calcular o verde de uma foto, você pode calcular o verde de cada pixel e produzir uma média. Você pode pegar o algoritmo a partir daí e ajustá-lo para suas necessidades específicas.
Você pode encontrar algoritmos para conversões de cores no EasyRGB , como o de RGB para HSV:
fonte
Projeto GLOBE ?
Não use um pedaço de papel branco. Eles contêm branqueadores ópticos que convertem um pouco de UV em luz azul, causando exposição incorreta. É por isso que existem cartões cinza comerciais (como sugerido por jrista).
Tirar todas as fotos exatamente do mesmo lugar é certamente a abordagem correta. Em relação à velocidade do obturador e abertura, estes não devem importar. A velocidade do obturador não muda de cor, a abertura desfoca a imagem, mas acho que esse efeito desaparece de qualquer maneira quando você soma todos os valores de pixel. Prefiro tentar obter uma exposição constante.
Com relação à diferença entre nublado e não nublado, você pode apenas querer executar alguns testes. Se a quantidade real de verde não mudar rapidamente (ou seja, de hoje para amanhã), também não deve ser feita ao examinar as imagens. Talvez uma abordagem empírica possa ajudar lá (por exemplo, se você descobrir que o verde é sempre 10% maior quando está nublado, você pode compensar isso).
fonte
Eu sugeriria fotografar 'RAW' e converter para TIFF de 16 bits usando o balanço de branco automático da câmera, mas sem correção de gama (ou seja, saída de cores equilibrada, mas linear). 16 bits permitirá um melhor cálculo de proporções e índices em sombras profundas e realces (ou seja, sem recorte). O DCRAW pode fazer isso, mas sua câmera viria com seu próprio software, provavelmente mais fácil de usar.
Se você deseja índices, o RGB é realmente o único espaço de cores útil. Você já mencionou o índice de 'divergência verde' (também chamado de Excesso de Índice Verde) - este e o algoritmo de folha verde intimamente relacionado funcionam muito bem. Se você deseja executar uma classificação de pixel baseada em cores (ou seja, veg versus não veg), eu examinaria atentamente o espaço de cores L a b * em vez de HSV / HSI. Na verdade, há uma demonstração muito boa no site da Mathworks que ilustra L ab * análise. A classificação poderia ser combinada com a análise espectral para responder às perguntas a) quantos pixels verdes existem eb) quantos verdes são? Isso pode ser mais útil do que apenas um índice de greeness, que também seria influenciado pela qualidade espectral de fundo (solo, lixo, etc.), que também poderia mudar com o tempo. Você mencionou uma colheita de milho, então suponho que você esteja apontando a câmera para baixo, não para cima?
Se você tivesse duas câmeras, poderia combinar imagens de aparência descendente (medindo o verde) com imagens de aparência ascendente que medem a cobertura vegetal. Imagens para cima não seriam adequadas para análise espectral e a classificação de pixels seria baseada no contraste entre céu / não céu, provavelmente usando apenas o canal azul da imagem RGB.
Se você estiver coletando séries temporais (diárias?), Poderá dividir as imagens descendentes em imagens de 'dia nublado' e imagens de 'dia ensolarado' e verificar se há viés. Você pode jogar com o equilíbrio de cores durante o processamento bruto para corrigir o viés, se presente, ou apenas redimensionar uma série para corresponder à outra (simplifique) assumindo que os dias ensolarados e nublados são intercalados.
Diverta-se.
fonte