Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 09, 2025 20:25

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Kniffelige Analyseaufgabe
BeitragVerfasst: Mo Jan 21, 2008 19:27 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Im Rahmen einer Belegarbeit soll ich ein Algorythmus entwickeln, der die Anzahl der Pixel einer jeweiligen Fläche zählt.
Dabei ist das bild ziemlich verrauscht und es soll zwar nicht grob geschätzt sein aber auch nicht 100% korrekt.

Meine momentane Idee sieht wie folgt aus.
1.erstelle das bild nochmal(bild3) und erstelle ein leeres bild(bild2)
2.errechne aus den ersten 3x3 pixel(aus bild1) ein mittelwert(erster pixel ist der erste nicht in bild 3 schwarze pixel)
3.gehe auf x achse nach rechts(wenn x=width,dann y++ und x=0)
4.prüfe ob pixel auf 3. bild schwarz ist, wenn ja dann schritt 3
5a.ist wert<mittelwert+tolleranz und wert>mittelwert-tolleranz, dann fläche[n].count++ und pixel im 3. bild schwarz färben
5b.wenn nicht im tolleranzbereich, dann x=0 und y++(wenn y=height dann Schritt6)
6.gehe bild3 punkt für punkt durch und überall wo ein schwarzer punkt ist und ein schwarzer punkt in bild2, dann setze in bild2 den ermittelten grauwert
7.wenn anzahl der gezählten pixel<>bildanzahl ist dann Schritt2

Wie würdet ihr ran gehen ?

Bild

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 21, 2008 21:34 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Um das Rauschen wegzukriegen:
Ein paar mal Erosion:
Du hast eine 3x3-Matrix, die Mitte ist dein "Hotspot". Dieser Hotspot über alle Pixel des Quellbildes bewegen (Also x, y und die Channel) und in's Zielbild das jeweilige Minimum der 9 Matrixpixel schreiben.
Dann ein paar mal Dilatation:
Das selbe, bloß das Maximum der Pixel nehmen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 21, 2008 22:52 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Prima funktioniert bei sowas auch fourier-transformation und abschneiden hoher frequenzen bzw. wavelet trafos und selbiges. das entrauscht ganz massiv - im wesentlichen macht man dabei aber nur einen tiefpassfilter, wenn du also eine geschickte faltung verwendest (diskrete wavelet-trafos sind faltungen), wirst Du zumindest schonmal das rauschen los -- sprich genau das, was alibi empfohlen hat, mit dem vorteil, daß Du es auf diese weise theoretisch viel leichter begründen kannst.
wenn das bild mal entrauscht ist, erstellst Du ein histogramm und fischt dir cluster heraus - ab dem zeitpunkt hast Du ne ahnung über die verteilung der farben und deren pixel-häufigkeit - wenn flächen immer unterschiedliche farben haben, wie in deinem bild, bist du damit bereits fein raus. wenn du auch noch verschiedene flächen mit gleicher farbe unterscheiden musst, wirds schwieriger.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 21, 2008 23:38 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
erst falten wie bereits von den Vorpostern beschrieben, dann eine Zauberstab implementierung drüberlaufen lassen. Wie genau die funktionieren soll hängt von deinen genauen anforderungen ab. Du kannst den farbunterschied entweder auf einen willkürlichen Anfangspunkt innerhalb der Fläche, auf den Durchschnitt der bereits verarbeiteten Pixel, oder auf bereits verarbeitete Nachbarn beziehen.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 22, 2008 02:03 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
Bei dem bild gibt es zwei Teilprobleme:

Rauschen kann man grundsätzlich nicht entfernen ohne auch informationen zu vernichten. In diesem Fall ist der tiefpass wohl eher das geringer übel. eine 3x3 konvolution matrix (alle werte = 1/9 ) sollte es tun.

Farben zuordnen:
Die beste Möglichkeit wäre ein Histogramm zu erstellen, dieses anschließen mit einem tiefpass zu glätten. Die Maximalwerte sind die Farben, die Minimalwerte die Stellen , an denen die Farben von einander getrennt werden.

Der Zauberstab ist für die aufgabe nur wenig brauchbar, da man wahrscheinlicher weise eine falsche Tolleranz wählt, und auch das ergebnis vonm gewähltem startpunk aus abhängt

_________________
Lumina plattform unabhängige GLSL IDE


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]