Erkennung definierter Elemente innerhalb eines Bildes
Anprüche
- Hauptanspruch
Bilderkennung aus einem Bitmap, die die Ergebnisse - bestehend aus erkannten Elementen
(Zeichen, Linien usw.) und Information über die Unsicherheit (wenn das Ergebnis nicht sicher war) - in einer
beliebigen Dokumentbeschreibungssprache (XML, HTML, PDF usw.)
ablegt.
- Nebenansprüche
Explizite Benennung möglicher Elemente der Erkennung von Zeichen,
grafischen Elementen, Wörtern und Sätzen
- Explizites Speichern der Information über die Unsicherheit ab
(der Hauptanspruch deckt auch die implizite Information ab, dass das
Erkennungsergebnis 100% sicher war)
- Speichern möglicher alternativer Erkennungsergebnisse
- Aufspalten und Analysieren des Bitmaps in mehrere Teile als Teil
der Erkennung
Bemerkungen
Um bereits in einem möglichst kurzem Programm das Patent zu verletzen, gibt es zwei
Programme: ein kurzes, das den Hauptanspruch verletzt, und ein etwas längeres, das
auch möglichst viele Nebenansprüche verletzt. Die übrigen Ansprüche zu verletzen,
wäre auch nicht sehr schwer, würde aber noch längere Programme
erfordern.
Das Lesen und Verstehen des vollständigen Patents hat etwa das vierfache der Zeit
für das Codieren in Anspruch genommen.
Verletzungsprogramm 1
(Achtung: Bitte nicht ausführen!)
/* Andreas Rudert; Program 1 that violates EP0549329; bad coding style to make it short */
#include <string.h>
#include <stdio.h>
unsigned char *bitmap[]={" *",
" * ",
"* "};
void main(void) {
if (strcmp(" *",bitmap[0])==0 && strcmp(" * ",bitmap[1])==0 && strcmp("* ",bitmap[2])==0)
puts("<gerade unsicherheit='0' offset='0'><steigung>1</steigung></gerade>");
}
Verletzte Ansprüche mit Begründung
- Hauptanspruch
transformiert ein als Bitmap dargestelltes Dokument (als Beispiel ein 3x3 Bitmap, dass einen
Ausschnitt der Geraden y=x enthält) in eine Dokumentbeschreibungssprache (hier XML),
die Elemente der Sprache sind durch einen Type-identifier identifiziert (hier "gerade"),
enthält Information über die Unsicherheit der Erkennung
- Anspruch 3
die Information über die Unsicherheit ist als "Grad der Unsicherheit" gespeichert
(Attribut "unsicherheit") (der Hauptanspruch würde auch durch Programme verletzt, in denen
der Grad der Unsicherheit implizit gegeben ist)
- Anspruch 4
in diesem speziellen Beispiel handelt es sich um einen Grafik-Erkenner (hier: "main")
und eine Grafik-Bitmap, das gesamte Bitmap wird als Element erkannt, Offsetinformation
ist in der Ausgabe enthalten
Verletzungsprogramm 2
(Achtung: Bitte nicht ausführen!)
/* Andreas Rudert; Program 2 that violates EP0549329; bad coding style to make it short */
#include <stdio.h>
unsigned char *bitmap[]={" * *** * *** ",
" * * * * ",
" * * * * ",
" * * *** "};
unsigned char *recognized_elements[]={
"", /* 0 pixels, 100% blank */
"<char><alt cert=\"75\"> </alt><alt cert=\"25\">I</alt></char>", /* 1 pixel, 75% blank, 25% an I */
"<char><alt cert=\"50\"> </alt><alt cert=\"50\">I</alt></char>", /* 2 pixels, 50% blank, 50% an I */
"<char><alt cert=\"75\">I</alt><alt cert=\"25\"> </alt></char>", /* 3 pixels, 75% an I */
"I", /* 4 pixels, 100% an I */
"<char><alt cert=\"50\">I</alt><alt cert=\"50\">T</alt></char>", /* 5 pixels, 50% an I, 50% a T */
"T", /* 6 pixels100% a T */
"<char><alt cert=\"50\">T</alt><alt cert=\"50\">S</alt></char>", /* 7 pixels, 50% an T, 50% an S */
"S" /* 8 pixels, 100% an S */
};
/* Character recognizer, recognizes characters by counting pixels. */
void main(void) {
int i, j, c = 0;
for (i = 0; bitmap[0][i] != '\0'; i++) {
for (j =0; j < 4; j++)
c += bitmap[j][i] == '*';
if ((i + 1) % 4 == 0)
printf("%s", recognized_elements[c]), c=0;
}
}
Ausgabebeispiel
IT <char><alt cert="75">I</alt><alt cert="25"> </alt></char>S
Verletzte Ansprüche mit Begründung
- Hauptanspruch
transformiert ein als Bitmap dargestelltes Dokument (als Beispiel Bitmap mit dem Satz
"it is", pro Zeichen ein 4x4 Teil-Bitmap) in eine Dokumentbeschreibungssprache (hier XML),
die Elemente der Sprache sind durch einen Type-identifier identifiziert (hier "gerade"),
enthält Information über die Unsicherheit der Erkennung
- Anspruch 2
Information über die Unsicherheit ist auch als "Grad der Unsicherheit" gespeichert
(Attribut "cert") (der Hauptanspruch würde auch durch Programme verletzt, in denen
der Grad der Unsicherheit implizit gegeben ist)
- Anspruch 4
alternative Transformationen sind enthalten Subelemente "alt",
die Alternativen enthalten Information über den Grad der
Unsicherheit (Attribut "cert"),
- Anspruch 5
nach meinem Verständnis ein weniger spezieller Fall als 4 und daher
auch verletzt,
- Anspruch 6
"main" ist ein Character-Recognizer, die Elemente werden als Typ
"character-String" (kein expliziter Typ-Identifier) oder
"questionable-character" (Typ-Identifier hier: "char")
identifiziert, der character String enthält aufeinanderfolgende
Zeichen (Beispiel: "IT ") die questionable-character Elemente
enthalten Information über die Unsicherheit,
- Anspruch 9
die Information über die Unsicherheit enthält das wahrscheinlichste Zeichen (durch
das Maximum der "cert" Attribute in einem "char" Element)
alternative, unwahrscheinliche Zeichen sind enthalten,
- Anspruch 11
das Bitmap wird in Sub-Bitmaps aufgeteilt (nämlich 4x4 Bitmaps), die als Textteil
analysiert werden,
- Anspruch 10
verletzt Anspruch 11 und Unsicherheitsinformation ist enthalten (s.o.)
Übersicht Sieger-Patente
Letzte Änderung: 11. Januar 2003
Benedikt Wildenhain,
patente@benedikt-wildenhain.de