Hallo Zusammen, ich habe bereits einen Prototypen in MATLAB geschrieben. Jetzt würde ich diesen gerne in eine eigenständige Anwendung für den Endbenutzer überführen. Als jemand der von GUI- / Windows-Programmierung keine Ahnung hat denke ich, dass ich das mit VisualStudio 2010 Express in C# am schnellsten hinbekomme. Benötigt werden folgende Schritte: - JPEG öffnen - Histogramm erstellen - Tonwertkorrektur - Schwarz / Weiß Umwandlung - Zugriff auf jedes Pixel in Matrixform - Rechenoperationen auf Matrix oder Bereiche der Matrix - Schneiden - Exif / IPTC Daten bearbeiten - JPEG speichern Welche Bibliothek nimmt man da? Am liebsten währe es mir, wenn die sich möglichst Matlab-ähnlich bedienen lässt. Gibt es Tutorials / Beispiele? Gruß, Thomas
die frage ist was du mit der softwrae machen willst... verkaufen etc... wenns nur mehr oder weniger nen einzelexemplar ist generier einfach aus dem matlab code ne .exe und gut..
Danke für den Tip. Die Matlab-Funktion nimmt z.Zt. das bereits geladene Bild und ein paar Parameter entgegen. Ich könnte die Funktion so anpassen, dass sie die JPEG-Datei direkt entgegen nimmt. Würde sich die exe Datei dann genauso aus der Konsole aufrufen lassen wie die M-Function in Matlab? Es soll zwar nicht verkauft werden, allerdings schon auf mehreren PCs betrieben werden. Matlab ist auch nicht auf allen PCs verfügbar, ist das ein Problem? Auf jeden Fall würde ich noch eine hübsche GUI drumherum basteln wollen. Aber wenn ich Bilverarbeitungsalgorithmus trotzdem in Matlab implementieren kann währe das schon hilfreich. Trotzdem würde mich auch noch die reine .NET Lösung interessieren.
Thomas schrieb: > Hallo Zusammen, > > ich habe bereits einen Prototypen in MATLAB geschrieben. > Jetzt würde ich diesen gerne in eine eigenständige Anwendung für den > Endbenutzer überführen. > Als jemand der von GUI- / Windows-Programmierung keine Ahnung hat denke > ich, dass ich das mit VisualStudio 2010 Express in C# am schnellsten > hinbekomme. > > Benötigt werden folgende Schritte: > - JPEG öffnen Hängt davon ob ob WPF/Silverlight oder WinForms benutzt werden soll http://msdn.microsoft.com/en-us/library/ms653387.aspx http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.aspx http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx > - Histogramm erstellen > - Tonwertkorrektur > - Schwarz / Weiß Umwandlung > - Zugriff auf jedes Pixel in Matrixform > - Rechenoperationen auf Matrix oder Bereiche der Matrix > - Schneiden > - Exif / IPTC Daten bearbeiten http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapmetadata.aspx > - JPEG speichern s.o. > > Welche Bibliothek nimmt man da? Keine > Am liebsten währe es mir, wenn die sich möglichst Matlab-ähnlich > bedienen lässt. > Gibt es Tutorials / Beispiele? > > Gruß, > Thomas
Die System.Drawing.Bitmap Klasse ist leider sehr langsam, wenn du Pixel für Pixel verarbeiten willst. Verwende die ColorMatrix Klasse um das Bild schnell zu transformieren. Falls du damit nicht auskommst, ist es u.U. schneller das Bild in ein eigenes Array zu packen.
Such mal bei Google nach "unsafe Bitmap". Damit haben wir, als wir Bildverarbeitung an der Uni gemacht haben, das Bild in ein 2-dimensionales Array umgerechnet, was zur Folge hat, dass sämtliche nachfolgenden Dinge, die du mit dem Bild machen willst, erheblich schneller von statten gehen.
Alternativ ist es eine Überlegung die Bildverarbeitung in C++ .net zu machen, die Funktionen davon kannst Du direkt von Deiner C# GUI aufrufen. gruß Tom
Wenn du C/C++ programmieren kannst dann kannst du auch Visual Studio C++ benutzen. Als Tool zum basteln Oberflächen empfiehlt sich FLTK (das nehme ich immer). Siehe hier: http://www.fltk.org/ http://seriss.com/people/erco/fltk-videos/ (sehr gutes Video-Tutorial, einfach anschauen) Das ist super einfach zu bedienen (Es gibt einen Konfigurator [FLUID] der eine C und H-Datei ausspruckt welche man einbindet, nur die Callbacks schreibt man selbst). Man kann es in 10 min lernen. Für das Bilder öffnen und bearbeiten benutze ich die Freeimage Library (mit C++-Wrapper). Siehe hier: http://freeimage.sourceforge.net/download.html Damit hast du alle Freiheiten, er frisst so gut wie jedes Format (auch EXIF Daten). Ich komme aus der µC-Programmierungsecke und benutze beides häufig. Es klappt wunderbar. Gruß Mario
Thomas Burkhart schrieb: > Alternativ ist es eine Überlegung die Bildverarbeitung in C++ .net zu > machen, die Funktionen davon kannst Du direkt von Deiner C# GUI > aufrufen. Dann aber ein Projekt mit unmanaged C++, sonst kommts aufs selbe raus wie wenn man es mit C# macht. ;-)
Arc Net schrieb: >> - Exif / IPTC Daten bearbeiten > > http://msdn.microsoft.com/en-us/library/system.win... Kommt darauf an, was Du unter "verarbeiten" verstehst. Einfach lesen - ja, ändern oder auch "richtig lesen" wird mit einer Bibliothek von der Stange eher schwierig. Insb. in IPTC-Bereich herrscht dank Adobe (PS v. 6-7-CS) ein echter Chaos. Sollten noch die ICC-Profile / Farbräume ins Spiel kommen, würde ich mich gleich auf C++ (oder eine andere "unmanaged"-Sprache) + eigene Implementierung einstellen. Die Auswahl der GUI-Bibliothek ist dann eher sekundär.
Thomas schrieb: > Hallo Zusammen, > > ich habe bereits einen Prototypen in MATLAB geschrieben. > Jetzt würde ich diesen gerne in eine eigenständige Anwendung für den > Endbenutzer überführen. > Als jemand der von GUI- / Windows-Programmierung keine Ahnung hat denke > ich, dass ich das mit VisualStudio 2010 Express in C# am schnellsten > hinbekomme. Ich weiß nicht, ob C# da wirklich zielführend ist. > Benötigt werden folgende Schritte: > - JPEG öffnen > - Histogramm erstellen > - Tonwertkorrektur > - Schwarz / Weiß Umwandlung > - Zugriff auf jedes Pixel in Matrixform > - Rechenoperationen auf Matrix oder Bereiche der Matrix > - Schneiden > - Exif / IPTC Daten bearbeiten > - JPEG speichern Schau Dir mal OpenCV an. > Welche Bibliothek nimmt man da? > Am liebsten währe es mir, wenn die sich möglichst Matlab-ähnlich > bedienen lässt. > Gibt es Tutorials / Beispiele? OpenCV. Beim Thema GUI würde ich an Deiner Stelle anfangs lieber etwas mehr Zeit investieren und nicht schnell irgendwas mit .NET zusammenfrickeln, auch wenn das einfach erscheint. Meine Empfehlung ist wxWidgets, mit dem man sehr schlank Plattformunabhängigkeit geschenkt bekommt oder auch QT.
Wow, danke für die vielen tollen Tipps. Besonders OpenCV und FreeImage scheinen mir interessant. Für letzteres gibt es sogar eine C# Anbindung. Aber im Moment neige ich mehr zu OpenCV + Python + PyQt. Also, ich habe erstmal einiges zu evaluieren...
@ Gastino G.: wxWidgets ist nicht wirklich schlank. Schau dir mal FLTK an...platformunabhängig und extrem schlank. guck dir mal das video-tutorial (link oben), ich kanns nur jedem empfehlen der einfach in GUI-Programmierung einsteigen möchte... gruß Mario
Mario Grafe schrieb: > wxWidgets ist nicht wirklich schlank. Doch. Viel schlanker geht es kaum, wenn es plattformunabhängig sein soll. Es ist nämlich nur eine Art Wrapper und nutzt die nativen Umgebungen der jeweiligen Betriebssysteme. So wird zum Beispiel unter Windows eine normale Windows-Oberfläche draus (Win32) und unter Linux nutzt wxWidgets GTK. Das ist der riesige Vorteil von wxWidgets! FLTK bringt hingegen wieder seine eigenen Oberflächenelemente mit und die Programme sehen wie Fremdkörper aus (und die Widgets sind in ihrem Funktionsumfang wahrscheinlich auch kaum mit den betriebssystemeigenen Bibliotheken zu vergleichen). Bei wxWidgets siehst Du keinen Unterschied zu den mit originären Mitteln programmierten GUIs (wenn man nicht gerade Spezialsachen wie zum Beispiel wxAui benutzt).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.