File size: 2,668 Bytes
690ada3
0d2d614
f4eb306
 
0d2d614
7559e30
86e69fa
0d2d614
f4eb306
 
 
0d2d614
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f4eb306
0d2d614
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90d7188
27b7cb5
690ada3
0d2d614
690ada3
f4eb306
 
690ada3
 
0d2d614
f4eb306
690ada3
 
a7129dd
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
import numpy as np
from skimage.metrics import structural_similarity as ssim
from PIL import Image
import gradio as gr
from difflib import SequenceMatcher

# Function to calculate SSIM between two images
def calculate_ssim(img1, img2):
    img1_gray = img1.convert("L")
    img2_gray = img2.convert("L")
    return ssim(np.array(img1_gray), np.array(img2_gray))

# Function to compare trademarks based on text similarity
def compare_text(trademark1, trademark2):
    text1 = pytesseract.image_to_string(trademark1).lower()
    text2 = pytesseract.image_to_string(trademark2).lower()
    similarity_ratio = SequenceMatcher(None, text1, text2).ratio()
    return similarity_ratio

# Function to compare trademarks based on color similarity
def compare_colors(trademark1, trademark2):
    trademark1 = trademark1.convert("RGB")
    trademark2 = trademark2.convert("RGB")
    colors1 = trademark1.getcolors(trademark1.size[0] * trademark1.size[1])
    colors2 = trademark2.getcolors(trademark2.size[0] * trademark2.size[1])
    color_vector1 = np.zeros(3)
    color_vector2 = np.zeros(3)
    for count, color in colors1:
        color_vector1 += np.array(color) * count
    for count, color in colors2:
        color_vector2 += np.array(color) * count
    color_vector1 /= trademark1.size[0] * trademark1.size[1]
    color_vector2 /= trademark2.size[0] * trademark2.size[1]
    color_similarity = 1 - np.linalg.norm(color_vector1 - color_vector2)
    return color_similarity

# Function to compare trademarks based on multiple aspects
def compare_trademarks(trademark1, trademark2):
    ssim_score = calculate_ssim(trademark1, trademark2)
    text_similarity = compare_text(trademark1, trademark2)
    color_similarity = compare_colors(trademark1, trademark2)

    # Adjust weights based on the importance of each aspect
    ssim_weight = 0.6
    text_weight = 0.2
    color_weight = 0.2

    overall_similarity = (ssim_weight * ssim_score) + (text_weight * text_similarity) + (color_weight * color_similarity)
    return overall_similarity

# Function to perform trademark conflict prevention
def prevent_trademark_conflict(trademark1, trademark2):
    similarity_score = compare_trademarks(trademark1, trademark2)
    result = f"Trademark Similarity Score: {similarity_score:.4f}"
    return result

iface = gr.Interface(
    fn=prevent_trademark_conflict,
    inputs=[
        gr.inputs.Image(type="file", label="Trademark Image 1"),
        gr.inputs.Image(type="file", label="Trademark Image 2")
    ],
    outputs="text",
    title="Trademark Conflict Prevention",
    description="Upload two trademark images. Get the trademark similarity score."
)

iface.launch()