Antecedentes
Mis imágenes digitales se pueden leer en un programa de computadora como Matlab o R como matriz amxnx 3, donde mxn es la cantidad de píxeles observados por cada uno de los tres sensores (rojo, verde y azul), y cada celda en la matriz tiene un número 1-255 que refleja el brillo observado por el sensor.
Me gustaría usar esta información para obtener una medida objetiva del verdor en una fotografía, porque quiero intentar correlacionar el verdor con el crecimiento de las plantas (imagine una imagen por día de un campo de maíz).
El trabajo anterior en esta dirección ha tenido cierto éxito al calcular un índice de verde ya sea como
- verde% = verde / (azul + rojo) o
- divergencia verde = 2 * verde - rojo - azul
de las imágenes de la cámara web para cada uno de los píxeles mxn, pero no hubo control sobre la apertura o la radiación incidente (ángulo solar).
tenga en cuenta que no estoy buscando una medida 'absoluta' de verdor, la escala y la distribución del número no importa, solo tiene que proporcionar una medida relativa consistente de verdor.
Pregunta
¿Puedo usar mi SLR para obtener una medida robusta de verdor que sea invariable con alguno o todos los siguientes:
- ¿Cubierto de nubes?
- hora del dia?
- día del año? (este es el único requisito)
- proporción de cielo / tierra en el fondo?
Estado actual
Se me ocurrieron las siguientes ideas, pero no estoy seguro de cuáles serían necesarias o cuáles no tendrían ningún efecto en la relación de verde / (rojo + azul)
- tome una foto de una pieza de plástico blanca y use esta imagen para normalizar los otros valores
- Fijar apertura
- Fijar velocidad de obturación
- establecer el balance de blancos con un trozo de papel blanco
- Toma todas las fotos desde el mismo ángulo
- Toma todas las fotos al mediodía solar
fuente
Respuestas:
Si puede procesar los archivos RAW, tendrá una matriz de píxeles bayer compuesta por filas RGRGRG y GBGBGB (o posiblemente filas RGBGRGBG). Puede ignorar todos los píxeles R y B, resumir los píxeles G, sacar la raíz cuadrada ( dado que hay el doble de píxeles verdes que rojos o azules), y divida por la mitad el número de G píxeles. Eso debería darle el promedio ponderado adecuado para "verde" en su foto. Luego, puede tomar el promedio de rojo y azul, y calcular su porcentaje verde de los tres promedios.
Para ser más precisos, es posible que desee tener en cuenta la ponderación adecuada para los píxeles de los sensores rojo, verde y azul, ya que los sensores CMOS tienen diferentes sensibilidades a cada longitud de onda de luz. Los pesos dependerían del sensor, en general. Ese sería el enfoque simple.
Para tener en cuenta el tono de color debido a la hora del día, varios tipos de iluminación artificial, etc., entonces podría ser más apropiado preprocesar cada foto en una herramienta como Lightroom para corregir el balance de blancos primero y luego realizar su cálculo en imágenes de píxeles RGB estándar. A diferencia del procesamiento de datos del sensor RAW, querrá ponderar su cálculo en función de la "pureza verde" del píxel, en lugar de promediar el componente verde en general. Cuanto más verde puro es un píxel, mayor es su peso frente a los píxeles que son más rojos o azules. La normalización del balance de blancos antes del procesamiento debería eliminar cualquier necesidad de complicar un cálculo bastante simple con tangentes diseñadas para dar cuenta de innumerables factores como la capa de nubes, la hora del día, la estación, etc.
Es posible que aún desee tener en cuenta grandes áreas de píxeles no incidentes, como el cielo. Realmente no puedo ayudarte mucho en esa área sin saber más sobre exactamente lo que estás tratando de lograr. El verde de una "fotografía" en general probablemente sería mejor al calcular la proporción de verde a rojo y azul, que incluiría píxeles de "cielo".
En cuanto a su procedimiento, no debería decir que si toma las imágenes con la misma configuración de la cámara, bajo el mismo iluminante (misma intensidad y temperatura de color), medido contra una línea de base común, como una tarjeta gris al 18%, obviamente irá un largo camino hacia la normalización de sus resultados. Con digital, cualquier discrepancia se puede corregir con el software de procesamiento RAW y una herramienta básica de selección de balance de blancos, así que asegúrese de disparar en RAW.
Para proporcionar más información sobre el cálculo del "verde" de sus fotos. Obviamente, existen formas simples, como calcular el peso de los píxeles de bayer verde frente a azul y rojo, o calcular la pureza verde en relación con la pureza rojo / azul de los píxeles RGB. Es posible que tenga más suerte si convierte a un espacio de color más apropiado, como HSV ( Hue / Saturation / Value , a veces llamado HSB, que reemplaza Value con Brightness), y calcula su cantidad verde usando una curva en el espacio HUE. (NOTA: HSL es un tipo diferente de espacio de color, y probablemente no sería ideal para calcular cuánto "verde" hay en una foto, así que usaría HSV. Puede obtener más información sobre estos espacios de color aquí.) El verde puro (independientemente de la saturación o el valor) cae en un ángulo de tono de 120 °, y se cae desde allí a medida que avanza hacia el rojo (a 0 °) o hacia el azul (a 240 °). Entre 240 ° y 360 °, habría cero cantidad de verde en un píxel, independientemente de la saturación o el valor.
Fig. 1. Diagrama de tono: pureza verde en grados de tono
Puede ajustar la curva de ponderación real para satisfacer sus necesidades específicas, sin embargo, una curva simple podría ser similar a la siguiente:
El valor para
pureGreen
debe ser 1.0 . Una fórmula para la computacióngreenness
podría entonces hacerse de la siguiente manera:El
hue
es el grado de color de su valor de color HSV. Elradius
es la mitad de laperiod
cual el verde está presente hasta cierto punto. Lasscale
ajusta la curva de pecado a nuestra época, de tal manera quesin(scale * hue)
los picos (retornos 1.0) exactamente donde usted tendría verde puro (haciendo caso omiso de que la intensidad de los verdes). Dado que la cantidad degreenness
solo es válida en la primera mitad de nuestro período, el cálculo de verdor solo es válido cuando el tono es mayor que 0 ° y menor que 240 °, y es cero para cualquier otro tono.Puede ajustar la ponderación ajustando el período, el rango dentro del cual define
green
puede estar presente (es decir, en lugar de 0 a 240, puede establecer una restricción como en su40 > hue > 200
lugar) y definir cualquier cosa fuera de ese rango para que tenga un verde de 0 Cabe señalar que esto será matemáticamente exacto, sin embargo, puede que no sea completamente perceptualmente exacto. Por supuesto, puede ajustar la fórmula para ajustar el punto depure green
más hacia el amarillo (lo que podría producir resultados más perceptualmente precisos), aumentar la amplitud de la curva a la meseta y expandir la banda de verde puro a un rango de tono, en lugar de un solo valor de tono, etc. Para una precisión perceptiva humana total, un algoritmo más complejo procesado en CIE XYZ y CIE L a b *Se puede requerir espacio. (NOTA: La complejidad de trabajar en el espacio XYZ y Lab aumenta dramáticamente más allá de lo que he descrito aquí).Para calcular el verde de una foto, puede calcular el verde de cada píxel y luego generar un promedio. Luego puede tomar el algoritmo desde allí y ajustarlo para sus necesidades específicas.
Puede encontrar algoritmos para conversiones de color en EasyRGB , como el de RGB a HSV:
fuente
Proyecto GLOBE ?
No use un pedazo de papel blanco. Contienen abrillantadores ópticos que convierten algunos rayos UV en luz azul, lo que provoca una exposición incorrecta. Es por eso que existen tarjetas grises comerciales (como lo sugiere jrista).
Tomar todas las fotos desde el mismo lugar es sin duda el enfoque correcto. En cuanto a la velocidad de obturación y la apertura, estos no deberían importar. La velocidad de obturación no cambia de color en absoluto, la apertura difumina la imagen, pero creo que este efecto desaparece de todos modos cuando se suman todos los valores de píxeles. Prefiero tratar de obtener una exposición constante.
Con respecto a la diferencia entre nublado y no nublado, es posible que solo desee ejecutar algunas pruebas. Si la cantidad real de verde no cambia rápidamente (es decir, de hoy a mañana), tampoco debería hacerlo al examinar las imágenes. Quizás un enfoque empírico podría ayudar allí (por ejemplo, si descubre que el verdor siempre es un 10% más alto cuando está nublado, podría compensar eso).
fuente
Sugeriría disparar 'RAW' y convertir a TIFF de 16 bits utilizando el balance de blancos automático de la cámara pero sin corrección de gamma (es decir, balance de color pero salida lineal). 16 bits permitirá un mejor cálculo de proporciones e índices en sombras profundas y reflejos (es decir, sin recorte). DCRAW puede hacer esto, pero su cámara vendría con su propio software que probablemente sea más fácil de usar.
Si desea índices, entonces RGB es realmente el único espacio de color útil. Ya ha mencionado el índice de 'divergencia verde' (también llamado índice de exceso de verde); este y el algoritmo de hoja verde estrechamente relacionado funcionan bastante bien. Si desea realizar una clasificación de píxeles basada en el color (es decir, veg versus no veg), miraría detenidamente el espacio de color L a b * en lugar de HSV / HSI. En realidad, hay una muy buena demostración en el sitio web Mathworks que ilustra L de unab * análisis. La clasificación podría combinarse con el análisis espectral para responder las preguntas a) ¿cuántos píxeles verdes hay yb) qué tan verdes son? Esto podría ser más útil que solo un índice de verde, que también estaría influenciado por la calidad espectral de fondo (suelo, basura, etc.), que también podría cambiar con el tiempo. Mencionaste una cosecha de maíz, así que supongo que estás apuntando la cámara hacia abajo, no hacia arriba.
Si tuviera dos cámaras, podría combinar imágenes que miren hacia abajo (midiendo el verde) con imágenes que miren hacia arriba y midan la cubierta vegetal. Las imágenes ascendentes no serían adecuadas para el análisis espectral y la clasificación de píxeles se basaría en el contraste entre cielo / no cielo, probablemente utilizando solo el canal azul de la imagen RGB.
Si está recopilando una serie de tiempo (¿diaria?), Puede dividir las imágenes hacia abajo en imágenes de 'día nublado' e imágenes de 'día soleado' y verificar si hay sesgo. Puede jugar con el balance de color durante el procesamiento sin procesar para corregir el sesgo, si está presente, o simplemente cambiar el tamaño de una serie para que coincida con la otra (manténgalo simple) suponiendo que los días soleados y nublados estén intercalados.
Que te diviertas.
fuente