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

Koordinaten von Pixeln ermittlen

 

krisztian

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2009, 15:40     Titel: Koordinaten von Pixeln ermittlen
  Antworten mit Zitat      
Hallo,

Ich würde gern aus einem schwarz-weiß jpeg die Koordinaten der einzellnen Pixel auslesen.
Also das Ganze würde in etwa so aussehen, dass auf diesem Bild eine 1 Pixel dicke Linie ist.

Jetzt soll meinetwegen nur jedes 5te Pixel benutzt werden um mir von diesem 5ten Pixel die Koordinaten in X und Y zu geben. Das ganze dann in einer Matrix abgespeichert.

Ich habe noch nicht wirklich große Erfahrung mit Matlab und würde generell erst einmal gern wissen ob das so möglich ist wie von mir gedacht und wie in etwa dann mein Ansatz aussieht.

Grüße
krisztian


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 09.03.2009, 10:30     Titel:
  Antworten mit Zitat      
Moin,

wenn du das Bild mit
Code:
einliest, dann erhälst du als Rückgabe bereits eine Matrix. Auf die Elemente der Matrix kannst du dann ganz normal zugreifen.

Ich hoffe das hilft dir schon mal weiter...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
krisztian
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 12.03.09
Wohnort: Wien
Version: 7.1.0.246 SP3
     Beitrag Verfasst am: 12.03.2009, 13:26     Titel:
  Antworten mit Zitat      
Ja das hat mir etwas geholfen. Danke Smile
Ich hab nun:
Code:

close all;
f=imread('kreis.jpg');      % Bild laden
f1=imresize(f,0.5); % Downsample to a 1/5th of the size
f2=imresize(f1,2); %rezize

for i=1:1:40000
        if (f2(i) >= 10)
            f2(i)= 9;
            i=i+1;
        end
end

figure ('position', [800 670 200 200]); imshow(f);
title('Orginal','FontSize',12)

figure ('position', [30 180 500 100]); imshow(f1);
title('Klein','FontSize',12)

figure ('position', [400 670 200 200]); imshow(f2);
title('Vergrößert ohne interpolation','FontSize',12)

pause;
close all;

 


Damit hab ich die Punktezahl meiner Kontur etwas verringert (kleiner unddann wieder größer gemacht) und ich kann auslesen wo Punkte sind (immer wen in der Matrix ein Wert kleiner zehn steht)

Nur diese Werte würd ich nun gern aufrufen. Also in der Form:
-An Stelle 1234 der Matrix ist der eingetragene Wert kleiner 10
-also ist da ein Punkt
-der Punkt hat im Bild die Koordinaten x= 150; y=30

das bekomme ich irgendwie nicht hin.

Gibts da was in der Richtung was mir das gewünschte ausgibt?

Grüße
krisztian
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 12.03.2009, 13:51     Titel:
  Antworten mit Zitat      
wenn ich dich jetzt richtig verstanden habe, dann hilft dir vll folgendes:

Code:


ind=find(f2<10); % findet alle Einträge der Matrix kleiner 10
[A(:,1),A(:,2)]=ind2sub(size(f2),ind); % in A werden nun die x und y Koordinaten aller Punkte gespeichert
 

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
krisztian
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 12.03.09
Wohnort: Wien
Version: 7.1.0.246 SP3
     Beitrag Verfasst am: 20.03.2009, 18:37     Titel:
  Antworten mit Zitat      
Sorry dass die Antwort hat auf sich warten lassen. War die Zeit ohne Internet.

Danke für deinen Vorschlag. Ist wesentlich eleganter als meine Variante die im Moment so ausschaut:

Code:

close all;
f=imread('matti.jpg');      % Bild laden
f1=edge(f,'canny');
f2=~f1;
n=0;
Points=zeros(1,1); %eine leere Matrix wird angelegt
for i=1:1:40000  %40000 = 200*200 entspricht Bildgroesse
        if (f2(i) == 0)
                n=n+1;
                Points(n,1)=i-((i/200-(mod(i,200))/200)*200); %X-Koordinaten
                Points(n,2)=(i/200-(mod(i,200))/200)+1; %Y-Koordinaten
        end
end
 
[/code]

Danke nochmals.

Grüße
krisztian
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.