Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
LowLevelGraphicsLibrary
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

LowLevelGraphicsLibrary

beantworten | zitieren | melden

EDIT: 28.01.2014:

Ich bin jetzt den Schritt gegangen und habe das Projekt auf
https://imagerecognition2.codeplex.com/

gehostet.


EDIT 26.04.2012:

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:

Fenster
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

Filter
CTRL-F -> Filter ausführen

Windows->Script:

Filter ausführen (oberer Execute-button)
hier auch Kanal auswählen, A,R,G,B, Mask (unterer Execute-button)

Oder direkt im Menü entsprechenden Filter auswählen

Lambdaausdrücke:
Oben im Filter eingeben oder aus Combobox auswählen

Menüpunkt Windows->Script: Script ausführen....

Bilder verknüpfen/Contextmenü oder Toolleiste:
Bilder im Fenster aus Childwindowliste auswählen...

EDIT: 17.01.2012

Hier gibt's ab jetzt kleine Tutorials usw. über diese Library:
http://lowlevelgraphicslibrary.blogspot.com/


EDIT: 22.04.2010
Als Dateianhang am Ende dieses Beitrags verfügbar.

Es wird immer mal wieder von mir ein Testprojekt hochgeladen, aber das wird nicht explizit hier jedesmal vermerkt.


EDIT: Prerelease Versionen gibt es immer - wenn vorhanden - hier:

Anmerkung: Ich behalte mir vor, die Datei umzubenennen oder herauszunehmen.



Der Code kann jetzt hier
heruntergeladen werden (s. Ende dieses Posts).

Achtung: Das Projekt ist noch nicht gegen Fehler getestet.



Zudem hat die Basis Klasse das Interface IFilter bekommen.

Dieses wird beinhalten:

- Steps (Quasi Pixel in X-Richtung und Y-Richtung überspringen)
- Rectangle (Ausschnitt auswählen, auf den der Filter angewendet werden kann)
- einige grundlegende Funktionen wie in der System.Drawing.Bitmaps-Klasse z.B. Height / Width, GetPixel / SetPixel

Was schon drin ist:

Einige Experimentelle Filter:

- Neue Filter, z.B. Background-Estimation
- Farben runden
- Segmentierungen

- Colorspaces, Umrechnungen von RGB in verschiedene Farbräume und zurück u.a.
YUV, YCbCr, HCL, HSV, XYZ, CIELUV, CIELAB usw.

- verschiedene Kantenfilter und ein neuer Konturfilter
- verschiedene rudimentäre Segmentierungsfilter.

- Viele statische RGB-Funktionen unter ColorFunctions wie z.B. Summe der Channels,
MaxChannel, MinChannel, Channels vertauschen per String z.B. mach BGG oder RBG oder BGR aus Original RGB, Channel-Ratio,
usw. alle diese Funktionen sind in ColorFunctions ausprogrammiert.

- BitmapFunctions-Klasse um ein Bild auf verschiedene Arten z.B. in einen Stream oder Byte-Array und wieder zurück umzuwandeln, zu resizen und zu rotieren.

Einen Filter benutzen:

Bitmap bitmap = (Bitmap)Image.FromFile("blub.jpg");
IFilter filter = new GrayScale();
filter.Execute(bitmap);

Die erste Zeile lädt das Bild,
die 2. Zeile instantiiert den Filter.
Dann wird der Filter angewendet

Zur Ausführung gibt es 3 Möglichkeiten:


1.) void Execute(bitmapSource);
Führt den Filter aus und bitmapSource enthält die neuen - veränderten - Informationen

2.) Bitmap ExecuteCloned(bitmapSource);
Führt den Filter geclont aus, d.h. bitmapSource wird nicht verändert, und die veränderte Bitmap wird zurückgegeben.


3.) void ExecuteMasked(bitmapSource, bitmapMask);
Führt den Filter aus und er wird nur an den Stellen angewendet in dem im Maskenbild weiße Pixel sind.

EDIT:

Als nächstes gibt es dann noch die Möglichkeiten:

4.) ExecuteChannelled

Für jeden Kanal kann angegegeben werden, ob das Ergebnis übernommen wird.

5.) ExecuteMaskedChannelled

Für jeden Kanal kann in Bezug auf die Maske angegeben werden, ob das Ergebnis übernommen wird.

EDIT: 4. und 5 sind jetzt implementiert.


Abkürzung des obigen Codes:

new GrayScale().Execute(bitmapSource); //Bild in Grau umwandeln.

Es gibt bisher ( mind.) folgende

Filterkategorien:

