www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - Matlab Bildbearbeitung
Matlab Bildbearbeitung < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Matlab Bildbearbeitung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:02 Do 04.02.2010
Autor: JanaS

Hallo!

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Ich habe einige Fragen zur Bildbearbeitung in Matlab.

1. Gehe ich recht in der Annahme, dass ein beliebiges Bild immer das Format HöhexBreitex3 hat? Also z.B. 200x300x3? Und die 3 deshalb wegen der Farben rot, gelb und blau?!

2. Wenn ich ein Bild habe im Format 200x300x3 und will das verändern, wie gehe ich da vor? Ich möchte es einmal dunkler machen. Und dann möchte ich das gleiche (unveränderte) Urpsrungsbild noch in Graustufen darstellen mit der Formel Y=0.3R+0.59G+0.11B.

Dunkler machen bedeutet doch, dass ich die einzelnen Elemente der Matrix verringere (Matrix mit nur Nullen = schwarzes Bild). Oder? Kann ich dann einfach eine Matrix definieren mit beispielsweise 20 an allen Stellen und die von der Ursprungsmatrix abziehen? Wie verhindere ich, dass die Matrix an sowieso schon schwarzen/dunklen Stellen negative Werte bekommt?

Und zu den Graustufen: Ich habe 3 Matrizen, die ich zu einer addiere, indem ich 0.3*1.Matrix + 0.59*2.Matrix + 0.11*3.Matrix rechne?

Vielen Dank schonmal!

Viele Grüsse von Jana

        
Bezug
Matlab Bildbearbeitung: Kommentare
Status: (Antwort) fertig Status 
Datum: 18:47 Do 04.02.2010
Autor: Infinit

Hallo Jana,
der Einfachheit halber habe ich meine Antworten in Deine Fragen eingegliedert.
Viele Grüße,
Infinit

> Hallo!
>  
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
>  
> Ich habe einige Fragen zur Bildbearbeitung in Matlab.
>  
> 1. Gehe ich recht in der Annahme, dass ein beliebiges Bild
> immer das Format HöhexBreitex3 hat? Also z.B. 200x300x3?
> Und die 3 deshalb wegen der Farben rot, gelb und blau?!

Ja, das sind die drei Farbauszüge rot, grün und blau, die als Matrizen behandelt werden.

>  
> 2. Wenn ich ein Bild habe im Format 200x300x3 und will das
> verändern, wie gehe ich da vor? Ich möchte es einmal
> dunkler machen. Und dann möchte ich das gleiche
> (unveränderte) Urpsrungsbild noch in Graustufen darstellen
> mit der Formel Y=0.3R+0.59G+0.11B.
>  
> Dunkler machen bedeutet doch, dass ich die einzelnen
> Elemente der Matrix verringere (Matrix mit nur Nullen =
> schwarzes Bild). Oder? Kann ich dann einfach eine Matrix
> definieren mit beispielsweise 20 an allen Stellen und die
> von der Ursprungsmatrix abziehen? Wie verhindere ich, dass
> die Matrix an sowieso schon schwarzen/dunklen Stellen
> negative Werte bekommt?

Ja, eine einfache Bildverarbeitung kannst Du so machen. Je höher der Wert in der entsprechenden Matrize ist, umso intensiver erscheint die jeweilige Farbe. Du änderst damit also die Farbintensität und nicht die Helligkeit. Negative Werte machen hier, wie Du schon geschrieben hast, keinen Sinn. Du musst also beim Rechnen darauf achten, dass der Minimal- und der Maximalwert nicht überschritten werden.

>  
> Und zu den Graustufen: Ich habe 3 Matrizen, die ich zu
> einer addiere, indem ich 0.3*1.Matrix + 0.59*2.Matrix +
> 0.11*3.Matrix rechne?
>

Ja, das ist die bekannte Formel, um aus den drei Farbauszügen die Helligkeit zu bestimmen. Auch hier musst Du auf die Begrenzung des Wertebereichs achten.
  

> Vielen Dank schonmal!
>  
> Viele Grüsse von Jana


Bezug
                
Bezug
Matlab Bildbearbeitung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 19:21 Do 04.02.2010
Autor: JanaS


