WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Pixelfarbe ändern

 

Snowdog
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 12.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2010, 12:46     Titel: Pixelfarbe ändern
  Antworten mit Zitat      
Hallo ich hab ein Problem beim einfärben von Pixel in meinem RGB-Image

mein Code bisher
Code:

md = 591;
nd = 763;
M = 70;
N = 250;
AIcut = imread('angezeigtesKesselausschnitt.bmp');
ms = [25,0,0,0,0];
ns = [80,0,0,0,0];
k_Gw = 4;
Bl = [15,25,35,58,58,66,66,70,70,70,70,70,70,70,70,70,70,70,70,35,35,35,35,35,35,35,35,39,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
      0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];

%function AIKurv = Kurvendarstellung_vertikal(md,nd,M,N,AIcut,ms,ns,,k_Gw,Bl)
if Bl == 0
    break
end

for i = 1
    mKs = md - (M-ms(i)); %Startzeile Kurve i
    nKs = nd + (ns(i)-1); %Startspalte Kurve i
    m = mKs;
    n = nKs;
    switch i
        case 1 %1. Kurve
            AIcut(m,n,:) = [000 255 000]; %Grün
        case 2 %2. Kurve
            AIcut(m,n,:) = [255 255 000]; %Gelb
        case 3 %3. Kurve
            AIcut(m,n,:) = [160 032 240]; %Purple
        case 4 %4. Kurve
            AIcut(m,n,:) = [255 000 255]; %Magenta
        case 5 %5. Kurve
            AIcut(m,n,:) = [196 196 196]; %Grau
    end
    imtool(AIcut)
    %1. Linie
    mstart = m-1;
    mstop = m - Bl(i,1)+1;
    switch i
        case 1 %1. Kurve
            AIcut(mstop:mstart,n,:) = [000 255 000]; %Grün
        case 2 %2. Kurve
            AIcut(mstop:mstart,n,:) = [255 255 000]; %Gelb
        case 3 %3. Kurve
            AIcut(mstop:mstart,n,:) = [160 032 240]; %Purple
        case 4 %4. Kurve
            AIcut(mstop:mstart,n,:) = [255 000 255]; %Magenta
        case 5 %5. Kurve
            AIcut(mstop:mstart,n,:) = [196 196 196]; %Grauend
    end
   
   
   
   
   
    imtool(AIcut)
             
end


 


Zuerst wähle ich den Startpunkt meiner 1. Kurve und Färbe ihn Grün. Das klappt auch. Dann errechne ich über die 1. Bahnlänge , welche hier 15 ist mstop und mstart aus. diese setzte ich nun ein um mir die erste Bahn Grün zu färben.
Dabei kommt die Fehlermeldung

??? Subscripted assignment dimension mismatch.

Error in ==> Kurvendarstellung_vertikal at 49
AIcut(mstop:mstart,n,Smile = [255 255 255]; %Grün

mein AIcut ist aber gleich 591x1012x3
somit verstehe ich die Fehlermeldung nicht.

Ich denke mal der Fehler ist nicht schwer zu beheben, wis aber nicht woran es liegt.

Wenn ich anstatt [000 255 000] einfach nur eine Dimension eingeben z.B. 255 für weiß dann funktionniert es. Nur halt nicht mit Grün.

Kann mir bitte jmd helfen.

Gruß Snowdog
Private Nachricht senden Benutzer-Profile anzeigen


Snowdog
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 12.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2010, 13:54     Titel:
  Antworten mit Zitat      
Es funktioniert auch wenn ich die Einfärbung der Matrizen einzeln vornehme

Code:

switch i
        case 1 %1. Kurve Grün
            AIcut(m,nstart:nstop,1) = 0;
            AIcut(m,nstart:nstop,2) = 255;
            AIcut(m,nstart:nstop,3) = 0;
 


Das möchte ich aber nicht. Kann mir nicht vorstellen, dass das nicht auch anders geht da es ja auch klappt wenn ich nur ein Pixel angebe und nicht eine Reihe oder Spalte.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2010, 14:05     Titel:
  Antworten mit Zitat      
Hallo,

wenn (einem Teil) einer Matrix Werte zugewiesen werden sollen, dann wird eine Matrix derselben Größe benötigt, oder ein Skalar (deine zweite Variante).
Wenn du bei der ersten Variante bleiben möchtest, müsstest du mit repmat eine Matrix der entsprechenden Größe erzeugen oder eine for-Schleife über die erste Komponente laufen lassen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Snowdog
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 12.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2010, 17:57     Titel:
  Antworten mit Zitat      
Sowas habe ich mir schon gedacht, danke für die Antwort.

Gruß
Jörg
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.