- Farb-filter
- Konvolutions-Filter
- Morphologie-Filter
- Histogramm-Filter
- Kanten-Filter
- Ecken-Filter
- Frequenz-Filter
- Binarisierungs-Filter (Thresholding)
- Kontur-Filter
- Korrektur-Filter
- Korrelations-Filter
- Deplatzierungs-Filter
- Segmentierungs-Filter
- Makro-Filter
- Textur-Filter
- Mathematische Filter (algebraisch, logisch)

Über ein UnsafeBitmap Objekt kann auf einfache und schnelle Weise auf ein Bitmap zugegriffen und es verändert werden:


UnsafeBitmap bitmap = new UnsafeBitmap(_bitmapSource);
//hier die Veränderungen durchführen
bitmap.Dispose(); //Und dann unbedingt Dispose aufrufen, um den Lock wieder freizugeben.


UnsafeBitmap bekommt als Eingang die originale Bitmap übergeben.
Dann wird intern alles durchgeführt um Unsafe auf die Bitmap zugreifen zu können.
Von außen sieht es aber aus, als würden wir ganz normal zugreifen.


            List<Color> m_aColor = new List<Color>();
            m_aColor.Add(Color.FromArgb(255,255,255));

            UnsafeBitmap bitmap = new UnsafeBitmap(_bitmap);
            for (int y = 0; y < bitmap.Height; y++)
            {
                for (int x = 0; x < bitmap.Width; x++)
                {
                    Color color = bitmap.GetPixel(x, y);
                    if (!m_aColor.Contains(color))
                    {
                        bitmap.SetPixel(x, y, m_ColorToReplaceWith);
                    }
                }
            }
            bitmap.Dispose();

ImageRecognition2.rar (3 MB, 42 mal heruntergeladen)


Hinweise:
Was tut sich aktuell?

EDIT: 15.03.2012

Aktuell geht es um alles fürs Vermessen und die Erkennung von Bildern, was eingebaut wird.

- Neuronale Netzwerke
- Snakes / Active Contours

3D:

- Parität / Depthmap
- Stereo: Anaglyph / Interlaced / 3d-Modellschätzung
Dieser Beitrag wurde 28 mal editiert, zum letzten Mal von dr4g0n76 am .
Attachments
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
maxE
myCSharp.de - Member



Dabei seit:
Beiträge: 456
Herkunft: Sachsen

beantworten | zitieren | melden

Ganz nett, aber man könnte die Lib noch etwas mehr in Richtung OO bringen. Alle Filter sind einfache statische Funktionen. Kann es sein, dass du die aus einer ehemaligen C Library konvertiert hast?
Die Filter könnte man übrigens prima als Plugin in Paint.NET integrieren http://www.eecs.wsu.edu/paint.net/
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
private Nachricht | Beiträge des Benutzers
Quallo
myCSharp.de - Member



Dabei seit:
Beiträge: 994
Herkunft: Nähe Bremen

beantworten | zitieren | melden

Klingt nach einer Menge Arbeit! Super das du das beisteuerst!
private Nachricht | Beiträge des Benutzers
shady
myCSharp.de - Member



Dabei seit:
Beiträge: 42

beantworten | zitieren | melden

irgendwie mekkert #Develop rum, wenn ich versuche den kram zu Kompilieren:
Zitat
PFAD\cImageFilters.cs(35,4): error CS0227: Nicht gesicherter Code wird nur angezeigt, wenn mit '/unsafe' kompiliert wird
Das kommt überall da vor wo mit unsafe {} gearbeitet wurde.
Beim Kompilieren wird nur die .manifest Datei erstellt.
Wie kann ich das Lösen?
private Nachricht | Beiträge des Benutzers
S.H.-Teichhof
myCSharp.de - Member

Avatar #avatar-2460.jpg


Dabei seit:
Beiträge: 1552
Herkunft: Sindringen

beantworten | zitieren | melden

Du musst in den Projekt Einstellungen Unsafe Code zulassen
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
private Nachricht | Beiträge des Benutzers
shady
myCSharp.de - Member



Dabei seit:
Beiträge: 42

beantworten | zitieren | melden

ok, sorry, da hab ich ja auch schon geguckt, ich hab die Option nur übersehen...
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1928
Herkunft: NRW

beantworten | zitieren | melden

Hallo!

Die Komponente gefällt mir sehr gut, Kompliment!
Kurze Frage von einem Nicht-Experten in Sachen Bildbearbeitung:
Gibt es bzgl. der abgefragten Werte z.B. für Helligkeit, Kontrast, Gamma, ... bestimmte Grenzwerte?

