Как обнаружить логические элементы на отсканированных изображениях нарисованных от руки схем?

Мы начали с отсканированных изображений правильно нарисованных диаграмм логической схемы, мы смогли отделить логические элементы от отсканированного изображения схемы, но мы не смогли обнаружить, и как двигаться дальше, мы использовали Python Open Cv для этого, наш код ибо выше

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('logic.png',0)

ret,img2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)  # converting the image into binary image.
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(100,3))  # kernel to detect vertical lines
vertical = cv2.morphologyEx(img2, cv2.MORPH_OPEN, kernel)  # applying morphological opening operation to detect vertical lines
vertical = cv2.dilate(vertical,kernel,iterations = 1)   #dilate the vertical lines obtained

kernel2 = cv2.getStructuringElement(cv2.MORPH_RECT,(3,100))   # kernel to detect horizontal lines
horizontal = cv2.morphologyEx(img2, cv2.MORPH_OPEN, kernel2)   # applying morphological opening operation to detect horizontal lines
horizontal = cv2.dilate(horizontal,kernel2,iterations = 1)    #dilate the horizontal lines obtained

cv2.imshow('d',vertical)    # show the vertical imag
cv2.imshow('b',horizontal)  # show the horizontal image

img = img2 -horizontal - vertical   # subtracting horizontal and vertical lines from original image

cv2.imwrite('horizontal.png',horizontal)   
cv2.imwrite('vertical.png',vertical)
cv2.imwrite('result.png',img)


cv2.imshow('last',img)     # show the resulted image after subtraction

kerne = np.ones((3,3),np.uint8)             # kernel to remove the noise from the last image
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kerne)  # applying opening morphological operation to remove the noise from the image 
cv2.imshow('opening',opening)               # show the resulted image after removing noise
cv2.imwrite('noise_removal.png',opening)
cv2.waitKey(0)

Проверьте приведенный ниже результат и посоветуйте, как действовать дальше, чтобы обнаружить логические элементы на отсканированных изображениях нарисованных от руки схем?

Результат кода ниже:

1) Входное изображение:

2) Выходное изображение (результат кода):

1 ответ

Двери логики имеют одинаковый размер. Я бы сделал это:

  1. Маркировка подключенных компонентов белых областей.
  2. Раздельный / изолят
  3. Фильтруйте этикетки по размеру.
  4. (необязательно) Все дверцы логики будут касаться крошечного белого рисунка / метки справа.
Другие вопросы по тегам