File size: 11,878 Bytes
7b945e6
 
78b9561
 
7b945e6
78b9561
d8becec
 
7b945e6
 
 
 
 
d8becec
7b945e6
bd95651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78b9561
 
 
 
 
 
 
 
 
 
 
 
 
 
7b945e6
d8becec
 
 
 
 
 
7b945e6
bd95651
d8becec
78b9561
bd95651
78b9561
 
 
 
bd95651
 
 
 
78b9561
 
 
 
 
 
d8becec
78b9561
bd95651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78b9561
 
 
 
bd95651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78b9561
bd95651
78b9561
 
d8becec
bd95651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78b9561
 
 
 
 
7b945e6
 
 
 
 
 
 
78b9561
7b945e6
 
 
78b9561
bd95651
d8becec
7b945e6
bd95651
d8becec
 
bd95651
 
d8becec
 
 
 
 
7b945e6
 
 
 
 
 
 
 
 
e1d98e8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
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()