Autor Beitrag
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Mo 01.04.13 03:52 
Hallo,
ich möchte euch heute mein neuestes Projekt vorstellen: Vereinfachte Bildbearbeitung mit .net Sprachen. Mich hat es gestört dass Bildbearbeitung in gängigen Programmiersprachen so komplex ist und Programmiersprachen wo es einfach ist sind "für den Rest" nicht so toll. Zum Beispiel kann man in C# nicht "einfach so" einen Gaußfilter auf ein Bild anwenden. Oder sowas wie Sobel, Canny oder andere Kantenfilter. Man muss eigentlich immer mindestens zwei for-Schleifen hernehmen und über das Bild drüberiterieren.

Andere Sprachen (wenn man das so nennen kann) können das zwar, sind aber sonst eher ein Krampf. Ich erinnere mich an eine Bildverarbeitungssuite, die konnte extrem viel extrem schnell, und hat den Code auch als Text angezeigt, aber schreiben war nur über eine Reihe von Comboboxen möglich. Oder Matlab: Verwirrt total mit den eckigen Klammern beim Array-Zugrif. Indizes fangen alle bei 1 an. usw.

Aber genug :-) Ich bin - wie gesagt - dabei das ganze umzukrempeln. Und damit auch Anfänger damit gut zurechtkommen habe ich schon ein Bonus-Feature eingebaut: Man kann die Bilder direkt in den Quelltext einfügen. Per Copy-Paste :-D
==> Bild im Quelltext eingefügt (png, 238.07 KB)

Nachdem man das Bild dann einer Variable zugewiesen hat, kann man zahlreiche Funktionen aufrufen. Ich versuche so weit wie möglich an richtige Bildbearbeitungssuiten heranzukommen. Das ganze lässt sich natürlich auch im Debugger begutachten (siehe Bild im Debugger (png, 238.19 KB))

Die Endgültige Ausgabe geschieht dann ganz normal über ein WPF Image Objekt. Das Ergebnis ist im dritten Bild zu sehen. Ausgabe in WPF (png, 86.67 KB)

Besonders positiv ist die geringe Menge an Code, die für den Anwender noch zu händeln ist. Die ganze Manipulation passiert "unter der Haube".

ich programmiere das momentan für VS2010, aber der Sprung auf VS2012 sollte nur einer geringe Hürde sein. Ich fürchte leider, dass ich die Delphi-IDE nicht derartig aufmotzen kann. Bilder im Quelltexteditor sind auf bei VS nicht ganz trivial.

Jetzt könnt ihr eure Anregungen und Kritik loswerden. Irgendwelche Wünsche? Funktionen die unbedingt hineinmüssen?

Viele Grüße und einen schönen Frühling ;-)

Btw.: Ich spiele auch mit dem Gedanken nur die Funktionalität "Bilder im Quelltext" separat zu veröffentlichen. Lässt sich relativ gut trennen und könnte zu coolen neuen Ideen führen. Mal gucken...

P.S.: Crosspost in der DP ( www.delphipraxis.net...ded.html#post1209549 )
Einloggen, um Attachments anzusehen!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 01.04.13 10:56 
Hey, super Projekt :zustimm:

Mit einer solchen Bibliothek im Rücken könnte man endlich mal als Hobbyentwickler Photoshop nachprogrammieren, das wäre ja dann nicht mehr schwer. Vielleicht sogar für Windows RT oder Windows Phone? :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
jfheins Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Mo 01.04.13 15:00 
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
Hey, super Projekt :zustimm:

Mit einer solchen Bibliothek im Rücken könnte man endlich mal als Hobbyentwickler Photoshop nachprogrammieren, das wäre ja dann nicht mehr schwer. Vielleicht sogar für Windows RT oder Windows Phone? :-)

Ja, prinzipiell spricht erstmal nichts dagegen. das Photoshop/Gimp wäre eben nur ne GUI die man "drüberzieht". Für Win. Phone und WinRT sehe ich ebenfalls keine prinzipiellen Hürden, das ganze benutzt eigentlich keine Plattformspezifischen Klassen. Da man für alle Plattformen Visual Studio benutzt sollte der IDE-Teil sich eigentlich nicht verändern.

