DHEIVER's picture
Update app.py
bd95651 verified
raw
history blame
11.9 kB
import gradio as gr
from PIL import Image
import numpy as np
import cv2
import torch
from transformers import ViTFeatureExtractor
from scipy.stats import entropy
from skimage.feature import graycomatrix, graycoprops
import warnings
warnings.filterwarnings("ignore")
class IridologyAnalyzer:
def __init__(self):
print("Inicializando analisador avançado...")
# Mapeamento de características para possíveis correlações de saúde
self.health_correlations = {
"Textura da íris": {
"muito complexa": {
"observações": ["Possível sobrecarga sistêmica", "Considerar avaliação do sistema imunológico", "Potencial tensão no sistema nervoso"],
"nível": "Requer atenção",
"recomendações": ["Avaliação médica completa", "Exames de sangue gerais", "Verificação do sistema imunológico"]
},
"moderadamente complexa": {
"observações": ["Sistema em estado de adaptação", "Possível estresse moderado"],
"nível": "Observação",
"recomendações": ["Monitoramento periódico", "Considerar práticas de redução de estresse"]
},
"simples": {
"observações": ["Padrão dentro do esperado"],
"nível": "Normal",
"recomendações": ["Manter hábitos saudáveis"]
}
},
"Coloração": {
"muito rica": {
"observações": ["Possível atividade metabólica intensificada", "Potencial desequilíbrio hormonal"],
"nível": "Requer atenção",
"recomendações": ["Verificar níveis hormonais", "Avaliar função da tireoide"]
},
"moderadamente": {
"observações": ["Metabolismo em adaptação"],
"nível": "Observação",
"recomendações": ["Monitorar níveis energéticos", "Avaliar padrões de sono"]
},
"simples": {
"observações": ["Metabolismo equilibrado"],
"nível": "Normal",
"recomendações": ["Manter dieta balanceada"]
}
},
"Marcas ou manchas": {
"complexo": {
"observações": ["Possível acúmulo de toxinas", "Potencial sobrecarga hepática"],
"nível": "Requer atenção",
"recomendações": ["Avaliação da função hepática", "Considerar detoxificação supervisionada"]
},
"moderado": {
"observações": ["Sistema de eliminação em adaptação"],
"nível": "Observação",
"recomendações": ["Aumentar ingestão de água", "Melhorar alimentação"]
},
"simples": {
"observações": ["Sistema de eliminação equilibrado"],
"nível": "Normal",
"recomendações": ["Manter hidratação adequada"]
}
},
"Anéis ou círculos": {
"não concêntricos": {
"observações": ["Possível desequilíbrio circulatório", "Tensão sistêmica"],
"nível": "Requer atenção",
"recomendações": ["Verificar pressão arterial", "Avaliar circulação"]
},
"moderadamente": {
"observações": ["Sistema circulatório em adaptação"],
"nível": "Observação",
"recomendações": ["Exercícios leves", "Monitorar pressão"]
}
},
"Clareza geral": {
"baixa": {
"observações": ["Possível congestão sistêmica", "Fadiga celular"],
"nível": "Requer atenção",
"recomendações": ["Avaliação nutricional", "Verificar níveis de vitaminas"]
},
"moderada": {
"observações": ["Sistema em processo de limpeza"],
"nível": "Observação",
"recomendações": ["Melhorar qualidade do sono", "Aumentar consumo de vegetais"]
},
"excepcional": {
"observações": ["Boa vitalidade celular"],
"nível": "Normal",
"recomendações": ["Manter estilo de vida saudável"]
}
}
}
self.iris_features = {
"Textura da íris": self._analyze_texture,
"Coloração": self._analyze_color,
"Marcas ou manchas": self._analyze_spots,
"Anéis ou círculos": self._analyze_rings,
"Condição da pupila": self._analyze_pupil,
"Linhas radiais": self._analyze_lines,
"Pigmentação": self._analyze_pigmentation,
"Clareza geral": self._analyze_clarity,
"Estrutura do tecido": self._analyze_tissue,
"Marcas brancas": self._analyze_white_marks,
"Fibras da íris": self._analyze_fibers,
"Borda da íris": self._analyze_border
}
self.texture_params = {
'distances': [1, 2, 3],
'angles': [0, np.pi/4, np.pi/2, 3*np.pi/4]
}
print("Analisador avançado inicializado com sucesso!")
# [Previous analysis methods remain unchanged...]
def comprehensive_analysis(self, image):
"""Realiza uma análise completa e detalhada da íris com correlações de saúde."""
try:
enhanced, original = self._preprocess_image(image)
results = []
health_insights = []
overall_health_score = 0
total_features = 0
for feature, analysis_func in self.iris_features.items():
try:
description, value = analysis_func(original, enhanced)
results.append({
"feature": feature,
"analysis": description,
"value": float(value) if value is not None else 0
})
# Adicionar correlações de saúde se disponíveis
if feature in self.health_correlations:
for pattern_key, correlation in self.health_correlations[feature].items():
if pattern_key in description.lower():
health_insights.append({
"feature": feature,
"observações": correlation["observações"],
"nível": correlation["nível"],
"recomendações": correlation.get("recomendações", [])
})
# Calcular score de saúde
if correlation["nível"] == "Normal":
overall_health_score += 100
elif correlation["nível"] == "Observação":
overall_health_score += 70
elif correlation["nível"] == "Requer atenção":
overall_health_score += 40
total_features += 1
except Exception as e:
print(f"Erro ao analisar '{feature}': {str(e)}")
continue
# Calcular score médio de saúde
if total_features > 0:
overall_health_score = overall_health_score / total_features
# Formatação dos resultados com disclaimer médico
formatted_results = """
AVISO IMPORTANTE: Esta análise é apenas para fins educativos e informativos.
NÃO substitui diagnóstico médico profissional. Consulte sempre um profissional de saúde qualificado.
Análise Detalhada de Iridologia (Versão Avançada):
"""
# Adicionar score geral de saúde
formatted_results += f"\nScore Geral de Saúde: {overall_health_score:.1f}/100\n"
formatted_results += "-" * 50 + "\n"
# Adicionar resultados técnicos
formatted_results += "\nANÁLISE TÉCNICA:\n"
for result in results:
formatted_results += f"\nCaracterística: {result['feature']}\n"
formatted_results += f"Análise: {result['analysis']}\n"
if result['value'] > 0:
formatted_results += f"Índice de complexidade: {result['value']:.2f}\n"
formatted_results += "-" * 30 + "\n"
# Adicionar insights de saúde
if health_insights:
formatted_results += "\nCORRELAÇÕES DE SAÚDE OBSERVADAS:\n"
for insight in health_insights:
formatted_results += f"\nCaracterística: {insight['feature']}\n"
formatted_results += f"Nível: {insight['nível']}\n"
formatted_results += "Observações:\n"
for obs in insight['observações']:
formatted_results += f"- {obs}\n"
if insight.get('recomendações'):
formatted_results += "Recomendações:\n"
for rec in insight['recomendações']:
formatted_results += f"- {rec}\n"
formatted_results += "-" * 30 + "\n"
# Adicionar disclaimer final
formatted_results += """
LEMBRETE IMPORTANTE:
1. Esta análise é baseada em padrões visuais e NÃO é um diagnóstico médico
2. Os resultados devem ser interpretados por profissionais qualificados
3. Sempre busque avaliação médica profissional para diagnóstico e tratamento
4. Esta ferramenta é um complemento e NÃO substitui exames clínicos convencionais
"""
return formatted_results
except Exception as e:
return f"Erro durante a análise: {str(e)}"
def create_gradio_interface():
analyzer = IridologyAnalyzer()
def process_image(image):
if image is None:
return "Por favor, faça o upload de uma imagem."
return analyzer.comprehensive_analysis(image)
iface = gr.Interface(
fn=process_image,
inputs=gr.Image(type="numpy", label="Upload da Imagem do Olho"),
outputs=gr.Textbox(label="Resultados da Análise Avançada", lines=30),
title="Analisador de Iridologia Avançado com IA",
description="""
Sistema avançado de análise de íris usando técnicas de processamento de imagem e correlações de saúde.
Faça o upload de uma imagem clara do olho para análise detalhada.
IMPORTANTE: Esta ferramenta é apenas para fins educativos e NÃO substitui diagnóstico médico profissional.
Recomendações para resultados otimizados:
1. Use imagens bem iluminadas e de alta resolução
2. Garanta que a íris esteja em foco perfeito
3. Evite reflexos e sombras
4. Enquadre apenas o olho na imagem, centralizando a íris
""",
examples=[],
cache_examples=True
)
return iface
if __name__ == "__main__":
iface = create_gradio_interface()
iface.launch()