Ich habe eine Schwarz-Weiß-Bilddatei (oder PDF-Datei) und möchte ein Histogramm des horizontalen Profils des Bildes erhalten. Das heißt, für jede Spalte in dem Bild möchte ich die Summe der Graustufenwerte der Pixel in der Spalte. Wenn das Bild X mal Y Pixel ist, werde ich mit X Zahlen zwischen 0 (für eine vollständig schwarze Spalte) und 255 * Y (für eine vollständig weiße Spalte) enden.
Siehe das zweite Panel von diesem Comic
Ich hätte gerne ein Histogramm wie dieses, aber jedes Feld würde die gesamte "schwarze Tinte" im Bild an dieser x-Koordinate (Pixel) darstellen.
Als armer Student bin ich gezwungen, nur die Linux-Kommandozeile, FOSS-Programme (ImageMagick, gnuplot, Perl, g ++, usw.) zu verwenden. Etwas wie das GIMP wäre nur hilfreich, wenn ich den Befehl über Terminal ausführen kann, da ich keinen Zugriff auf eine GUI habe. Eine visuelle Ausgabedatei wäre hilfreich für später, ist aber nicht notwendig.
Kennt jemand eine Art, wie ich diese Informationen extrahieren kann? Die Suche nach "Bildprofil" führt nur zu Informationen über Farbprofile.
Ich werde eine Antwort in zwei Akten geben, mit zwei meiner Lieblings-kostenlosen Dienstprogramme: python und gnuplot.
Als mein Student (Computer), mein Rat ist, dass, wenn Sie Dinge für freies tun wollen, Python ist eines der vielseitigsten Werkzeuge, die Sie lernen können zu verwenden.
Hier ist ein Python-Skript, das den ersten Teil ausführt und den Graustufenwert (von 0 für Weiß bis 255 für Schwarz) zählt:
%Vor%Schockierend schmerzlos! Nun habe Gnuplot ein Histogramm *:
%Vor% Um diese Skripts auszuführen, speichern Sie sie im selben Verzeichnis mit dem Bild, das Sie plotten möchten (in diesem Fall der XKCD-Comic, den ich als img.png
gespeichert habe). Mach sie ausführbar. In bash ist das
Dann (wenn python + image module + gnuplot alle installiert sind) können Sie
ausführen %Vor%Auf meinem Computer, auf dem Ubuntu 11.10 mit gnuplot 4.4.3 läuft, bekomme ich am Ende dieses coole Plot:
** Seitennotiz *: Es gibt viele verschiedene Histogramm-Plots, die gnuplot machen kann. Ich dachte, dieser Stil zeige die Daten gut, aber Sie können Ihre Daten für Gnuplot-Histogramme aufbereiten.
Es gibt viele Möglichkeiten, Python zu machen, um Plots selbst oder mit gnuplot (matplotlib, pygnuplot, gnuplot-py) zu machen, aber mit diesen bin ich nicht so leicht. Gnuplot ist unglaublich skriptfähig zum Plotten, und es gibt viele Möglichkeiten, es mit Python, Bash, C ++, usw. gut zu spielen.
Tags und Links python linux image-processing gnuplot imagemagick