Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def show_img(img):
- plt.imshow(tf.squeeze(img), cmap="gray")
- plt.show()
- print(img.shape)
- def load_image(path):
- raw_img = tf.io.read_file(path)
- img = tf.image.decode_image(raw_img, channels=1)
- # img = tf.image.resize(img, [height, width])
- img = tf.cast(img, tf.float32)
- return img
- def sobel_edge(img, sigma=0.1, lower=50, upper=100):
- blurred_img = tfa.image.gaussian_filter2d(img, sigma=sigma, filter_shape=(5, 5)) # Gaussian Blue
- blurred_img = tf.cast(blurred_img, dtype=tf.float32)
- img_batch = tf.expand_dims(blurred_img, axis=0)
- edges = tf.image.sobel_edges(img_batch) # Sobel Edge Detection
- edges = tf.norm(img_batch, axis=-1) # Normalizing
- return blurred_img
- def preprocess_img(img):
- img = (img / 255) # 0 - 1 Grayscale
- img = 1 - img # 0 - 1 Grayscale
- img = tf.where(img >= 0.5, tf.constant(1), tf.constant(0)) # Binarization
- img = sobel_edge(img)
- return img
- def contours_to_tensors(contours, image_shape):
- # Empty image
- img = np.zeros(image_shape, dtype=np.uint8)
- # Draw contours on the image
- cv2.drawContours(img, contours, -1, (255), thickness=cv2.FILLED)
- img_tensor = tf.convert_to_tensor(img, dtype=tf.float32)
- return img_tensor
- def get_words(img, threshold=128):
- passed_counter = 0
- # print(img.shape)
- # Segmentation
- img_np = img.numpy()
- img_np = tf.image.convert_image_dtype(img_np, dtype=tf.uint8)
- img_np = np.squeeze(img_np, axis=-1) # Remove the singleton channel dimension
- contours, _ = cv2.findContours(img_np, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
- contour_tensors = []
- for i, contour in enumerate(contours):
- x, y, w, h = cv2.boundingRect(contour)
- cv2.drawContours(img_np, contour, -1, (img.shape[0], img.shape[1]), thickness=cv2.FILLED)
- region_of_interest = img_np[y:y+h, x:x+w]
- contour_tensor = tf.convert_to_tensor(region_of_interest, dtype=tf.float32)
- contour_tensor = (contour_tensor / 255) # Grayscale
- contour_tensor = tf.where(contour_tensor >= 0.5, tf.constant(1), tf.constant(0)) # Binarization
- contour_tensor = tf.expand_dims(contour_tensor, axis=-1)
- contour_tensor = tf.image.resize(contour_tensor, [height, width], method=tf.image.ResizeMethod.NEAREST_NEIGHBOR)
- # Lower and Upper Threshold
- contour_sum = tf.reduce_sum(contour_tensor).numpy()
- if contour_sum < lower_sum or contour_sum > upper_sum:
- passed_counter += 1
- continue
- if len(contour_tensor) != 0:
- contour_tensors.append(contour_tensor)
- print("Passed: ", passed_counter)
- return contour_tensors
- def get_words_from_img(img):
- img = preprocess_img(img)
- words = get_words(img)
- return words
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 4
- WARNING:tensorflow:5 out of the last 5 calls to <function gaussian_filter2d at 0x7fba0aee93f0> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has reduce_retracing=True option that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for more details.
- WARNING:tensorflow:6 out of the last 6 calls to <function gaussian_filter2d at 0x7fba0aee93f0> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has reduce_retracing=True option that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for more details.
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 6
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 18
- Passed: 3
- Passed: 1
- Passed: 38
- Passed: 2
- Passed: 0
- Passed: 2
- Passed: 0
- Passed: 5
- Passed: 1
- Passed: 12
- Passed: 3
- Passed: 0
- Passed: 0
- Passed: 3
- Passed: 0
- Passed: 1
- Passed: 4
- Passed: 5
- Passed: 0
- Passed: 7
- Passed: 0
- Passed: 0
- Passed: 4
- Passed: 3
- Passed: 5
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 16
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 17
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 2
- Passed: 0
- Passed: 2
- Passed: 12
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 13
- Passed: 14
- Passed: 0
- Passed: 2
- Passed: 1
- Passed: 0
- Passed: 58
- Passed: 8
- Passed: 75
- Passed: 1
- Passed: 6
- Passed: 0
- Passed: 0
- Passed: 1
- Passed: 4
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 1
- Passed: 5
- Passed: 0
- Passed: 42
- Passed: 43
- Passed: 1
- Passed: 0
- Passed: 1
- Passed: 62
- Passed: 0
- Passed: 3
- Passed: 1
- Passed: 0
- Passed: 2
- Passed: 0
- Passed: 5
- Passed: 2
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 4
- Passed: 33
- Passed: 0
- Passed: 1
- Passed: 2
- Passed: 2
- Passed: 0
- Passed: 3
- Passed: 3
- Passed: 0
- Passed: 2
- Passed: 3
- Passed: 0
- Passed: 3
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 2
- Passed: 2
- Passed: 0
- Passed: 11
- Passed: 0
- Passed: 0
- Passed: 1
- Passed: 40
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 1
- Passed: 8
- Passed: 1
- Passed: 2
- Passed: 7
- Passed: 9
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 6
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 3
- Passed: 8
- Passed: 0
- Passed: 5
- Passed: 2
- Passed: 4
- Passed: 2
- Passed: 1
- Passed: 32
- Passed: 0
- Passed: 2
- Passed: 0
- Passed: 4
- Passed: 0
- Passed: 2
- Passed: 36
- Passed: 0
- Passed: 2
- Passed: 9
- Passed: 3
- Passed: 1
- Passed: 0
- Passed: 19
- Passed: 1
- Passed: 0
- Passed: 6
- Passed: 0
- Passed: 1
- Passed: 3
- Passed: 42
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 3
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 10
- Passed: 0
- Passed: 30
- Passed: 0
- Passed: 2
- Passed: 2
- Passed: 2
- Passed: 0
- Passed: 0
- Passed: 2
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 5
- Passed: 4
- Passed: 31
- Passed: 0
- Passed: 11
- Passed: 1
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 5
- Passed: 0
- Passed: 6
- Passed: 2
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 3
- Passed: 5
- Passed: 4
- Passed: 4
- Passed: 0
- Passed: 4
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 7
- Passed: 2
- Passed: 2
- Passed: 1
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 13
- Passed: 8
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 2
- Passed: 1
- Passed: 11
- Passed: 38
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 25
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 2
- Passed: 3
- Passed: 0
- Passed: 53
- Passed: 145
- Passed: 0
- Passed: 3
- Passed: 2
- Passed: 2
- Passed: 2
- Passed: 0
- Passed: 1
- Passed: 32
- Passed: 8
- Passed: 1
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 35
- Passed: 1
- Passed: 0
- Passed: 3
- Passed: 0
- Passed: 0
- Passed: 2
- Passed: 4
- Passed: 24
- Passed: 3
- Passed: 0
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 12
- Passed: 39
- Passed: 1
- Passed: 4
- Passed: 19
- Passed: 19
- Passed: 2
- Passed: 4
- Passed: 18
- Passed: 21
- Passed: 0
- Passed: 3
- Passed: 16
- Passed: 0
- Passed: 10
- Passed: 23
- Passed: 0
- Passed: 37
- Passed: 4
- Passed: 0
- Passed: 1
- Passed: 1
- Passed: 63
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 1
- Passed: 2
- Passed: 3
- Passed: 3
- Passed: 1
- Passed: 2
- Passed: 14
- Passed: 3
- Passed: 0
- Passed: 22
- Passed: 4
- Passed: 29
- Passed: 5
- Passed: 2
- Passed: 2
- Passed: 4
- Passed: 1
- Passed: 0
- Passed: 2
- Passed: 29
- Passed: 0
- Passed: 11
- Passed: 2
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 3
- Passed: 0
- Passed: 0
- Passed: 5
- Passed: 0
- Passed: 0
- Passed: 2
- Passed: 18
- Passed: 0
- Passed: 4
- Passed: 8
- Passed: 0
- Passed: 4
- Passed: 0
- Passed: 1
- Passed: 1
- Passed: 4
- Passed: 5
- Passed: 1
- Passed: 4
- Passed: 0
- Passed: 1
- Passed: 4
- Passed: 1
- Passed: 0
- Passed: 8
- Passed: 2
- Passed: 3
- Passed: 0
- Passed: 15
- Passed: 9
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 5
- Passed: 0
- Passed: 0
- Passed: 3
- Passed: 1
- Passed: 0
- Passed: 1
- Passed: 15
- Passed: 0
- Passed: 19
- Passed: 3
- Passed: 5
- Passed: 8
- Passed: 1
- Passed: 1
- Passed: 2
- Passed: 0
- Passed: 0
- Passed: 3
- Passed: 0
- Passed: 0
- Passed: 1
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 2
- Passed: 1
- Passed: 7
- Passed: 0
- Passed: 20
- Passed: 0
- Passed: 4
- Passed: 5
- Passed: 0
- Passed: 7
- Passed: 1
- Passed: 1
- Passed: 0
- Passed: 2
- Passed: 2
- Passed: 2
- Passed: 42
- Passed: 4
- Passed: 1
- Passed: 0
- Passed: 6
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 2
- Passed: 2
- Passed: 5
- Passed: 1
- Passed: 1
- Passed: 2
- Passed: 6
- Passed: 12
- Passed: 11
- Passed: 10
- Passed: 0
- Passed: 0
- Passed: 1
- Passed: 0
- Passed: 0
- Passed: 8
- Passed: 0
- Passed: 1
- Passed: 10
- Passed: 3
- Passed: 2
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
- Passed: 0
Advertisement
Add Comment
Please, Sign In to add comment