Hi,
kann deine Lib auch bilder mit mehr als 8bpp verarbeiten?
oder ist alles fix auf 8bpp?
ansonsten tolle arbeit machst du da!
Gruß
Steffen
@steffen_dec:
So gesehen ist man nicht eingeschränkt. Die Bilder werden intern auf 32 Bit ARGB umgerechnet.
Oder meinst Du das mit den 8 Bit pro channel? mit 8bpp?
Die Farben reichen von 0x000000 bis 0xFFFFFF um ganz genau zu sein.
Da die meisten Filter den Offset count (IncreasePointerOffset und BytesPerPixelCount in Unsafebitmap) berechnen, sollte die Lib so gesehen eigentlich nicht eingeschränkt sein. Ist aber ungetestet.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Kleine Nachfrage, was macht ihr mit der Bibliothek?
Was gefällt euch?
Was gefällt euch nicht?
Was fehlt euch noch ganz?
Gebt mir bitte Rückmeldungen für das Projekt, gerne auch per PM.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Neue Version auf
(oder siehe Link 1. Post in diesem Thread)
Ich habe mich dazu entschieden hier mal wieder eine Version online zu laden.
Es gibt (schon seit Anfang an) einen grundlegenden Konzeptunterschied zu anderen Frameworks im Programm "ImageRecognition2":
Alle Filter können immer benutzt werden, diese liefern dann aber nicht unbedingt ein Ergebnis, d.h. es kann z.B. BinaryDilation für ein Farbbild aufgerufen werden, ohne dieses vorher binarisiert zu haben. Deswegen erhält man aber keine Exception.
Grund: Es wäre ja möglich, dass wir ein teilbinarisiertes Bild haben. Dann funktioniert der Filter normalerweise an den binarisierten Stellen.
IMHO hat man so mehr Freiheit.
Es gibt folgende Änderungen:
Einzelbildbearbeitungsfilter
Es wurden wieder einige Filter korrigiert (u.a. MorphologieFilter)
Binarisierungsfilter können jetzt mit verschiedenen Farben betrachtet werden
(z.B. kann bei Close Weiß als Hintergrundfarbe und Schwarz als Vordergrundfarbe betrachtet werden, obwohl das Bild vorher mit Weiß als Vordergrundfarbe
Einige kleine Änderungen an den Objektextraktorn
Es gibt jetzt einen frei definierbaren Konvolutionsfilter der auch funktioniert
SkinningFilter sollte jetzt besser funktionieren
ColorBlobExtractor benutzt jetzt "UnsafeBitmap" (schneller)
ContourExtractionTwoSteps benutzt keinen Lambda-Filter mehr, viel schneller, da keine Vor-Kompilierung mehr benötigt wird.
AnaglyphExtract hinzugefügt
AnaglyphFilter aktiviert (funktioniert jetzt)
Depthmapcreation für Stereobilder hinzugefügt
PerPixelFilter mit Delegate hinzugefügt, dieser kann mit beliebigen einfachen
delegates initialisiert werden, die Delegate Funktion wird dann auf jedes Pixel angewendet
Lipschitz Filter weiter ausprogrammiert
SimpleBlobExtractor hinzugefügt (Labelling noch fehlerhaft)
WindowedSinc Filter weiter ausprogrammiert
Mehr Filter in der Frequenzdomäne vorgesehen
ChainCode Filter hinzugefügt
Color Filter für jeden Farbraum hinzugefügt
Mit UnsafeBitmap.FromImage können jetzt sowohl PGM, PBM als auch PPM, PCX und TIF geladen werden (noch weitestgehend ungetestet)
Mit UnsafeBitmap[x,y,channel] kann jetzt ein Pixel gesetzt oder geholt werden (kanalweise)
Funktion für den Graudurchschnitt gleichgroßer Bilder in einem Ordner
PixelDivision, Addition, Subtraktion, Modulo usw. funktionieren jetzt (auch vom Testinterface Imagerecognition2 aus) ebenso Bool'sche Operatoren wie NAND, NOR, XOR, OR, AND, NOT usw.
Videofilter
In ImageRecognition2:
- Im Interface unter dem Menüpunkt Script sind jetzt alle Filter vorhanden
- Ein paar Funktionen haben eine Maske bekommen á la Photoshop, mit Preview-Funktion
(Es sind zwar schon für fast alle Filter Masken vorprogrammiert, aber diese sind noch längst nicht alle eingebaut.)- Settings werden gespeichert (Open new window after action usw.)
Viele kleine programmatische Änderungen, wie z.B. private Variablen in protected umgeändert und falls gefehlt, Public Properties hinzugefügt wo benötigt
Was ist geplant?
Funktionalität:
Bessere Objekterkennungen
Backprojections
Histogrammfunktionen
Bildstatistikfunktionen
Klassifizierungsfunktionen
Merkmalsdeskriptoren
Ein paar komplexe Filter:
Segmentieren von Menschen in einem Bild (voll gekleidet)
Allgemein:
Was ist das allgemeine langfristige Ziel dieses Frameworks:
Es soll sich dem Funktionsumfang von MATLAB Image Processing Toolbox, sowie Halcon immer mehr annähern
Was ist das allgemeine kurzfristige Ziel dieses Frameworks:
Einzelne Probleme die hier gestellt werden beantworten und lösen zu können, im Idealfall ohne Extraprogrammieraufwand, d.h. ausprobieren der Filtersequenz und evtl. Objekt-Extraktor soll ausreichen, um die Informationen zu bekommen die man will.
Und warum gibt es ImageRecognition2, die Oberfläche mit den vielen Menüpunkten?
Manchmal ist es ziemlich schwierig die richtigen Filter und vor allem die richtige Sequenz herauszufinden. ImageRecognition2 soll helfen die Sequenzen herausfinden zu können. Dazu werden viele Masken mit Einstellungen benötigt.
Solange die Masken noch nicht alle existieren können über den Menüpunkt "Window->Script" und den Button "Propertygrid" alle Einstellungen getestet und ausprobiert werden.
Auch für Echtzeitvideobearbeitung gibt es einen Menüpunkt:
Wird der entsprechende Menüpunkt eingeschaltet, wird - falls vorhanden - eine Liste der verfügbaren Devices angezeigt. Dieses kann dann ausgewählt werden. Es erscheint ein Dialog mit 2 Live-Bildern (links original, rechts das Bild auf das der Filter angewendet wird). In der Combobox kann dann der entsprechende Filter ausgewählt werden.
Weiterhin gibt es die Möglichkeiten einstellbare Verzeichnisse zu überwachen, online Flickr, Google pics und weitere Plattformen zu durchsuchen, sowie Screenshots von offenen Fenstern oder Controls über eine Auswahlliste vorzunehmen usw.
In einer späteren Version werden wahrscheinlich auch einzelne Frames von Videos ausgelesen werden können... wir wollen ja schließlich alle Bildquellen nutzen? 😉
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Hallo,
hab zufällig einen interessanten Link gefuden und ich denke der passt hier ganz gut dazu.
dr4g0n76 liefert mit seinem Framework die "Anwendung" und Computer Vision: Algorithms and Applications liefert auf 979 Seiten die Theorie in Form einer Vorabfassung für ein Buch das Ende 2010 erscheinen soll.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
@gfoidl: Sehr gut. DIESEN kannte ich ausnahmsweise noch nicht. 😃 Super.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Das Thema finde ich sehr spannend und hab die meisten Postings angesehen.
Ich würde mir die Librarys gerne ansehen, kriege aber keine komplette Solution runter geladen.
Zum einen kriege ich immer einen Extrahierungsfehler
(blub.png sei fehlerhaft - was ja kein drama sein soll)
(Unerwartetes Archivende - Beim runterladen von den angeblichen 20MB springt er plötzlich zum Downloadende....)
Beim öffnen der Solution dann:
Gibt es das noch wo anders zum downloaden? Ich denke eher, daß es am Server liegt ....
Viele Grüße,
Mansur
@Mansur: Danke. Dann werde ich das Archiv nochmals hochladen. Vermutlich ist mir beim letzten Hochladen ein Fehler passiert (FTP lädt noch im Hintergrund hoch und ich habe den Computer in Standby versetzt...)
@Mansur:
So, habe das Archiv nochmals hochgeladen.
Außerdem habe ich jetzt hier die Binaries angehängt.
Für das hier angehängte Archiv gilt:
Leider musste ich die PDBs löschen und ein anderer Dateidialog darf nicht ausgewählt werden.
Es kann also hiermit weder Debugged noch ein Dateidialog mit Vorschau ausgewählt werden.
Aber das Programm sollte ausprobiert werden können.
Ich habs ausprobiert bei mir auf dem Rechner lässt sich die Exe aus dem Binary Verzeichnis starten.
EDIT: Ergänzungen für Änderungen:
In die Child-Windows kann jetzt per Drag&Drop eine Bild-Datei hereingeladen werden.
Mehrere Bilder auf einmal laden ist möglich durch Drag&Drop mehrerer Bilder auf den Client-Bereich
Die Menüpunkte Same Size / Same Width / Same Height sind im Kontext-Menü für die Child Windows hinzugekommen
Einige Fehler in manchen Filtern beseitigt
Interpolation Filter (Für 2 Bilder) hinzugefügt
Neuer Video-Detektions-Filter hinzugefügt
-Copy Paste Fehler in "Add" korrigiert: "Add" hatte gleiche Auswirkung wie "Sub"
Außerdem unterstützen jetzt beide Filter "ClipColor"
Außerdem haben jetzt alle Comboboxen und andere Steuerelemente in denen Filter aufgerufen werden können AutoComplete aktiviert.
Shortcut CTRL-F (F wie Filter) öffnet eine Textbox in der einfach durch eintippen des Namens und anschließendes Return ein Filter ausprobiert werden kann.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Hallo dr4g0n76,
Das Compillieren klappt bei mir leider immer noch nicht.
Ich konnte zwar die Verweise zu AVI... und LowLevel auf Deine Dlls umstellen,
Mir fehlt aber seltsamer weise die folgenden Klassen:
BaseColorSegmentation3
BaseColorSegmentation4
OwnOptimizedConvolution
... um kompillieren zu können (Wenn danach nicht noch etwas raus kommt).
Wenn ich einen Einstieg finden sollte, dann interessieren mich eher die Basisklassen.
Soweit ich die Beiträge gelesen habe ist ja das Projekt ImageRecignition2 nur die Frontend Anwendung, um die (komplexen) Filter entsprechend anzusprechen / zu konfigurieren.
Soweit ich das ganze (leider ohne Codeerklärung) mir bisher vorstellen kann ist es wohl die LowLevelGraphics Library die den Kern bildet.
Ich würde gerne mal probieren, ob sich Imageprocessing für GIS Anwendungen eignet ... so als Übungsprojekt.
Vielleicht kann man ja doch noch die LowLevelGraphics Library im Sourcecode sehen? oder war das nie so vorgesehen?
Viele Grüße,
Mansur
@Mansur: Die Klassen BaseColorSegmentation2, BaseColorSegmentation3 usw. habe ich rausgeworfen, da diese jetzt in BaseColorSegmentation vereint sind und mit einem Parameter der Modus eingestellt werden kann.
Das Compillieren klappt bei mir leider immer noch nicht.
Ich konnte zwar die Verweise zu AVI... und LowLevel auf Deine Dlls umstellen,
Mir fehlt aber seltsamer weise die folgenden Klassen:
BaseColorSegmentation3
BaseColorSegmentation4
OwnOptimizedConvolution... um kompillieren zu können (Wenn danach nicht noch etwas raus kommt).
Hmmm... das werde ich nochmal kontrollieren, auf jeden Fall solltest Du im VS 2008
auf die Projekte die "unavailable/nicht verfügbar" sind, einen "Reload Project/Projekt neu laden"-Befehl per Kontext-Menü ausführen.
Wenn ich einen Einstieg finden sollte, dann interessieren mich eher die Basisklassen.
Soweit ich die Beiträge gelesen habe ist ja das Projekt ImageRecognition2 nur die Frontend Anwendung, um die (komplexen) Filter entsprechend anzusprechen / zu konfigurieren.
Das ImageRecognition2 Projekt ist die Oberfläche um die Filter, Extraktoren und weiteres auszuprobieren, richtig.
Soweit ich das ganze (leider ohne Codeerklärung) mir bisher vorstellen kann ist es wohl die LowLevelGraphics Library die den Kern bildet.
LowLevelGraphicsLibraryGenau, diese Library bildet den Kern.
AcquiringLibrary
Die Acquiring Library ist dafür gedacht, um von verschiedenen Devices (z.B. Webcam) oder Online oder per Screenshot Bilder abzurufen.
ScripterLibrary
Die ScripterLibrary wird von der ImageProcessingConsole.exe benutzt.
Mit der ImageProcessingConsole können die Filter in der Console ausprobiert werden.
Ich würde gerne mal probieren, ob sich Imageprocessing für GIS Anwendungen eignet ... so als Übungsprojekt.
Dann wäre es interessant die Ergebnisse zu veröffentlichen.
Vielleicht kann man ja doch noch die LowLevelGraphics Library im Sourcecode sehen? oder war das nie so vorgesehen?
Doch die wird mit dem Projekt heruntergeladen vom Link im ersten Post,
hier nochmal der Link:
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Hi,
kannst du eventuell mal den Quellcode in eine Quellcodeverwaltung (SVN, Git, Hg) packen und irgendwo hosten (z.B. Google Code, GitHub, Codeplex)?
Das ist für alle Leute wohl besser, als das dauernde herunterladen von RAR Dateien. Aktuell brauche ich die Bibliothek nicht, aber mit einer Quellcodeverwaltung wird das sicher handlicher für jeden Benutzer und für dich.
Ist nur so eine Idee. Denk mal drüber nach.
Gruß
André
Nächste Version online geladen:
für etwaige protokollierte Änderungen und Neuerungen, siehe:
\ImageRecognition2\LowLevelGraphicsLibrary\LowLevelGraphicsLibrary\history.txt
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Mal einige Anmerkungen, da ich in letzter Zeit des öfteren gefragt wurde:
Die Filter sind nicht restriktiv wie in manchen anderen Frameworks in folgender Hinsicht:
Filter die Monochrom arbeiten und eigentlich ein monochromes Bild brauchen, um ein richtiges Ergebnis zu liefern, akzeptieren auch normale Farbbilder, d.h. derart wird nichts überprüft.
Das gilt auch für alle anderen Filter, einfach ein Bild reinstecken. Es muss keinen bestimmten Anforderungen entsprechen.
BaseForegroundBackgroundFilter
Filter wie Threshold-Filter u.ä. sind abgeleitet von BaseForegroundBackgroundFilter, d.h.
der es muss kein Schwarz-Weiss Bild generiert werden, sondern die Hintergrund und Vordergrundfarben können getrennt eingestellt werden.
PROCESSING_MODES
Bei Filtern bei denen es sich anbietet können auch die Processingmodes genutzt werden,
z.B. kann bei Invert über Processing Mode Color die Farbe, über Saturation die Sättigung oder über Brightness die Helligkeit invertiert werden.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Ausblick:
Änderungen:
**Filter: **
Geometrie:
Einige neue eigene Filter
Sonstiges:
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Hallo,
Gibt es dein Projekt noch irgendwo zum downloaden? Hast du es mittlerweile in irgendeine Quellcodeverwaltung (SVN, Git, Hg) gepackt und irgendwo gehostet (z.B. Google Code, GitHub, Codeplex)?
Gruß, toolsche
Hier gibt's ab jetzt Tutorials,
habe mich dazu entschlossen diese auf Englisch zu schreiben:
http://lowlevelgraphicslibrary.blogspot.com/
EDIT: Ich werde auch noch in den ersten Beitrag einfügen.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Hallo!
Die Videos sind klasse, damit sieht man erstmal, was überhaupt mit der Lib möglich ist.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Noch mal ein paar Videos hinzugefügt, u.a.:
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Hier eine Zwischen-Version (only Executables) also quasi ein Snapshot,
zum herumspielen und zu sehen, wie sich das ganze entwickelt hat.
EDIT: Lange nicht alle Menüpunkte funktionieren und das Rechteck das man mit der Maus aufziehen kann hat momentan auch keine Funktion... aber alles im entwickeln
Die wichtigsten Funktionen und Kürzel:
CTLR-N -> neues Fenster aufmachen
STRG-ALT-C -> Fenster kaskadieren
STRG-ALT-H -> Horizontal anordnen
STRG-ALT-V -> Vertikal anordnen
New Window (open copy) -> vom aktuellen Fenster aus eine Kopie in einem neuen Fenster erstellen
New Window (last loaded) -> neues Fenster mit dem zuletzt geladenen Bild
CTRL-F -> Filter ausführen
Menüpunkt Windows->Script: Script ausführen....
Feedback ist gerne gesehen.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Ich habe ein paar Videos auf
http://lowlevelgraphicslibrary.blogspot.de/
hinzugefügt, um zu zeigen. Was noch alles möglich ist.
Diesmal:
3 Tipps um Bilder künstlerisch zu verfremden.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Da gibt es umfangreiche Möglichkeiten. Es kommt immer darauf an, was man erreichen möchte. Ich denke Dir geht es wahrscheinlich darum, zu dunkle Bilder mehr oder weniger korrekt aufzuhellen und überbelichtete abzudunkeln.
Ich stelle zwei Beispiele online.
Spice up lighting conditions of your pic
Hinweis: Falls die Videos noch nicht komplett hochgeladen sein sollten, später noch mal auf der Seite vorbeigucken
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Benutze den Filter
Brightness
new Brightness(level).Execute(bitmap)
Danach das
Dispose
nicht vergessen.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Um solche Fragen zu beantworten, gibt es jetzt einen Codegenerator.
Dieser ist auf die Properties, nicht auf den Constructor ausgerichtet.
So kann jeder sich selbst den Code erzeugen lassen, der die Aktion ausführt.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Ich bin jetzt den Schritt gegangen und habe das Projekt auf
https://imagerecognition2.codeplex.com/
gehostet.
Damit nichts mehr verloren geht.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
Hallo dr4g0n76,
wenn ich die Seite besuche, dann erhalte ich folgende Meldung:> Fehlermeldung:
THIS PROJECT IS NOT YET PUBLISHED
If you are a coordinator or developer on this project, please sign in to access the project.
Gruß
pinki
Hallo,
ich habe mir auch die LowLevelGraphicsLibrary runtergeladen, entzippt und
hab die Library in VS2010 geöffnet.
VS2010 findet unter Verweise das dcraw und ScripterLibrary nicht.
Können sie mir sagen wo ich die beiden Verweise finden kann ?
Ich nehme an dass das spezielle DLL's sind.
Vielleicht kannst du mir einen Tip geben
Hallo JoFlei,
bezüglich dcraw solltest im Netz fündig werden. Die ScripterLibrary findest du im Zip-Archiv in LowLevelGraphicsLibrary.
herbivore