File size: 12,687 Bytes
9aa8cad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b12436e
 
 
9aa8cad
 
67f2c7b
9aa8cad
b12436e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9aa8cad
 
 
 
 
67f2c7b
 
 
 
 
 
9aa8cad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67f2c7b
9aa8cad
67f2c7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b12436e
67f2c7b
b12436e
67f2c7b
b12436e
 
67f2c7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9aa8cad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b12436e
9aa8cad
b12436e
9aa8cad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
import streamlit as st
from PIL import Image
import numpy as np
import pandas as pd
import os

# Streamlit ile HTML ve CSS ekleme
st.markdown(f"""
    <style>
        .body {{
            background-color: #f0f0f0; /* Açık gri arka plan */
            /* veya */
            background-image: url('/static/images/background.jpg');
            background-size: cover;
        }}    
        .main {{
            background-color: rgba(255, 255, 255, 0.8);  /* Beyaz renk, %80 şeffaflık */
            padding: 20px;
            border-radius: 10px;
            background-size: cover;
            height: 100vh;  /* Sayfa yüksekliği */
        }}
        .header {{
            color: white;
            background-color: #4CAF50;
            padding: 10px;
            text-align: center;
            border-radius: 5px;
        }}

        .section-title {{
            color: #4CAF50;
            font-size: 30px;
            text-align: center;
            margin: 20px 0;
            border-bottom: 2px solid #4CAF50;
            padding-bottom: 5px;
        }}

        .sidebar .sidebar-content {{
            background-color: #f4f4f9;
        }}

        .content-box {{
            border: 2px solid #4CAF50;
            padding: 20px;
            border-radius: 5px;
            margin-bottom: 20px;
        }}

        .form-container {{
            border: 2px solid #4CAF50;
            padding: 15px;
            border-radius: 5px;
            background-color: #f9f9f9;
        }}

        .table-container {{
            border: 2px solid #4CAF50;
            padding: 15px;
            border-radius: 5px;
            background-color: #f9f9f9;
        }}

        .footer {{
            text-align: center;
            font-size: 12px;
            color: gray;
            margin-top: 20px;
        }}
    </style>
""", unsafe_allow_html=True)

# Ana başlık
st.title("Tümör Tespit Sistemi")

# Tümör tespiti için eşik değeri
TUMOR_BRIGHTNESS_THRESHOLD = 100

# Menü çubuğu oluştur, her seçenek için benzersiz key parametresi ekle
# Sidebar menu
menu = st.sidebar.selectbox("Menü", ["Anasayfa", "Hakkımızda", "Tümör Tespiti","Örnek Analizlerimiz", "Hasta Yorumları", "Bize Ulaşın"], key="menu_selectbox")

# Tümör tespiti fonksiyonu
def detect_tumor(image_array):
    """
    Görüntü dizisini analiz ederek tümör tespiti yapar
    
    Args:
        image_array: Numpy array olarak görüntü
        
    Returns:
        tumor_status: Tümör durumu (string)
        explanation: Açıklama metni (string)
        has_tumor: Tümör var mı? (boolean)
    """
    # Görüntünün ortalama parlaklık değerini hesapla
    average_brightness = np.mean(image_array)
    
    # Tümör var mı yok mu tahmini (basit bir yaklaşım)
    if average_brightness < TUMOR_BRIGHTNESS_THRESHOLD:  # Düşük parlaklık tümör olasılığını artırır
        tumor_status = "Tümör Tespit Edildi"
        explanation = "Görüntüde yüksek kontrastlı alanlar tespit edildi, bu da tümör olasılığını artırıyor."
        has_tumor = True
    else:
        tumor_status = "Tümör Yok"
        explanation = "Görüntüde belirgin bir kontrast farkı bulunmamaktadır, bu da tümör olmadığına işaret edebilir."
        has_tumor = False
        
    return tumor_status, explanation, has_tumor

# Menüye göre sayfaların içeriğini değiştir
if menu == "Anasayfa":
    st.markdown('<div class="header"><h2>Hoş Geldiniz!</h2></div>', unsafe_allow_html=True)
    st.write("Bu uygulama, MR görüntüleri üzerinden tümör tespiti ve analiz yapmaktadır.")
    # Resmi yükleyin
    try:
        image = Image.open("sample_images/index.jpeg")
        st.image(image, caption="Beyin Tümörü Tespiti", use_container_width=True)
    except FileNotFoundError:
        st.warning("Örnek görüntü dosyası bulunamadı.")
        st.info("Kendi MR görüntünüzü yükleyerek tümör tespiti yapabilirsiniz.")

