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

Matrix Werte aufzwingen

 

stratist9011
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2013, 12:33     Titel: Matrix Werte aufzwingen
  Antworten mit Zitat      
Hallo,

ich bin noch ziemlich neu in der Matlab-Programmierung und stehe gerade vor einem Problem was ich einfach nicht gelöst bekomme.
Ich habe eine 680x900 Matrix mit Werten zwischen 0 und 256 und will in dieser von einem Histogramm ausgehend nur Werte von 0 bis 30 zulassen ...
Hier meine Idee :

[i,j] = find(b ~= [0:25]);

for m = 1:length(i)
b(i(m),j(m)) = 256;
end

Leider gibt mir Matlab dann die Fehlermeldung, das die Dimensionen der Matrix für die Operation übereinstimmen müssen. Es wäre super wenn mir jemand vielleicht einen Tipp geben könnte wie es funktionieren könnte ...
Danke
Private Nachricht senden Benutzer-Profile anzeigen


Juliannn
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 13.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2013, 14:07     Titel: Matrix Wertproblem
  Antworten mit Zitat      
Hallo,

sollen die Werte angeglichen werden?
Also: 256 = 30, 128=15

Oder sollen alle Werte über 30 auf 30 gesetzt werden?

Grüße,
Julian
Private Nachricht senden Benutzer-Profile anzeigen
 
stratist9011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2013, 14:33     Titel:
  Antworten mit Zitat      
Hallo Julian,

ich will eigentlich erreichen das alle Werte der Matrix die außerhalb des Intervalls [0:30] liegen den Wert 256 erhalten.

Grüße,
Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
Juliannn
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 13.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2013, 14:58     Titel:
  Antworten mit Zitat      
Okey!
Warum dann nicht einfach eine Schleife wie diese unten?
Sollte funktionieren und wenn du fragen zur Anpassung hast nur her damit.

Code:


s=size(frame);
height=s(1);
width=s(2);

for x=1:1:width

for y=1:1:height  

    if frame(y,x)>30
       frame(y,x)=256;
    end
   
end

end

nframe=zeros(height,width,'uint8');
nframe(:) = frame(:);
imshow(nframe);

end

 


Julian
Private Nachricht senden Benutzer-Profile anzeigen
 
stratist9011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2013, 15:59     Titel:
  Antworten mit Zitat      
hm ... leider funktioniert das nicht. Wenn ich das im Editor mal durchlaufen lassen sagt mir Matlab : cant be evaluated because cell contains invalid statement Sad ... trotzdem danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.04.2013, 22:42     Titel:
  Antworten mit Zitat      
Hallo stratist9011,

Bitte poste im Forum immer eine Kopie der Fehlermeldung und nicht nur Teile daraus. Vorallem wäre es wichtig zu wissen, in welcher Zeile der Fehler auftritt, weil wir das nicht erraten können.

Es ist merkwürdig, dass Du Werte bis 30 zulassen möchtest und dies mit "find(b ~= [0:25])" testest. Mit "find(b > 30)" würde es eher klappen. Aber effizienter ist:
Code:
b(b > 30) = 256

Werte von 0 bis 256 sind übrigens ungewöhnlich. 0 bis 255 trifft man dagegen häufig, da dies der Wertebereich von UINT8-Zahlen ist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
stratist9011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2013, 12:02     Titel:
  Antworten mit Zitat      
Hallo Jan,

ah sorry habe gerade festgestellt, das ich 255 meine. Danke für den Hinweis !
Werde deinen zweiten Vorschlag jetzt mal versuchen umzusetzten melde mich dann nochmal wie es funktioniert hat ...

Grüße,
Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
stratist9011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2013, 14:02     Titel:
  Antworten mit Zitat      
Also hier ist jetzt mal das was ich gemacht habe. Klappt jetzt erstmal so wie es sollte ...
Danke hat mir sehr geholfen ...


Code:

Test=imread('Wasser.jpg'); % Bild einlesen
a=rgb2gray(Test);              % Graubild erstellen
b=imadjust(a,[0;1],[0;1]);  % Kontrast von X erhöhen
whos b
b(b>30)=255;                    % Alle Werte oberhalb 30 auf 255 setzen
imshow(b);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
stratist9011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2013, 14:10     Titel:
  Antworten mit Zitat      
Und direkt die nächste Frage. Gibt es Filterfunktionen die aus einem Bild einen bestimmten Wert rausfiltern und mir diese dann in Form einer Matrix ausgeben ??? ...
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 14.04.2013, 19:33     Titel:
  Antworten mit Zitat      
aus einem Bild einen Wert filtern? Wie soll das gehen?
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
stratist9011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2013, 15:23     Titel:
  Antworten mit Zitat      
Naja ich will ein Bild einladen und dann eine Struktur dort heraus filtern (d.h das Bild soweit weiß machen bis nur diese Struktur übrig bleibt). Der Vorteil dabei ist, das die Strukturkanten bzw. die Markierungen auf der Struktur tief schwarz sind.
Wenn ich nun das Bild in Matlab einbinde und es soweit bearbeite wie ich es bisher mit dem Code tue, bleibt nur die Struktur übrig.

Ich hatte zuvor zwei Varianten über die Image Processing Toolbox probiert die aber leider keine guten Ergebnisse lieferten, weshalb ich es jetzt auf diese Art gemacht habe.
Der nächste Schritt soll jetzt sein aus der verbliebenen Struktur eine Punktwolke mit örtlichen Maxima zu erzeugen, dort einen Mittelpunkt zu finden und dann eine Gerade dort durch zu legen.
Leider weiß ich bisher keinen Weg eine solche Punktwolke zu erzeugen.
Ich hoffe das konnte zum Verständnis meines Problems beitragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 15.04.2013, 16:48     Titel:
  Antworten mit Zitat      
Ein wenig. irgendwie ist es etwas verworren, mal willst du ne Struktur finden, dann nur ein paar Maxima, dann eine Grade...
Mach vielleicht mal ein paar Skizzen, vielleicht kann man dann gezielter helfen.
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
stratist9011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2013, 16:54     Titel:
  Antworten mit Zitat      
Also das ist jetzt vereinfacht mal eine Skizze wie ich sie derzeit erhalte ...
Jetzt will ich in meinem nächsten Schritt, dieses Bild soweit runterbrechen das nur noch Stellen übrig bleiben wo sehr viele schwarze Bildpunkte existieren.

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  46.53 KB
 Heruntergeladen:  387 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 16.04.2013, 00:32     Titel:
  Antworten mit Zitat      
Also geht es dir nicht um die Form (gebogene Linie) sondern nur um Maximas (da wo du öfters gekrakelt hast)?
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
stratist9011
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 12.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2013, 12:51     Titel:
  Antworten mit Zitat      
Genau, habe mich da vorher etwas umständlich ausgedrückt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 2025 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.