import gradio as gr import numpy as np import matplotlib.pyplot as plt from skimage.transform import radon, iradon from scipy.fft import fft, ifft from io import BytesIO import base64 from PIL import Image def process_image(image): # Orijinal görüntüyü işleme (grayscale'e çevirme) image = image.convert("L") # Grayscale'e çevirme image = np.array(image) # Sinogram oluşturma (projeksiyon verileri) theta = np.linspace(0., 180., max(image.shape), endpoint=False) sinogram = radon(image, theta=theta, circle=True) # Projeksiyon verilerine Fourier dönüşümü uygulama fourier = fft(sinogram, axis=0) # Ramp filtre uygulama freq = np.fft.fftfreq(sinogram.shape[0]).reshape(-1, 1) ramp_filter = np.abs(freq) filtered_fourier = fourier * ramp_filter # Ters Fourier dönüşümü uygulama filtered_sinogram = np.real(ifft(filtered_fourier, axis=0)) # Geri yansıtma (back projection) ile görüntü oluşturma reconstructed_image = iradon(filtered_sinogram, theta=theta, circle=True) # Görselleştirme için görüntüler fig, axes = plt.subplots(2, 2, figsize=(10, 10)) axes[0, 0].set_title("Orijinal Görüntü") axes[0, 0].imshow(image, cmap="gray") axes[0, 0].axis("off") axes[0, 1].set_title("Sinogram") axes[0, 1].imshow(sinogram, cmap="gray", aspect="auto") axes[0, 1].axis("off") axes[1, 0].set_title("Filtrelenmiş Sinogram") axes[1, 0].imshow(filtered_sinogram, cmap="gray", aspect="auto") axes[1, 0].axis("off") axes[1, 1].set_title("Rekonstürülen Görüntü") axes[1, 1].imshow(reconstructed_image, cmap="gray") axes[1, 1].axis("off") plt.tight_layout() # Görüntüleri base64 formatında döndürme buf = BytesIO() plt.savefig(buf, format="png") buf.seek(0) encoded_image = base64.b64encode(buf.read()).decode("utf-8") buf.close() plt.close() return f"" # GPT-2 modelini yükleme def gpt2_response(prompt): # GPT-2 modelinden yanıt alma model = gr.load("models/openai-community/gpt2") response = model([prompt])[0] return response # Gradio arayüzü tanımlama with gr.Blocks() as demo: gr.Markdown("# GPT-2 Destekli Radon Dönüşümü Görselleştirme") gr.Markdown("Bir görüntü yükleyin, GPT-2 modelinden işlem açıklamaları alın ve Radon dönüşümünü uygulayın.") with gr.Row(): text_prompt = gr.Textbox(label="GPT-2 Prompt", placeholder="Radon dönüşümü için talimat yazın.") gpt2_output = gr.Textbox(label="GPT-2 Yanıtı") gpt2_button = gr.Button("GPT-2 Çalıştır") with gr.Row(): image_input = gr.Image(type="pil", label="Görüntü Yükle") output = gr.HTML(label="Sonuçlar") image_button = gr.Button("Görüntü İşle") gpt2_button.click(gpt2_response, inputs=[text_prompt], outputs=[gpt2_output]) image_button.click(process_image, inputs=[image_input], outputs=[output]) if __name__ == "__main__": demo.launch()