elif menu == "Hakkımızda":
    st.markdown('<div class="header"><h2>Hakkımızda</h2></div>', unsafe_allow_html=True)
    st.write("""
    Tümör Tespit Sistemi olarak, sağlık alanında teknolojiyi kullanarak insanların hayatlarını daha sağlıklı ve güvenli hale getirmeyi amaçlıyoruz. Ekibimiz, yapay zeka ve derin öğrenme teknikleriyle gelişmiş sağlık çözümleri üretmeye odaklanmış bir grup uzman profesyonelden oluşmaktadır. Yenilikçi yaklaşımlar ve sağlam bilimsel temellerle, kanser ve diğer hastalıkların erken teşhisini mümkün kılacak teknolojiler geliştirmekteyiz.

    Misyonumuz, tıbbi görüntüleme verilerini kullanarak tümörleri erken aşamalarda tespit etmek ve doğru teşhis konulmasına yardımcı olmaktır. Bu, hastaların tedaviye daha erken başlamasını ve sonuçların daha başarılı olmasını sağlar. Tümör Tespit Sistemi, doktorların tanı koyma sürecini hızlandırarak, zamanında ve doğru müdahaleler yapılmasına olanak tanır.

    Yapay zeka destekli sistemimiz, sürekli olarak öğrenen ve gelişen bir yapıya sahiptir. Sistemimiz, MR, röntgen ve diğer tıbbi görüntüleri analiz ederek, tümör varlığını yüksek doğrulukla tespit eder ve görsel işaretlemeler yaparak doktorlara kolaylık sağlar. Bu sayede, sağlık profesyonelleri daha verimli çalışabilir, hastalar ise doğru ve hızlı bir şekilde tedavi süreçlerine dahil olabilirler.

    Her adımda güvenlik ve gizliliğe büyük önem veriyor, hasta verilerini korumak için en yüksek güvenlik standartlarını uyguluyoruz. Kullanıcı dostu arayüzümüz sayesinde, sistemimiz her türlü sağlık kuruluşunda kolayca kullanılabilir. Sürekli olarak güncellenen ve geliştirilen bu sistem, sağlık sektöründe önemli bir devrim yaratmayı hedeflemektedir.

    Vizyonumuz ise, yapay zeka teknolojileriyle sağlık hizmetlerini dönüştürerek, daha hızlı, daha doğru ve daha erişilebilir bir sağlık altyapısı oluşturmaktır. Bu sayede, her bireyin sağlık durumunun daha yakından takip edilebilmesi ve sağlık hizmetlerine erişimin daha kolay hale gelmesi için çalışıyoruz.

    Sağlıklı günler dileriz.
    """)

# "Örnek Analizlerimiz" sekmesi
elif menu == "Örnek Analizlerimiz":
    st.markdown('<div class="header"><h2>Örnek Analizlerimiz</h2></div>', unsafe_allow_html=True)
    
    # Check if the data directory exists
    folder_path = "sample_images"
    if not os.path.exists(folder_path):
        st.warning("Örnek görüntüler klasörü bulunamadı.")
        st.info("Kendi MR görüntünüzü yükleyerek tümör tespiti yapabilirsiniz.")
    else:
        # Dizin içindeki görüntü dosyalarını listeleme
        try:
            image_files = [f for f in os.listdir(folder_path) if f.endswith(('.jpg', '.jpeg', '.png', '.webp'))]
            
            # İlk 20 görüntü ile sınırlama
            image_files = image_files[:20]
            
            # Görüntülerde tümör olup olmadığını kontrol etmek için sayaç
            tumor_found_count = 0
            non_tumor_count = 0
            
            # Her bir görüntü dosyasını işlemek için döngü
            for img_file in image_files:
                file_path = os.path.join(folder_path, img_file)
                
                # Görüntüyü açma
                try:
                    image = Image.open(file_path)
                    st.image(image, caption=f"MR Görüntüsü: {img_file}", use_container_width=True)
                    
                    # Görüntü analizi
                    image_array = np.array(image)
                    tumor_status, explanation, has_tumor = detect_tumor(image_array)
                    
                    # Sayaçları güncelle
                    if has_tumor:
                        tumor_found_count += 1
                    else:
                        non_tumor_count += 1
                    
                    # Sonuçları göster
                    st.markdown(f"**Sonuç: {tumor_status}**")
                    st.write(explanation)
                    
                    # Açıklama metnini ekleyelim
                    st.markdown(f"### Açıklama: {img_file}")
                    st.write("""
                    Bu görüntü, beyin MR'ı üzerinde yapılan tümör tespiti analizinin bir örneğidir. 
                    Görüntüdeki kontrast değerleri analiz edilerek tümör varlığı tahmin edilmektedir.
                    Bu basit bir analiz olup, gerçek tıbbi teşhis için uzman görüşü gereklidir.
                    """)
                    
                except Exception as e:
                    st.error(f"Görüntü işlenirken bir hata oluştu: {e}")
            
            # Sonuçları yazdırma
            st.write(f"Tümör Bulunan Görüntüler: {tumor_found_count}")
            st.write(f"Tümör Olmayan Görüntüler: {non_tumor_count}")
        except Exception as e:
            st.error(f"Örnek görüntüler işlenirken bir hata oluştu: {e}")