EDIT: OK, lässt sich im Quellcode ablesen (0..255).
Nobody is perfect. I'm sad, i'm not nobody
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1928
Herkunft: NRW

beantworten | zitieren | melden

Hallo!

Nächste Frage:
Wo ist der Unterschied zwischen cGraphics.cs und cImageFilters.cs (ist eine davon schneller oder genauer)?
Nobody is perfect. I'm sad, i'm not nobody
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

Ist das Beispielprojekt [im neuen Download] iwie flötengegangen?
Bei mir findet sich nur ein Project, und zwar ganz ohne Property-Ordner - wo issn nun niedergelegt, dasses eine Dll ist, weil kommt beim Start schon die Fehlermeldung "Klassenbibliotheks-Projekt kann nicht StartProjekt sein"

Nee, flötengegangen auch nicht, verschiedene Forms sind ja noch vorhanden.
Also iwie ein unvollständiger Upload?
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

@ErfinderDesRades:

EDIT 18.12.2009: Das komplette Projekt kann im 1. Thread heruntergeladen werden.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

Ohne Beispielprojekt findich schade, weil willichmal einen Blick reinwerfen, mussich erstmal iwas proggen, dassich ühaupt was zu sehen kriege.
Habich jetzt ja gemacht, und noch folgendes gefunden:
CGraphics scheint versehentlich dringeblieben, weil die Arbeit scheint ja CImageFilters zu machen.
Von den Forms ist nur FormMain im Designer darstellbar, allen anderen melden: "Method 'System.Windows.Forms.Form.CenterToParent' not found."
Bei vielen Filtern kommt ein Eingabefenster "Value eingeben", da kann man dann einen Value eingeben - nirgends ein Hinweis, was der Value bewirkt.
Und dass das Projekt keine Properties hat, scheint mir, wie gesagt, an einem fehlerhaften Upload zu liegen, odr?
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

EDIT 18.12.2009:

Das Projekt wird immer hier im 1. Post dieses Threads hochgeladen.
Es ist aber immer noch kein endgültiges Release angesagt.

Ich stelle einfach hier die Prerelease-Versionen zur Verfügung.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

Neuer Mechanismus

beantworten | zitieren | melden

Preview:

Wie im angehängten Bild zu sehen, können beim nächsten Upload auch farbige Blobs anhand der Rechtecke ermittelt werden.

Bildanalyse:

Mit einem "JOIN" können Rechtecke ähnlicher Farben zu größeren Rechtecken verschmolzen werden.
Attachments
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Hier noch zum Vergleich das Originalbild:
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von dr4g0n76 am .
Attachments
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

Preview Applikation

beantworten | zitieren | melden

Hier gibt's jetzt die Preview Applikation.

Der Code ist noch nicht gecleant und viele Filter sind noch mit Bitmap.SetPixel GetPixel implementiert und deswegen langsam.

Es ist eben noch ein Entwicklungsprojekt. Aber solange kann jeder ja mal damit rumspielen.

Fehler zu monieren hat momentan keinen Sinn. Die werden erst wichtig, wenn die neue Version komplett veröffentlicht wird.

Z.B. wird die Klasse ImageFilters noch in LowLevelGraphicsLibrary wandern, ebenso wie die Blobs usw.

EDIT: Graue Funktionen sind momentan nicht aktiviert/implementiert...

EDIT: Download s. oberster Post.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von dr4g0n76 am .
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Hier ein Screenshot dazu:

Screenshot1.jpg
Attachments
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

[EDIT] 18.12.2009:

- Viele neue Filter, z.B. Segmentierung
- Color-Blob-Extraktor mit neuem Verfahren
- ColorSpaces, Umrechnung von RGB in andere Farbräume...
- RGB-Funktionen (z.B. Abfrage auf RGB-Range, Maxchannel, Minchannel usw.)

Einfach dazu das Projekt im ersten Post dieses Threads herunterladen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dr4g0n76 am .
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
MagicAndre1981
myCSharp.de - Member

Avatar #avatar-2623.jpg


Dabei seit:
Beiträge: 913
Herkunft: Nordhausen

beantworten | zitieren | melden

Ich muss dir ein großes Kompliment machen, die Bibliothek ist einfach genial :)
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

@MagicAndre1981: Dankeschön. Das ist ein super Kompliment und erfreut mich ungemein. Läuft runter wie Öl. *verneig* :-)
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Habe heute ein erstes Prerelease veröffentlicht. Damit man sich den Code schon mal anschauen kann. Und nein, der Code bleibt nicht so. An vielen Stellen wird es noch Änderungen und Optimierungen geben.