> Hallo Jana,
> der Einfachheit halber habe ich meine Antworten in Deine
> Fragen eingegliedert.
> Viele Grüße,
> Infinit
>  
> > Hallo!
>  >  
> > Ich habe diese Frage in keinem Forum auf anderen
> > Internetseiten gestellt.
>  >  
> > Ich habe einige Fragen zur Bildbearbeitung in Matlab.
>  >  
> > 1. Gehe ich recht in der Annahme, dass ein beliebiges Bild
> > immer das Format HöhexBreitex3 hat? Also z.B. 200x300x3?
> > Und die 3 deshalb wegen der Farben rot, gelb und blau?!
>  
> Ja, das sind die drei Farbauszüge rot, grün und blau, die
> als Matrizen behandelt werden.
> >  

> > 2. Wenn ich ein Bild habe im Format 200x300x3 und will das
> > verändern, wie gehe ich da vor? Ich möchte es einmal
> > dunkler machen. Und dann möchte ich das gleiche
> > (unveränderte) Urpsrungsbild noch in Graustufen darstellen
> > mit der Formel Y=0.3R+0.59G+0.11B.
>  >  
> > Dunkler machen bedeutet doch, dass ich die einzelnen
> > Elemente der Matrix verringere (Matrix mit nur Nullen =
> > schwarzes Bild). Oder? Kann ich dann einfach eine Matrix
> > definieren mit beispielsweise 20 an allen Stellen und die
> > von der Ursprungsmatrix abziehen? Wie verhindere ich, dass
> > die Matrix an sowieso schon schwarzen/dunklen Stellen
> > negative Werte bekommt?
>  
> Ja, eine einfache Bildverarbeitung kannst Du so machen. Je
> höher der Wert in der entsprechenden Matrize ist, umso
> intensiver erscheint die jeweilige Farbe. Du änderst damit
> also die Farbintensität und nicht die Helligkeit. Negative
> Werte machen hier, wie Du schon geschrieben hast, keinen
> Sinn. Du musst also beim Rechnen darauf achten, dass der
> Minimal- und der Maximalwert nicht überschritten werden.

Vielen Dank erstmal!

Irgendwie schaffe ich es nicht, die Matrizen zu subtrahieren. Ich habe jetzt das Bild in 3 Matrizen (200,300) zerlegt. Dann habe ich eine Matrix definiert, (200,300), die überall 20 stehen hat. Kann ich jetzt nicht einfach diese Matrizen subtrahieren? Die haben doch die gleiche Dimension. Warum geht das nicht? Und wie kann ich verhindern, dass negative Werte in der Matrix auftauchen?
Achso, kann das Subtraktionsproblem daran liegen, dass das Bild uint8 array ist und die 20er Matrix dubble array?

>> niklas1D=niklas1-D
??? Error using ==> -
Function '-' not defined for variables of class 'uint8'.

niklas1 ist die erste Matrix des Bildes, D ist die 20er Matrix.

> >  

> > Und zu den Graustufen: Ich habe 3 Matrizen, die ich zu
> > einer addiere, indem ich 0.3*1.Matrix + 0.59*2.Matrix +
> > 0.11*3.Matrix rechne?
>  >

>
> Ja, das ist die bekannte Formel, um aus den drei
> Farbauszügen die Helligkeit zu bestimmen. Auch hier musst
> Du auf die Begrenzung des Wertebereichs achten.
>
> > Vielen Dank schonmal!
>  >  
> > Viele Grüsse von Jana
>  


Bezug
                        
Bezug
Matlab Bildbearbeitung: Tipp
Status: (Antwort) fertig Status 
Datum: 19:34 Do 04.02.2010
Autor: Infinit

Hallo Jana,
üblicherweise rechnet man in diesem Umfeld mit Integerwerten, was aber nicht unbedingt sein muss. Auf jeden Fall sollten aber die Arrays vom gleichen Typ sein.
Das Verhindern negativer Zahlen geht nur mit einer kleinen if-Abfrage.
Ich kenne die Syntax von Matlab nicht genau, aber so etwas wie
if (x > y then x-y else 0)
sollte weiterhelfen.
Viele Grüße,
Infinit

Bezug
                                
Bezug
Matlab Bildbearbeitung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 19:39 Do 04.02.2010
Autor: JanaS


> Hallo Jana,
> üblicherweise rechnet man in diesem Umfeld mit
> Integerwerten, was aber nicht unbedingt sein muss. Auf
> jeden Fall sollten aber die Arrays vom gleichen Typ sein.
> Das Verhindern negativer Zahlen geht nur mit einer kleinen
> if-Abfrage.
> Ich kenne die Syntax von Matlab nicht genau, aber so etwas
> wie
>  if (x > y then x-y else 0)

