Protótipo multiespectral DIY para inspeção de carcaças bovinas e ovinas (660 nm + 850 nm)

Working paperv0.1 · Precursor teórico 660+850 nm (simulação); sucedido por MSI-sensor e Atomos
João LeonardiJoão LeonardiORCID8 min
View on GitHub

Precursor histórico da linha MSI desta série: estudo de projeto e validação teórica (sem protótipo físico montado nem medições em abatedouro) que testa se duas bandas — 660660 e 850nm850\,\mathrm{nm} — bastam para contraste músculo/gordura subcutânea. Webcam Logitech C270 modificada, iluminação sequencial, calibração radiométrica e índices NDI/SRI numa ROI de 30×30cm30\times 30\,\mathrm{cm}. Os números deste post são simulados (notebooks R, set.seed(42)).

A genealogia óptica da série segue daqui: este DIY (2 bandas, só simulação) → MSI-sensor (bancada de métodos, 4 bandas, hardware real) → Atomos MSI (SCARA + 5 bandas + análise em tempo real). Leia os instrumentos atuais para o estado da arte do projeto; este registro permanece como âncora do argumento “poucas λ\lambda bem escolhidas”.


1. Motivação: classificação visual versus espectroscopia acessível

A classificação de carcaças no Brasil segue normas do MAPA (categoria, conformação, cobertura de gordura, peso de carcaça quente). Em escala industrial, sistemas NIR e hiperespectrais estimam atributos como teor de gordura, umidade e qualidade da carne — mas custam dezenas a centenas de milhares de dólares e exigem infraestrutura especializada.

O objetivo deste projeto não é substituir um hiperespectral industrial. É validar, com componentes acessíveis, se duas bandas espectrais bem escolhidas permitem extrair informação físico-química superficial útil para:

  • segmentação de gordura subcutânea versus músculo;
  • detecção de variações estruturais na superfície da carcaça;
  • identificação de anomalias ópticas superficiais (contaminação visível, sangue residual).

A analogia física é a de um oxímetro de pulso (PPG): LED + fotodetector medindo refletância em bandas selecionadas. A diferença é que a carcaça não apresenta sinal pulsátil — trata-se de refletância difusa estática em tecido biológico turbulento.


2. Fundamentos físicos: por que 660 nm e 850 nm?

A interação luz–tecido em carcaças é governada por absorção e espalhamento. A intensidade decai com a profundidade zz aproximadamente como:

I(z)=I0eμeffzI(z) = I_0 \, e^{-\mu_{\text{eff}} z}

onde o coeficiente de atenuação efetivo é:

