Image / app.py
omar87's picture
Update app.py
2550810
raw
history blame
2.47 kB
import gradio as gr
import cv2
import numpy as np
from skimage.metrics import structural_similarity as ssim
from PIL import Image
import pytesseract
import matplotlib.pyplot as plt
# Function to calculate SSIM between two images
def calculate_ssim(img1, img2):
img1_gray = img1.convert("L")
img2_gray = img2.convert("L")
img1_resized = img1_gray.resize((256, 256))
img2_resized = img2_gray.resize((256, 256))
return ssim(np.array(img1_resized), np.array(img2_resized))
# Function to extract text from an image
def extract_text(image):
text = pytesseract.image_to_string(image)
return text
# Function to calculate color difference between two images
def calculate_color_difference(img1, img2):
hist1 = cv2.calcHist([np.array(img1)], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256])
hist2 = cv2.calcHist([np.array(img2)], [0, 1, 2], None, [8, 8, 8], [0, 256, 0, 256, 0, 256])
return cv2.compareHist(hist1, hist2, cv2.HISTCMP_CHISQR)
# Function to compare two trademarks
def compare_trademarks(trademark1, trademark2):
ssim_score = calculate_ssim(trademark1, trademark2)
text1 = extract_text(trademark1)
text2 = extract_text(trademark2)
text_similarity = calculate_text_similarity(text1, text2)
color_difference = calculate_color_difference(trademark1, trademark2)
return ssim_score, text_similarity, color_difference
# Function to calculate text similarity ratio
def calculate_text_similarity(text1, text2):
if text1 == "" or text2 == "":
return 0.0
text1 = text1.lower()
text2 = text2.lower()
intersection = len(set(text1.split()) & set(text2.split()))
union = len(set(text1.split()) | set(text2.split()))
return intersection / union
# Function to handle the Gradio interface
def prevent_trademark_conflict(trademark1, trademark2):
ssim_score, text_similarity, color_difference = compare_trademarks(trademark1, trademark2)
result = f"SSIM Score: {ssim_score:.2f}\nText Similarity: {text_similarity:.2f}\nColor Difference: {color_difference:.2f}"
return result
# Prepare Gradio interface
iface = gr.Interface(
fn=prevent_trademark_conflict,
inputs=[
gr.inputs.Image(type="pil", label="Trademark Image 1"),
gr.inputs.Image(type="pil", label="Trademark Image 2")
],
outputs="text",
title="Trademark Similarity",
description="Compare two trademarks to check for similarity."
)
# Launch the interface
iface.launch()