aktualisiert Antwort
Ich habe Feedback genommen und verbessert den Algorithmus der folgenden bash
Skript jetzt ...
#!/bin/bash
################################################################################
# dice
#
# Trim borders off an image (twice) and then dice into 10x15 cells.
#
# Usage: ./dice image
################################################################################
# Pick up image name from first parameter
image="$1"
echo DEBUG: Processing image $image...
# Apply median filter to remove noisy black dots around image and then get the
# dimensions of the "trim box" - note we don't use the (degraded) median-filtered image in
# later steps.
trimbox=$(convert "$image" -median 9x9 -fuzz 50% -format %@ info:)
echo DEBUG: trimbox $trimbox
# Now trim original unfiltered image into stage1-$$.png (for debug)
convert "$1" -crop $trimbox +repage stage1-$$.png
echo DEBUG: Trimmed outer: stage1-$$.png
# Now trim column headings
convert stage1-$$.png -crop 2000x2590+120+190 +repage stage2-$$.png
echo DEBUG: Trimmed inner: stage2-$$.png
# Now slice into 10x15 rectangles
echo DEBUG: Slicing and dicing
convert stage2-$$.png -crop [email protected] +repage rectangles-%03d.png
# Now trim the edges off the rectangles and resize all to a constant size
for f in rectangles*png; do
echo DEBUG: Trimming and resizing $f
trimbox=$(convert "$f" -median 9x9 -shave 15x15 -bordercolor black -border 15 -threshold 50% -floodfill +0+0 white -fuzz 50% -format %@ info:)
echo DEBUG: Cell trimbox $trimbox
convert "$f" -crop $trimbox +repage -resize 32x32! "$f"
done
Hier sind die resultierenden Zellen - das heißt 150 separate Bilddateien. Ich habe einen roten Rahmen um die einzelnen Zellen/Dateien setzen, so dass Sie ihr Ausmaß sehen können:
Original-Antwort
ich tun würde, dass mit ImageMagick, die auf freie und installiert ist die meisten Linux-Distributionen und ist auch für OSX und Windows verfügbar. Es gibt Perl-, PHP-, Java-, Knoten-, .NET-, Ruby-, C/C++ - Bindungen, auch wenn Sie diese Sprachen bevorzugen. Hier verwende ich die Befehlszeile in Terminal.
Erste Aufgabe ist es Lärm loszuwerden und schneiden Sie die äußeren Kanten:
convert scan.jpg -median 3x3 -fuzz 50% -trim +repage trimmed1.png
nun wieder trimmen, um loszuwerden äußeren Rahmen und Spaltentitel über die Spitze:
convert trimmed1.png -crop 2000x2590+120+190 +repage trimmed2.png
jetzt int teilen o 10 Zellen von 15 Zellen und speichern als rectangles-nnn.png
convert trimmed2.png -crop [email protected] rectangles-%03d.png
prüfen, was wir haben - ja, 150 Bilder:
ls -l rect*
rectangles-000.png rectangles-022.png rectangles-044.png rectangles-066.png rectangles-088.png rectangles-110.png rectangles-132.png
rectangles-001.png rectangles-023.png rectangles-045.png rectangles-067.png rectangles-089.png rectangles-111.png rectangles-133.png
rectangles-002.png rectangles-024.png rectangles-046.png rectangles-068.png rectangles-090.png rectangles-112.png rectangles-134.png
rectangles-003.png rectangles-025.png rectangles-047.png rectangles-069.png rectangles-091.png rectangles-113.png rectangles-135.png
rectangles-004.png rectangles-026.png rectangles-048.png rectangles-070.png rectangles-092.png rectangles-114.png rectangles-136.png
rectangles-005.png rectangles-027.png rectangles-049.png rectangles-071.png rectangles-093.png rectangles-115.png rectangles-137.png
rectangles-006.png rectangles-028.png rectangles-050.png rectangles-072.png rectangles-094.png rectangles-116.png rectangles-138.png
rectangles-007.png rectangles-029.png rectangles-051.png rectangles-073.png rectangles-095.png rectangles-117.png rectangles-139.png
rectangles-008.png rectangles-030.png rectangles-052.png rectangles-074.png rectangles-096.png rectangles-118.png rectangles-140.png
rectangles-009.png rectangles-031.png rectangles-053.png rectangles-075.png rectangles-097.png rectangles-119.png rectangles-141.png
rectangles-010.png rectangles-032.png rectangles-054.png rectangles-076.png rectangles-098.png rectangles-120.png rectangles-142.png
rectangles-011.png rectangles-033.png rectangles-055.png rectangles-077.png rectangles-099.png rectangles-121.png rectangles-143.png
rectangles-012.png rectangles-034.png rectangles-056.png rectangles-078.png rectangles-100.png rectangles-122.png rectangles-144.png
rectangles-013.png rectangles-035.png rectangles-057.png rectangles-079.png rectangles-101.png rectangles-123.png rectangles-145.png
rectangles-014.png rectangles-036.png rectangles-058.png rectangles-080.png rectangles-102.png rectangles-124.png rectangles-146.png
rectangles-015.png rectangles-037.png rectangles-059.png rectangles-081.png rectangles-103.png rectangles-125.png rectangles-147.png
rectangles-016.png rectangles-038.png rectangles-060.png rectangles-082.png rectangles-104.png rectangles-126.png rectangles-148.png
rectangles-017.png rectangles-039.png rectangles-061.png rectangles-083.png rectangles-105.png rectangles-127.png rectangles-149.png
rectangles-018.png rectangles-040.png rectangles-062.png rectangles-084.png rectangles-106.png rectangles-128.png
rectangles-019.png rectangles-041.png rectangles-063.png rectangles-085.png rectangles-107.png rectangles-129.png
rectangles-020.png rectangles-042.png rectangles-064.png rectangles-086.png rectangles-108.png rectangles-130.png
rectangles-021.png rectangles-043.png rectangles-065.png rectangles-087.png rectangles-109.png rectangles-131.png
Blick auf den ersten paar:
Sie können diese 3 Schritte in 1 so machen:
convert scan.jpg -median 3x3 -fuzz 50% -trim +repage \
-crop 2000x2590+120+190 +repage \
-crop [email protected] rectangles-%03d.png
Sie möchten vielleicht ein paar Pixel aus jeder Seite jedes Bild rasieren und die Größe mit so etwas wie (nicht getestet) bis 32x32:
mogrify -shave 3x3 -resize 32x32! rectangles*png
Wie wäre es uns eine gescannte Seite geben, so können wir die Qualität sehen, Ausrichtung, Auflösung, Kontrast, den Sie zur Verfügung haben? –
einfache Art und Weise: Installieren ImageJ, lesen Sie diese http://imagej.1557.x6.nabble.com/How-to-create-a-regular-grid-of-rectangular-ROI-s-td3685056.html, implementieren. Wenn Sie eine eigene Anwendung erstellen möchten, sollten Sie OpenCV oder eine andere Bildverarbeitungsbibliothek verwenden. Dies ist eine sehr einfache Aufgabe, die jede Bibliothek lösen kann. – Piglet
@ Mark Setchell - Siehe mein Beitrag aktualisiert – user3366497