Как обнаружить логические элементы на отсканированных изображениях нарисованных от руки схем?
Мы начали с отсканированных изображений правильно нарисованных диаграмм логической схемы, мы смогли отделить логические элементы от отсканированного изображения схемы, но мы не смогли обнаружить, и как двигаться дальше, мы использовали 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 ответ
Двери логики имеют одинаковый размер. Я бы сделал это:
- Маркировка подключенных компонентов белых областей.
- Раздельный / изолят
- Фильтруйте этикетки по размеру.
- (необязательно) Все дверцы логики будут касаться крошечного белого рисунка / метки справа.