[PYTHON] Fauler Adventskalender 2019

Implementierung von OCR zur Selbstzufriedenheit

Plans

  1. Erkennen Sie zuerst einzelne Zeichen. (Mit Haar oder YOLO?)

  2. Decken Sie jedes Zeichen mit Rechteck ab und führen Sie die folgende Verarbeitung durch.

  3. In dem von Rechteck umgebenen Bereich wird der Helligkeitswert in 3D aufgezeichnet und in 3D modelliert, sodass jedes Zeichen beim Drehen anhand des Bildes genau erkannt werden kann.

# Modules
from pathlib import Path
from skimage import io
import matplotlib.pyplot as plt
import cv2
import numpy as np

# Putting some image files of any documents under dataset

p = Path("../dataset")
paths = list(p.glob("**/*.jpg "))
data1 = io.imread(paths[0])

# Using tile strategy to evaluate the recognition accuracy.

mini = data1[1200:1400, 800:1000, 0]
plt.imshow(mini)
print("Showing data to be processed...")
plt.show()

Switch1

# Highlighting the target

## Lazy normalization

if mini.max() > 256:
    subject = np.true_divide(mini, 256).astype("uint8")
else:
    subject = mini.astype("uint8")

## Creating a mask to remove noise.

mask = (subject < 200)
                
masked = mask * subject

## Distance transform

distmap = cv2.distanceTransform(masked,1,3)
                
## Creating all zero matrix, which size equal to data

featuremap = distmap*0
                
## Deciding kernel size to convolve.

ksize = 20
                
## Detecting edge with convolution...

for x in range(ksize,distmap.shape[0]-ksize*2):
    for y in range(ksize,distmap.shape[1]-ksize*2):
    
    ###Die Koordinaten mit dem größten Wert im Kernel werden in der Feature-Map als 1 ausgegeben....
    ### max-Die Verarbeitung steht kurz vor dem Pooling. Max-Pooling und Standardisierung werden gleichzeitig durchgeführt.
    
        if distmap[x,y]>0 and distmap[x,y]==np.max(distmap[x-ksize:x+ksize,y-ksize:y+ksize]):
            featuremap[x,y]=1

        ### defining feature_dilated for imshow

        feature_dilated = cv2.dilate(featuremap, (50, 50))

print("Masked image is ... : ")
plt.imshow(masked)
plt.show()

plt.imshow(feature_dilated)
print("Feature shape is ... : " + str(feature_dilated.shape))
plt.show()

Feature_mask = (feature_dilated > 0)

Cropped = masked * Feature_mask
plt.imshow(Cropped)
plt.show()

Switch2

Zukünftige Aufgaben

Referenz

Recommended Posts

Fauler Adventskalender 2019
Verwenden Sie tse, um den nicht veröffentlichten Qiita-Adventskalender anzuzeigen
Ich habe den im Qiita Adventskalender 2016 gelöschten Kalender überprüft