MarioPrzBasto commited on
Commit
9da2db4
·
verified ·
1 Parent(s): f298ffd

Update similarity.py (#4)

Browse files

- Update similarity.py (5c8906bf3f45e631db581d0607eb1c28129f87b8)

Files changed (1) hide show
  1. similarity.py +14 -0
similarity.py CHANGED
@@ -11,6 +11,18 @@ import logging
11
 
12
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
13
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  def load_image_url(source):
15
  Image.MAX_IMAGE_PIXELS = None
16
 
@@ -40,9 +52,11 @@ def check_similarity(images: List[RequestModel]):
40
  image = cv2.resize(image, original_image_shape[::-1])
41
  s, _ = ssim(original_image, image, full=True)
42
  similarity_score = (s + 1) * 50
 
43
  except Exception as e:
44
  logging.error(f"Error loading image for resource id {images[i].originId} : {e}")
45
  similarity_score = 0
 
46
 
47
  response = ResponseModel(originId=images[i].originId, source=images[i].source, sequence=images[i].sequence,
48
  assetCode=images[i].assetCode, similarity=similarity_score)
 
11
 
12
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
13
 
14
+ def orb_sim(img1, img2):
15
+ orb = cv2.ORB_create()
16
+ kp_a, desc_a = orb.detectAndCompute(img1, None)
17
+ kp_b, desc_b = orb.detectAndCompute(img2, None)
18
+
19
+ bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
20
+ matches = bf.match(desc_a, desc_b)
21
+ similar_regions = [i for i in matches if i.distance < 20]
22
+ if len(matches) == 0:
23
+ return 0
24
+ return len(similar_regions) / len(matches)
25
+
26
  def load_image_url(source):
27
  Image.MAX_IMAGE_PIXELS = None
28
 
 
52
  image = cv2.resize(image, original_image_shape[::-1])
53
  s, _ = ssim(original_image, image, full=True)
54
  similarity_score = (s + 1) * 50
55
+ similarity_orb_score = orb_sim(original_image, image) * 100
56
  except Exception as e:
57
  logging.error(f"Error loading image for resource id {images[i].originId} : {e}")
58
  similarity_score = 0
59
+ similarity_orb_score = 0
60
 
61
  response = ResponseModel(originId=images[i].originId, source=images[i].source, sequence=images[i].sequence,
62
  assetCode=images[i].assetCode, similarity=similarity_score)