μeff=3μa(μa+μs)\mu_{\text{eff}} = \sqrt{3\mu_a(\mu_a + \mu_s')}

e a profundidade de penetração característica é δ=1/μeff\delta = 1/\mu_{\text{eff}}.

Cromóforos relevantes

Os principais cromóforos na faixa VIS–NIR de tecidos cárneos são:

  • Mioglobina e derivados (desoximioglobina, oximioglobina): absorção elevada no visível-vermelho, especialmente próximo a 660 nm — sensível ao estado de oxidação da carne e à presença de sangue residual.
  • Água: bandas vibracionais O–H com picos em 970 nm, 1200 nm e 1450 nm; influencia a refletância no NIR.
  • Lipídios: menor absorção no visível, refletância mais uniforme — a gordura subcutânea contrasta com o músculo principalmente pela diferença de pigmentação e estrutura.

Coeficientes de absorção relativos dos cromóforos relevantes em tecido muscular e adiposo na faixa VIS–NIR. As linhas tracejadas indicam as bandas selecionadas (660 nm e 850 nm).
Coeficientes de absorção relativos dos cromóforos relevantes em tecido muscular e adiposo na faixa VIS–NIR. As linhas tracejadas indicam as bandas selecionadas (660 nm e 850 nm).

Janela óptica biológica

A região de 650–1350 nm é conhecida como janela óptica biológica: absorção relativamente baixa combinada com espalhamento moderado, permitindo penetração útil em tecidos.

Comprimento de ondaPenetração típica em músculo
VIS (400–700 nm)0,1–1 mm
660 nm0,5–2 mm (δ1,8\delta \approx 1{,}8 mm)
850 nm (NIR)1–5 mm (δ3,5\delta \approx 3{,}5 mm)

Perfil de atenuação exponencial em profundidade para comprimentos de onda de 400, 660, 850 e 940 nm em tecido muscular.
Perfil de atenuação exponencial em profundidade para comprimentos de onda de 400, 660, 850 e 940 nm em tecido muscular.

A banda de 850 nm penetra mais profundamente que 660 nm e é menos afetada por pigmentos visíveis, capturando diferenças estruturais superficiais entre músculo e gordura. A combinação das duas bandas gera contraste análogo a índices espectrais de sensoriamento remoto (NDVI).

Curvas de refletância difusa simuladas para tecido muscular e adiposo na faixa 400–1000 nm.
Curvas de refletância difusa simuladas para tecido muscular e adiposo na faixa 400–1000 nm.


3. Arquitetura do protótipo

O sistema é organizado em cinco blocos funcionais:

  1. Câmera base com modificação para sensibilidade NIR
  2. Matriz de LEDs com comprimentos de onda selecionados
  3. Conjunto óptico (lente, filtros, polarizadores)
  4. Controlador e aquisição (Raspberry Pi 4 ou Arduino + PC)
  5. Estrutura mecânica de posicionamento

Arranjo óptico do protótipo. Webcam C270 modificada, iluminação sequencial em 660 nm e 850 nm, polarização cruzada e ROI de 30 × 30 cm a 25–35 cm de distância.
Arranjo óptico do protótipo. Webcam C270 modificada, iluminação sequencial em 660 nm e 850 nm, polarização cruzada e ROI de 30 × 30 cm a 25–35 cm de distância.

Câmera: Logitech C270 modificada

ParâmetroEspecificação
Resolução1280 × 720 pixels (0,9 Mpx)
SensorCMOS (silício)
InterfaceUSB 2.0
FOV horizontal55–70° (típico)
ModificaçõesRemoção do filtro IR-cut; ajuste de foco manual ou lente macro

Câmeras de consumo possuem um filtro IR-cut que bloqueia radiação acima de ~700 nm. Sem removê-lo, a banda de 850 nm é inacessível. Após a remoção, o sensor CMOS responde de 400 a ~1000 nm.

A C270 tem foco fixo de fábrica para distâncias > 50 cm. Para a distância de trabalho de 25–35 cm, é necessário girar a lente rosqueada internamente ou acoplar uma lente macro auxiliar.

Geometria e resolução espacial

Para enquadrar uma ROI de largura W=0,30W = 0{,}30 m, a distância de trabalho dd depende do FOV horizontal θ\theta:

d=W2tan(θ/2)d = \frac{W}{2\tan(\theta/2)}
FOV (θ\theta)Distância dd
55°0,29 m
60°0,26 m
70°0,21 m

A resolução espacial no objeto é:

p=WNx=300 mm12800,23 mm/pixelp = \frac{W}{N_x} = \frac{300\ \text{mm}}{1280} \approx 0{,}23\ \text{mm/pixel}

Iluminação e óptica auxiliar

  • LEDs: 660 nm (deep red) e 850 nm (NIR), ~3 W cada, com drivers de corrente constante e chaveamento MOSFET/PWM.
  • Captura sequencial: apenas um LED ligado por vez — nunca os dois simultaneamente, para evitar mistura espectral.
  • Polarização cruzada: polarizador P1 na iluminação, P2 na câmera (90° entre eles), reduz reflexão especular em superfícies úmidas de carne.
  • Difusor + shroud: iluminação uniforme e bloqueio de luz ambiente do abatedouro.
  • Calibração: alvos branco (Spectralon ou azulejo branco consistente) e escuro para normalização radiométrica.

Protocolo de captura

  1. LED 660 nm ON → captura com exposição fixa → aguardar ~50 ms de estabilização
  2. LED 660 nm OFF; LED 850 nm ON → captura
  3. LEDs OFF → frame dark (DD)
  4. Alvo branco na ROI → frames white (W660W_{660}, W850W_{850})
  5. Normalizar reflectância e calcular índices espectrais

4. Pipeline de processamento de sinal

Normalização radiométrica

Para cada banda λi{660,850}\lambda_i \in \{660, 850\} nm, a reflectância relativa por pixel é:

Rλi(x,y)=Iλi(x,y)D(x,y)Wλi(x,y)D(x,y)R_{\lambda_i}(x,y) = \frac{I_{\lambda_i}(x,y) - D(x,y)}{W_{\lambda_i}(x,y) - D(x,y)}

Essa operação elimina o offset eletrônico do sensor (via DD), a não-uniformidade espacial da iluminação (via WW) e a dependência do espectro da fonte. O resultado R[0,1]R \in [0, 1] representa a fração de luz refletida em relação à referência branca.

Índices espectrais

Três índices são extraídos por pixel:

Índice de razão simples (SRI):

SRI(x,y)=R850(x,y)R660(x,y)\text{SRI}(x,y) = \frac{R_{850}(x,y)}{R_{660}(x,y)}

Índice de diferença normalizada (NDI) — análogo ao NDVI:

NDI(x,y)=R850(x,y)R660(x,y)R850(x,y)+R660(x,y)\text{NDI}(x,y) = \frac{R_{850}(x,y) - R_{660}(x,y)}{R_{850}(x,y) + R_{660}(x,y)}

Índice logarítmico (LRI):

LRI(x,y)=log ⁣(R850(x,y)R660(x,y))\text{LRI}(x,y) = \log\!\left(\frac{R_{850}(x,y)}{R_{660}(x,y)}\right)

O NDI é o índice principal para classificação: músculo apresenta NDI elevado (alta absorção em 660 nm por mioglobina → R660R_{660} baixo), enquanto gordura apresenta NDI próximo de zero.

Mapa de NDI simulado sobre ROI de 30 × 30 cm. Regiões musculares (NDI elevado) e adiposas (NDI baixo). Dados sintéticos.
Mapa de NDI simulado sobre ROI de 30 × 30 cm. Regiões musculares (NDI elevado) e adiposas (NDI baixo). Dados sintéticos.

Separabilidade entre tecidos

As distribuições simuladas de SRI e NDI mostram separação clara entre classes:

TecidoNDI médio (simulado)Desvio padrão
Músculo0,380,06
Gordura0,070,05

Distribuição do índice SRI (R_{850}/R_{660}) para pixels classificados como músculo e gordura.
Distribuição do índice SRI (R_{850}/R_{660}) para pixels classificados como músculo e gordura.

Diagrama de dispersão NDI versus SRI com elipses de confiança de 95% por classe de tecido.
Diagrama de dispersão NDI versus SRI com elipses de confiança de 95% por classe de tecido.


5. Classificação e calibração (resultados simulados)

Classificação binária por limiar

Com apenas duas bandas, a modelagem se limita a classificação binária simples ou regressão linear. A regra de classificação por pixel usa um limiar τ\tau no NDI:

classe(x,y)={gordurase NDI(x,y)<τmuˊsculose NDI(x,y)τ\text{classe}(x,y) = \begin{cases} \text{gordura} & \text{se } \text{NDI}(x,y) < \tau \\ \text{músculo} & \text{se } \text{NDI}(x,y) \geq \tau \end{cases}

A análise de limiar sobre dados sintéticos (n=800n = 800 pixels, 500 músculo + 300 gordura) indica τ=0,22\tau = 0{,}22 como ponto de máximo F1-score.

Acurácia e F1-score em função do limiar NDI. A linha tracejada indica o limiar ótimo (\tau = 0{,}22).
Acurácia e F1-score em função do limiar NDI. A linha tracejada indica o limiar ótimo (\tau = 0{,}22).

Matriz de confusão para classificação binária (músculo versus gordura) com limiar NDI = 0,22. Dados sintéticos.
Matriz de confusão para classificação binária (músculo versus gordura) com limiar NDI = 0,22. Dados sintéticos.

Regressão: NDI versus espessura de gordura

Para correlacionar o índice espectral com uma variável física mensurável, propõe-se regressão linear entre o NDI médio por amostra e a espessura de gordura subcutânea medida por paquímetro ou ultrassom:

y^=β0+β1NDI+β2SRI\widehat{y} = \beta_0 + \beta_1 \cdot \overline{\text{NDI}} + \beta_2 \cdot \overline{\text{SRI}}

A simulação com 40 amostras (NDI=0,500,025×espessuramm+ruıˊdo\text{NDI} = 0{,}50 - 0{,}025 \times \text{espessura}_{\text{mm}} + \text{ruído}) produz resultados ilustrativos — não validados experimentalmente.

Curva de calibracao: NDI medio por amostra em funcao da espessura de gordura subcutanea (mm). Regressao linear com intervalo de confianca de 95%. Dados sinteticos.
Curva de calibracao: NDI medio por amostra em funcao da espessura de gordura subcutanea (mm). Regressao linear com intervalo de confianca de 95%. Dados sinteticos.

Residuos do modelo de calibracao em funcao do valor predito, com curva de tendencia LOESS.
Residuos do modelo de calibracao em funcao do valor predito, com curva de tendencia LOESS.


6. Capacidades, limitações e próximos passos

O que o sistema permite (em teoria)

  • Segmentação superficial de gordura subcutânea versus músculo
  • Detecção de contaminação óptica visível na superfície
  • Mapeamento de heterogeneidade estrutural superficial
  • Classificação binária magra/gorda com calibração empírica

O que o sistema não permite

  • Medição de gordura intramuscular (IMF/marbling) profunda
  • Estimativa precisa de pH ou composição proteica
  • Cálculo de rendimento de cortes (requer morfometria 3D)
  • Substituir quimiometria NIR industrial com dezenas de bandas

Essas limitações são intrínsecas à baixa dimensionalidade espectral (duas bandas) e à profundidade de penetração restrita.

Comparação com outras abordagens

AbordagemCustoBandasPenetraçãoAdequação
Este protótipo (2 bandas)Baixo (~R$ 500–1500)21–5 mmExploratório; segmentação superficial
Câmera IR de segurança (850 nm)Muito baixo1~3 mmNão é espectroscopia; sem calibração radiométrica
NIR comercial (FOSS, Unity)Alto ($50k+)100+VariávelProdução industrial; quimiometria completa
Hiperespectral push-broomMuito alto100–300VariávelPesquisa e inspeção de alta resolução espectral

Próximos passos

  1. Montar o protótipo físico e validar a remoção do IR-cut e o ajuste de foco da C270.
  2. Implementar o pipeline de captura em Python/OpenCV com sincronismo LED–câmera.
  3. Adquirir amostras reais em abatedouro com ground truth (paquímetro, ultrassom).
  4. Calibrar o limiar NDI e os coeficientes de regressão com dados experimentais.
  5. Avaliar o impacto da umidade superficial, temperatura da carcaça e iluminação ambiente do abatedouro.

Referências

  • Jacques, S. L. (2013). Optical properties of biological tissues: a review. Physics in Medicine & Biology, 58(11), R37.
  • Mancini, R. A., & Hunt, M. C. (2005). Current research in meat color. Meat Science, 71(1), 100–121.
  • Ozaki, Y., et al. (2021). Near-Infrared Spectroscopy: Theory, Spectral Analysis, Instrumentation, and Applications. Wiley.
  • Segelstein, D. J. (1981). The complex refractive index of water. M.S. thesis, University of Missouri-Kansas City.

Related reading

  1. MSI-sensor — imagem multiespectral proximal por LEDs discretos
  2. Atomos MSI — plataforma robótica multiespectral

Na série Tipificação e qualidade de carcaça

Pareamento verificável e análise por imagem de carcaças ovinas — Apex

Protocolo de aquisição e análise integrado à pesquisa de tipificação de carcaças ovinas por fotografia. Schema SQLite com vínculo imagem–animal–grau no ato da coleta, segmentação de gordura (ColorNaming + CNN, IoU ~0,92), convexidade integral-invariante do perfil e graus experimentais com status explícito na UI.

Série A · 1Computer Vision11 min

Segmentação de tecido com frontend ColorNaming congelado e decoder de 62 mil parâmetros

Arquitetura de dois estágios que combina um extrator ColorNaming sem treino com um decoder convolucional leve, avaliada na segmentação de gordura, músculo e fundo em carcaças ovinas.

Série A · 2Computer Vision5 min

Uma medida de convexidade invariante e sem treino para conformação de carcaças

Convexidade do perfil de carcaças ovinas calculada por um invariante integral de área, invariante a rotação, translação, escala e iluminação, sem qualquer etapa de treinamento.

Série A · 3Computer Vision6 min

Homologia persistente da cobertura de gordura como descritor de acabamento

Descritores topológicos invariantes a iluminação e pose, aplicados à máscara de gordura de carcaças ovinas, comparados com a transformada de scattering na classificação do grau de acabamento.

Série A · 4Computer Vision6 min

Simulação radiométrica de iluminação multiespectral LED para carcaça ovina

Modelo forward Lambertiano de um array de cinco bandas (UV–NIR) a 1 m e superfície procedural de Longissimus dorsi com mistura de mioglobina estilo Krzywicki. Uniformidade de irradiância na ROI ≥87%; gordura subcutânea espectralmente separável; músculo, perimísio e IMF quase sobrepostos no domínio espectral puro.

Série A · 6Spectroscopy15 min

MSI-sensor — imagem multiespectral proximal por LEDs discretos para solo e microbiota

Sensor open-source de aquisição sequencial UV–Vis (400, 450, 530, 620 nm; IR na v2) com ESP32-C3 e CMOS USB. Calibração radiométrica, Kubelka–Munk, índices de solo (BI, CI, RI, IOI), autofluorescência microbiana (44 colônias), dual UV–vermelho para carne, PCA/GLCM e enquadramento em sensoriamento remoto proximal — com roadmap JCDE de 8 bandas (365–940 nm) e lições PIXL/SHERLOC.

Série A · 7Remote Sensing19 min

Atomos MSI — plataforma robótica multiespectral para qualidade de carne e classificação de carcaças

Sistema de 5 bandas (365–850 nm) em SCARA 3-DOF com pilha Electron/FastAPI/BLE. Aquisição sequencial LED–CMOS, aproximação de Krzywicki por razões de absorbância, índices OxI/TVB-N/IFU e ensaio laboratorial em frango (classe Degradado; OxiMb 14,7%, MetMb 53,4%). Posicionado como instrumento de método e protótipo industrial sob MAPA IN 9/2004.

Working paperSérie A · 8Spectroscopy12 min

Controle visual eye-in-hand de SCARA 3-DOF por erro de pixel discreto

Modelagem cinemática e lei de controle para waypoints definidos por clique na imagem. Correção proporcional única por waypoint (não IBVS contínuo), Jacobiana de imagem reduzida pan/tilt, convergência para , singularidades e sincronização servo–imagem no Atomos MSI.

Série A · 9Robotics9 min