> sollte weiterhelfen.
> Viele Grüße,
> Infinit

Ich habe gerade herausgefunden, dass ich die Matrix als double definieren muss, um + und - rechnen zu können. Das habe ich jetzt erstmal gemacht. Mit dem if then else muss ich nochmal überlegen, wie ich das am besten schreibe. Danke schonmal!

Bezug
                                        
Bezug
Matlab Bildbearbeitung: Differenz
Status: (Antwort) fertig Status 
Datum: 19:57 Do 04.02.2010
Autor: Infinit

Hallo Jana,
bei dem von Dir angegebenen Befehl kann ich keine Differenzbildung erkennen. Arbeitest Du wirklich mit Matrizen?
Viele Grüße,
Infinit

Bezug
                                                
Bezug
Matlab Bildbearbeitung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 20:17 Do 04.02.2010
Autor: JanaS


> Hallo Jana,
> bei dem von Dir angegebenen Befehl kann ich keine
> Differenzbildung erkennen. Arbeitest Du wirklich mit
> Matrizen?
>  Viele Grüße,
> Infinit  

Hallo Infinit,

die Differenzbildung habe ich hinbekommen. Ich habe erst das Bild von uint8 in double array umgewandelt (niklas = double(niklas) + 1), dann die Matrix mit Einsen in double array (IMG = double(IMG) + 1). Dann kann ich niklas-IMG (niklasdunkel = niklas - 10*IMG) rechnen und bekomme eine neue Matrix heraus. Allerdings mit teilweise negativen Werten, weil meine if-Abfragen alle nicht funktionieren. :-(.

Ich habe versucht:
if niklas - 10*IMG < 0
niklasdunkel = 0
end
niklasdunkel = niklas - 10*IMG;

Aber da kommen genau die Werte heraus, die sich rechnerisch ergeben. Nur meine if-Abfrage wird ignoriert.

Ich bin völliger Neuling beim Programmieren und noch stellt sich für mich alles als höllisch kompliziert dar...

Viele Grüsse, Jana

Bezug
                                                        
Bezug
Matlab Bildbearbeitung: Antwort
Status: (Antwort) fertig Status 
Datum: 16:03 Fr 05.02.2010
Autor: Frasier

Hallo Jana,
du könntest ganz normal
niklasdunkel = niklas - 10*IMG;
berechnen, und anschließend mit
niklasdunkel(niklasdunkel<0)=0;
alle negativen Elemente zu 0 setzen.
Kommst du damit zurecht?
lg
F.

Bezug
                                                                
Bezug
Matlab Bildbearbeitung: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:16 So 07.02.2010
Autor: JanaS

Super! Vielen Dank für Eure Hilfe! Ich habe es sogar geschafft, das zu einem Programm zu verwursten, so dass das Bild automatisch eingelesen wird, dunkler gemacht wird und mit neuem Namen gespeichert wird.
Für Euch ist das wahrscheinlich nichts besonderes, aber für mich ist das ein grosser Erfolg, weil ich ÜBERHAUPT NICHT programmieren kann...

Jetzt muss ich das Bild nur noch in Grautöne umwandeln, aber das dürfte hoffentlich nicht so schwer sein.

Viele Grüsse von Jana

Bezug
                                                                        
Bezug
Matlab Bildbearbeitung: Prima
Status: (Antwort) fertig Status 
Datum: 11:39 So 07.02.2010
Autor: Infinit

Hallo Jana,
das ist doch prima, herzlichen Glückwunsch.
Wenn Du mit der Grautonwandlung das Umsetzen in ein Schwarz-Weiss-Bild meinst, dann ist das nicht so schwer. Die Gleichung für die Helligkeit Y kennst Du ja bereits.
Eine kleine Bemerkung am Rande: Jedes Bild besteht ja aus Pixeln, und jedes dieser Pixel wird durch ein Farbtripel aus Rot, Grün und Blau beschrieben. Wenn Du Dir die Y-Gleichung anschaust, stellst Du fest, dass es mehrere Farbkombinationen geben kann, die zum gleichen Helligkeitseindruck führen.
Viele Grüße,
Infinit

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]