Ermitteln von Vorsprüngen und Vertiefungen auf einer Braille-Seite mithilfe der Bildverarbeitung

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Ermitteln von Vorsprüngen und Vertiefungen auf einer Braille-Seite mithilfe der Bildverarbeitung

by Guest » 06 Jan 2025, 22:39

Wie kann ich das Problem der Erkennung von Vorsprüngen und Vertiefungen auf einer Braille-Seite angehen? Das ist ziemlich schwierig, denn wenn sich die Lichtquelle auf der rechten Seite der Seite befindet, erzeugen die Vorsprünge Schatten auf der linken Seite nach rechts und umgekehrt. Ebenso kann die Lichtquelle überall auf der Seite angebracht werden. Ich habe verschiedene Möglichkeiten ausprobiert, aber es scheint nicht zu funktionieren (siehe dieses Bild).
Ich habe versucht, die nach links gerichteten Konturen zu finden und sie zu entfernen. Auch hier funktioniert es nur, wenn das Licht von rechts projiziert wird.

Code: Select all

def remove_left_facing_dots(image, intensity_ratio_threshold=1.2):

blurred = cv2.GaussianBlur(image, (3, 3), 0)

edges = cv2.Canny(blurred, 50, 150)

contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

filtered_contours = []
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)

roi = image[y:y+h, x:x+w]
left_half = roi[:, :w//2].sum()
right_half = roi[:, w//2:].sum()

if right_half > left_half * intensity_ratio_threshold:
filtered_contours.append(contour)

mask = np.zeros_like(image)
cv2.drawContours(mask, filtered_contours, -1, 255, thickness=cv2.FILLED)

cleaned_image = cv2.bitwise_and(image, mask)

return cleaned_image

Top