www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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
Dt. Schulen im Ausland: Mathe-Seiten:

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

image addieren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:25 Di 16.02.2010
Autor: JanaS

Hallo!

Eigentlich macht das Programmieren ja Spass, aber ein Schritt vor und zwei zurück ist irgendwie nervig :-(. Ich will ein Bild rotieren, ohne rot90 oder so zu verwenden. Immerhin habe ich es geschafft, dass das Bild gedreht wird, nur sind die Farben jetzt etwas komisch...



Warum funktioniert meine if-Abfrage nicht?
??? Error: File: C:\ Programme\ MatlabR12\ work\ img_ rotate.m Line: 16 Column: 4 (das ist hier: if z = 1)
Assignment statements cannot produce a result.
Ohne diese Abfrage geht es nicht, weil dann ein Fehler kommt, wenn ich z.B. ein graues Bild einlese, was ja aus einer Matrix (x,y) besteht.

Und warum kann ich nicht rechnen img = img_ 1 + img_ 2 + img_ 3? Das Bild, dass dabei herauskommt, besteht nur aus rot, gelb und blau, aber nicht übereinandergelegt. Wie muss ich das rechnen, damit die drei Matrizen wieder übereinander gelegt werden?

Vielen Dank und viele Grüsse von Jana


PS: img_ 1 hat eigentlich kein Leerzeichen, aber sonst wird das hier sehr komisch angezeigt, deshalb habe ich überall zwischen img_ und der Zahl ein Leerzeichen eingefügt

        
Bezug
image addieren: Antwort
Status: (Antwort) fertig Status 
Datum: 16:31 Di 16.02.2010
Autor: Frasier

Hallo Jana,
die Dinge, die mir auffallen:
-in die erste Zeile (die mit function...) gehört am Ende kein Semikolon,
-du nennst sowohl das, was an img_rotate übergeben wird als auch die Rückgabe img. Das sollte man nicht machen.
-du hast schon wieder vergessen, dass man mit == auf Gleichheit prüft, nicht mit =,
-so wie du die drei Ebenen von img in [mm] img_1, img_2 [/mm] und [mm] img_3 [/mm] aufteilst musst du am Enden natürlich die [mm] img_1, img_2 [/mm] und [mm] img_3 [/mm] wieder auf 3 Ebenen verteilen und nicht einfach in einer Ebene addieren.
lg
F.

Bezug
                
Bezug
image addieren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 18:01 Di 16.02.2010
Autor: JanaS


> Hallo Jana,
>  die Dinge, die mir auffallen:
>  -in die erste Zeile (die mit function...) gehört am Ende
> kein Semikolon,
>  -du nennst sowohl das, was an img_rotate übergeben wird
> als auch die Rückgabe img. Das sollte man nicht machen.
>  -du hast schon wieder vergessen, dass man mit == auf
> Gleichheit prüft, nicht mit =,
>  -so wie du die drei Ebenen von img in [mm]img_1, img_2[/mm] und
> [mm]img_3[/mm] aufteilst musst du am Enden natürlich die [mm]img_1, img_2[/mm]
> und [mm]img_3[/mm] wieder auf 3 Ebenen verteilen und nicht einfach
> in einer Ebene addieren.
>  lg
>  F.


Hallo Frasier!

Warum gehört in die erste Zeile kein Semikolon hin? An der Funktion ändert das aber nichts, die anderen 3 Unterprogramme laufen.

Dass die Eingabe und die Rückgabe beide img heissen, war in der Aufgabenstellung vorgegben. Deshalb habe ich die so genannt.

Das == habe ich tatsächlich wieder vergessen, sorry! Aber das ändert an der Fehlermeldung nichts :-(. Mit einem grauen Bild als Eingabe bekomme ich folgende Fehlermeldung:

??? Index exceeds matrix dimensions.



Und es ist mir schon klar, dass ich die Bilder auf unterschiedlichen Ebenen addieren muss (ich habe sie ja auch aus unterschiedlichen Ebenen geholt), aber wie geht das? Ich habe versucht, aus img_ 1(x,y) ein img_ 1(x,y,1) zu machen, aber das hat nicht geklappt.

Viele Grüsse, Jana

Bezug
                        
Bezug
image addieren: Antwort
Status: (Antwort) fertig Status 
Datum: 18:27 Di 16.02.2010
Autor: Frasier

Hallo Jana,
das Semikolon in der Funktionsdefinition ist einfach überflüssig. Man kann es hinschreiben, man kann es weglassen.
Wenn du eine neue Matlab-Version bekommen hast, wird dir der Editor das auch als Warnung angeben.
Dass Eingabe und Ausgabe gleich heißen ist nicht verboten, aber schlecht lesbar. Ich würde das nicht machen.
Das sich die Fehlermeldung auf graue Bilder bezieht habe ich überlesen.
Ein RGB-Bild ist ja eine Höhe x Breite x 3 - große Matrix.
Ein graues Bild hat nur eine Ebene, ist also Höhe x Breite x 1 groß. Dann kann man natürlich nicht auf die 2. oder 3. Ebene zugreifen.
Du musst also vor den Zeilen
1: img_2 = img(:,:,2);
2: img_3 = img(:,:,3);

prüfen, ob es img(:,:,2) und img(:,:,3) überhaupt gibt.
Im Fall eines RGB-Bildes kannst du am Ende die Matrizen so zusammensetzen
1: img(:,:,1)=img_1;
2: img(:,:,2)=img_2;
3: img(:,:,3)=img_3;

lg
F.

Bezug
                                
Bezug
image addieren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 19:00 Di 16.02.2010
Autor: JanaS


> Hallo Jana,
>  das Semikolon in der Funktionsdefinition ist einfach
> überflüssig. Man kann es hinschreiben, man kann es
> weglassen.
>  Wenn du eine neue Matlab-Version bekommen hast, wird dir
> der Editor das auch als Warnung angeben.
>  Dass Eingabe und Ausgabe gleich heißen ist nicht
> verboten, aber schlecht lesbar. Ich würde das nicht
> machen.
>  Das sich die Fehlermeldung auf graue Bilder bezieht habe
> ich überlesen.
>  Ein RGB-Bild ist ja eine Höhe x Breite x 3 - große
> Matrix.
>  Ein graues Bild hat nur eine Ebene, ist also Höhe x
> Breite x 1 groß. Dann kann man natürlich nicht auf die 2.
> oder 3. Ebene zugreifen.
>  Du musst also vor den Zeilen
> [mm][code]img_2[/mm] = img(:,:,2);
>  [mm]img_3[/mm] = img(:,:,3);[/code]
>  prüfen, ob es img(:,:,2) und img(:,:,3) überhaupt gibt.
>  Im Fall eines RGB-Bildes kannst du am Ende die Matrizen so
> zusammensetzen
>  [mm][code]img(:,:,1)=img_1;[/mm]
>  [mm]img(:,:,2)=img_2;[/mm]
>  [mm]img(:,:,3)=img_3;[/code][/mm]
>  lg
>  F.


Hallo Frasier,

so wie Du vorgeschlagen hast, die Bilder wieder zusammenzusetzen, habe ich das auch probiert. Aber das klappt nicht. Ich bekomme ein total rotes Bild (img ist gerade ein Bild mit Tiefe 3).

Und was die graue Variante angeht: ich habe ja eine Abfrage gemacht

[x y z]=size(img);                                                          

[mm] img_0 [/mm] = uint8(zeros(x,y));                                                  
[mm] img_0 [/mm] = [mm] double(img_0); [/mm]                                                      

if z == 1                                                                    
    [mm] img_2 [/mm] = [mm] img_0; [/mm]
    [mm] img_3 [/mm] = [mm] img_0; [/mm]
elseif z == 2                                                                                                                  
    [mm] img_3 [/mm] = [mm] img_0; [/mm]
end

Ich habe also die Grösse der Matrix bestimmt mit size und da ist z entweder 1, 2 oder 3. 1 bei grauen Bilder, 3 bei Farbbildern und 2 bei eventuell schon veränderten Bildern mit Tiefe 2.
Dann habe ich eine Matrix (x,y) erstellt mit lauter Nullen, damit die anderen Abfragen einfach durchlaufen können und ich da nicht noch unterscheiden muss. Wenn also ein Bild nur die Tiefe 1 oder 2 hat, ist die restliche oder sind die restlichen Matrizen einfach Matrizen mit Nullen. Und abgefragt habe ich indem ich if == z gefragt habe. Aber das wirft ja die Fehlermeldung raus...

Verwirrte Grüsse, Jana

Bezug
                                        
Bezug
image addieren: Antwort
Status: (Antwort) fertig Status 
Datum: 09:29 Mi 17.02.2010
Autor: Frasier

Hi Jana,
du kannst den Quelltext zwischen [ code] und [ /code] setzen, ohne die Leerzeichen. Dann wird er nicht umformatiert.

Du hast zwar die Abfrage gemacht, aber erst nachdem du mit
1: img_2 = img(:,:,2);
2: img_3 = img(:,:,3);

auf die 2. und 3. Ebene zugreifst. Und bei einem grauen Bild geht das eben in die Hose.
Du musst zu erst die Abfrage machen, dann kannst du den Zugriff auf nicht vorhandene Elemente vermeiden.
lg
F.

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


^ Seitenanfang ^
www.vorhilfe.de