elif menu == "Tümör Tespiti":
    st.markdown('<div class="header"><h2>Tümör Tespiti</h2></div>', unsafe_allow_html=True)
    # Hasta Bilgilerini Almak İçin Form
    with st.form(key='patient_form'):
        st.markdown('<div class="section-title">Hasta Bilgileri</div>', unsafe_allow_html=True)
        name = st.text_input("Ad Soyad")
        age = st.number_input("Yaş", min_value=0, max_value=120)
        gender = st.selectbox("Cinsiyet", ["Erkek", "Kadın"], key="gender_selectbox")
        uploaded_file = st.file_uploader("MR Görüntüsünü Yükleyin", type=["jpg", "png", "jpeg"], key="file_uploader")
        submit_button = st.form_submit_button("Tümör Analizini Başlat")
    if submit_button:
        if uploaded_file is not None:
            image = Image.open(uploaded_file)
            st.image(image, caption="Yüklenen MR Görüntüsü", use_container_width=True)

            # Görüntü analizi
            image_array = np.array(image)
            tumor_status, explanation, _ = detect_tumor(image_array)

            # Sonuçları göster
            st.markdown(f"**Sonuç: {tumor_status}**")
            st.write(explanation)

elif menu == "Hasta Yorumları":
    st.markdown('<div class="header"><h2>Hasta Yorumları</h2></div>', unsafe_allow_html=True)
    # Yorumları Listeleme
    st.markdown('<div class="table-container">', unsafe_allow_html=True)
    st.write("""
    - Hasta 1: "Bu sistem hayatımı kurtardı, teşekkürler!"
    - Hasta 2: "Çok kolay ve kullanışlı."
    - Hasta 3: "Hızlı sonuç ve güvenilir analiz."
    """)
    st.markdown('</div>', unsafe_allow_html=True)

    # Yorum eklemek için form
    with st.form(key='comment_form'):
        st.markdown('<div class="section-title">Yeni Yorum Ekleyin</div>', unsafe_allow_html=True)

        new_comment = st.text_area("Yorumunuzu Buraya Yazın", key="new_comment_area")
        submit_button = st.form_submit_button("Yorum Gönder")

        if submit_button and new_comment:
            st.write(f"Yeni Yorum: {new_comment}")
            st.write("Yorum başarıyla eklendi.")

elif menu == "Bize Ulaşın":
    # Bize Ulaşın sayfası içeriği
    st.markdown('<div class="header"><h2>Bize Ulaşın</h2></div>', unsafe_allow_html=True)

    # İletişim bilgilerini tablo şeklinde yazdırma
    contact_info = {
        "Bilgi": ["Email", "Telefon", "Adres"],
        "Değer": ["[email protected]", "+90 555 555 55 55", "İstanbul, Türkiye"]
    }

    # DataFrame oluşturuluyor
    contact_df = pd.DataFrame(contact_info)

    # Tabloyu Streamlit üzerinde gösterme
    st.markdown('<div class="table-container">', unsafe_allow_html=True)
    st.table(contact_df)  # Tabloyu göster
    st.markdown('</div>', unsafe_allow_html=True)

    # Doldurulabilir iletişim formu
    with st.form(key="contact_form"):
        st.subheader("İletişim Formu")

        # Kullanıcıdan veri alınması
        name = st.text_input("Adınız Soyadınız")
        email = st.text_input("E-posta Adresiniz")
        subject = st.text_input("Konu")
        message = st.text_area("Mesajınız")

        # Gönder butonu
        submit_button = st.form_submit_button("Gönder")

        if submit_button:
            # Form gönderildiğinde kullanıcıya onay mesajı gösterme
            st.success(f"Teşekkür ederiz {name}, mesajınız başarıyla gönderildi!")
            # Burada form verilerini bir veritabanına veya e-posta sistemine yönlendirebilirsiniz

# Footer
st.markdown('<div class="footer">© 2024 Tümör Tespit Sistemi. Tüm haklar saklıdır. </div>', unsafe_allow_html=True)