Der nächste Schritt wären wohl Videos die man direkt in den Quelltext einbetten kann. Die Quelltextdateien werden dann zwar deutlich größer, aber Platz hat man ja heutzutage eigentlich genug.
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 429
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Mo 01.04.13 15:21 
Könnte man nicht einen Präprozessor generieren, der die Videos im Quelltext analysiert und enthaltene Gesten in Programmcode umwandelt? Das würde auch den weniger Erfahrenen ermöglichen, schnell zu validen Ergebnissen zu kommen.
jfheins Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Mo 01.04.13 15:33 
Dann mache ich mich ja selbst arbeitslos, nee das lassen wir mal lieber :P

Edit: Bleibt mir noch zu sagen: April April! :mrgreen:
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 02.04.13 02:47 
Nix April April, ich will so ne Bibliothek haben, die passt mir nämlich grad verdammt gut in den Kram :D

Bei meinem kleinen Übungs-Projekt bin ich zwar noch nicht dort angekommen, aber ich möchte auch die Möglichkeit bieten, Bilder zu sammeln und besonders auch zu bearbeiten.
jfheins Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Di 02.04.13 15:00 
Tja, also das Zeug im Screenshot wurde so realisiert:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
namespace ImageProcessingDemo
{
    static class zHelper
    {
        public static BitmapImage EnhanceContrast(this BitmapImage bmp)
        {
            return new BitmapImage(new Uri(@"C:\fig\img5.png"));
        }

        public static BitmapImage GaussianBlur(this BitmapImage bmp, int amount)
        {
            return new BitmapImage(new Uri(@"C:\fig\img4.png"));
        }
    }
}

Ud natürlich ein bisschen Bildbearbeitung (in Paint.net)

Die Eigentliche Bearbeitung des Bilds habe ich in MATLAB gemacht. Wenn du viel damit zu tun hast, kannst du das ja mal ausprobieren. In der Student-Version ist sogar die Image Processing Toolbox enthalten.

Das ganze Zeug nach C# zu portieren wäre natürlich auch eine Überlegung wert. Dürfte aber ziemlich aufwendig werden...
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 02.04.13 17:42 
Das mit dem Bild im Code geht in Mathematica übrigens wirklich ;-)

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 02.04.13 20:39 
user profile iconjfheins hat folgendes geschrieben Zum zitierten Posting springen:
Das ganze Zeug nach C# zu portieren wäre natürlich auch eine Überlegung wert. Dürfte aber ziemlich aufwendig werden...
Aufwendig ist vor allem, es performant hinzubekommen. Ich habe einen Code in Benutzung, um Daten mittels einer Lookup-Table (also Wert -> Farbe) als Bild darzustellen. Der ist IMHO schon recht gut optimiert, aber wirklich zufriedenstellend ist die Geschwindigkeit nicht.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Di 02.04.13 20:58 
Schreit doch geradezu nach Shadern ^^

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 02.04.13 21:46 
Also das mit dem Bild im Code finde ich allerdings doch etwas unnötig. Die Idee, dass man im Debugger Bilder direkt anschauen kann, finde ich jedoch gut, dann allerdings auch mit einem Fenster, das man wahlweise öffnen und beliebig zoomen kann.

Aber besonders gut finde ich die Idee, eine Bibliothek zu schaffen, die umfassende Bildbearbeitung über wenige Methoden-Aufrufe in C# implementiert, das würde eben das doch sehr vereinfachen. Und wenn man die Bibliothek extra einbinden kann und das ganze kein Teil von Visual Studio ist, würde es mir trotzdem gefallen.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 03.04.13 12:16 
Hallo Palladin007,

eine .NET Lib welche in die Richtung "Bildbearbeitung" geht, gibt es unter LowLevelGraphicsLibrary

Einen Blog dazu mit Vorstellung verschiedener Funktionaliäten (z.B. Filtern) inkl. Videos gibt es auch: lowlevelgraphicslibrary.blogspot.de

Für diesen Beitrag haben gedankt: Palladin007
san-software
Hält's aus hier
Beiträge: 11
Erhaltene Danke: 3



BeitragVerfasst: Do 11.04.13 12:31