Die Syntax der Filter bleibt so.

Es wird noch ein ExecuteCloned hinzukommen, bei dem man das bearbeitete Bitmap als Ergebnis erhalten wird und das Original-Bild bleibt dabei wie es ist.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Ihr dürft aber gerne schon Rückmeldungen geben, vielleicht fehlt euch noch ein Filter oder ihr habt grundsätzliche Fehler entdeckt, ich werde die Vorschläge aufnehmen, prüfen und falls sinnvoll ggf. berücksichtigen.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Die Beschreibung der Filter werde ich heute noch hier online stellen:

[EDIT] die erste Anleitung ließ sich nicht online laden, deshalb bis ich wieder dazu komme wird es noch wohl eine Weile dauern.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Neues Prerelease hochgeladen. s. ganz oben, 1. Post in diesem Thread.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Neues Prerelease erstellt.

Unter anderem funktionieren jetzt:

- Houghtransform
- Moravec
- ZeroCrossing
- AdaptiveThresholding

Funtionen in ColorFunctions:

u.a.
- Mul(Color, Color)
- Sub (Color, Color)
- Div(Color, Color)

EDIT: noch nicht hochgeladen
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dr4g0n76 am .
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Neue Version hochgeladen.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
HeRaider
myCSharp.de - Member



Dabei seit:
Beiträge: 81

beantworten | zitieren | melden

Hm sieht ganz interessant aus. Muss ich mir mal anschauen.

PS: Ich suche noch nach einer Funktion die weiße Ränder an Grafiken entfernen kann falls dir da was einfallen sollte
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

@HeRaider: So eine Funktion gibt es eigentlich schon. Benutze (ab der nächsten Version) Autocrop. Und übergebe Autocrop die Bedingung.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Die Bibliothek ist eigentlich ausgelegt für Stills (Einzelbilder), nicht für Videobearbeitung

- Viele kleine Korrekturen (Fehlende Konstruktoren, Falsche Berechnungen, fehlende Benutzung von UnsafeBitmap und dazugehöriges UnsafeBitmap.Dispose() an manchen Stellen )

- Autocrop ist jetzt rudimentär implementiert, kann benutzt werden.
Funktioniert fürs erste IMHO relativ gut.

- Korrektur von Umrechnungen für Farbmodelle und redundante Farbmodelle entfernt

- Alle vorgesehenen Filter zum Funktionieren gebracht

- Objektextraktor begonnen

Es gibt jetzt im wesentlichen 4 Komponentenarten:

- Extractors (Klassen um bestimmte Features/Objekt usw. zu extrahieren)
- Colorspaces (Farbräume)
- Filter (z.B. Farbfilter-, Morphologie-, Kanten-, Eck-Filter usw.)
- Histogramm und Statistikfunktionen

(- sowie Hilfsfunktionen (BitmapFunctions, ColorFunctions))
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

Hi!

als ich vor längerer Zeit mal reingeguckt hab, fandich das mit den Filtern suboptimal - für jeden Filter eine eigene klasse.
Dabei sind die meisten Filter ja ConvolutionFilter, nur je mit verschiedenen Parametern.
Das kann man wesentlich vereinfachen, indem man einen ConvolutionFilter schreibt, und den mit verschiedenen Parametern aufruft.

Ich hab sowas mal gemacht, da habich die verschiedenen Parameter in einer DataTable zusammengefasst., und User kann wählen.
Das hat den lustigen NebenEffekt, der User kann seine eigenen Filter erfinden, indem er der DataTable weitere Datensätze zufügt.
gugge Convolution-Filter
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

@ErfinderDesRades:

Das ist nicht mehr so, dass die meisten Filter Convolution-Filter sind.

Außerdem werde ich einige Filter sowieso zusammenfassen (Es macht z.B. keinen Sinn einen Filter Contours und einen Contours-Filter zu haben.)

Außerdem sind die Filter von BaseImageFilter abgeleitet und haben die eigene Schnittstelle IFilter. So kann also jeder seinen eigenen Filter kreieren und hinzufügen.

Außerdem veröffentliche ich hier einfach die Fortschritte damit jeder damit arbeiten kann.

z.B. gibt es auch noch keine sinnvolle Namespace-Aufteilung, die IMHO aber inzwischen nötig ist. z.B. in Convolution, Morphology, Color usw.

Bis dahin. ;-) Viel Spass damit.

Probiers doch einfach mal aus.
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers