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

Probleme mit eps-Dateien

 

Pantoffeltier
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.03.09
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 07.03.2009, 17:46     Titel: Probleme mit eps-Dateien
  Antworten mit Zitat      
Hallo Leute!

Ich versuche zur Zeit ein Programm zu schreiben, dass Codemarken automatisch aus einer Datei erstellt. Das ist quasi ein Barcode-Band, das um einen schwarzen Punkt gewickelt wird (so, wie es im Bild untitledneu_Kopie.jpg dargestellt ist). Dazu muss ich Sektoren erstellen, und diese mit "fill" füllen. Da die Ränder störend sind, habe ich sie per "EdgeColor" in der jeweiligen Farbe definiert.

Nun kommen aber die Probleme: Die erzeugte Datei wird als Figure von Matlab korrekt angezeit. Das Speichern aus dem Figure-Fenster funktioniert auch ohne Probleme.
Will ich aber die selbe Datei aus dem Programm mit print('-depsc','Kreissektor6'); oder auch mit dem saveas(gcf, Kreissektor, eps) speichern, bekomme ich nur einen schwarzen Kreis (Markenprobe2_Fehler.jpg)...

Woran liegt das? Der Ablauf muss unbedingt automatisch erfolgen, weil niemand Lust hat bei 200 Marken immer im Figire-Fenster auf Speichern zu klicken und einen Namen einzutragen ....

Ich hoffe irgendjemand kann mir helfen Sad
Viele Grüße
Anja

untitledneu Kopie.jpg
 Beschreibung:

Download
 Dateiname:  untitledneu Kopie.jpg
 Dateigröße:  19.21 KB
 Heruntergeladen:  820 mal
Markenprobe2_Fehler.jpg
 Beschreibung:

Download
 Dateiname:  Markenprobe2_Fehler.jpg
 Dateigröße:  12.98 KB
 Heruntergeladen:  822 mal
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2009, 18:29     Titel:
  Antworten mit Zitat      
Versuch doch mal das neuere Level 2 PS:
Code:
.[/code]
 
Pantoffeltier
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.03.09
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 08.03.2009, 00:25     Titel:
  Antworten mit Zitat      
nein, das wird leider auch nur ein schwarzer Kreis Sad

Das Phänomen tritt übrigens nur auf, wenn ich dem Rand die Farbe weiß oder schwarz zuweise. Wähle ich stattdessen rot, ist auch in der *.eps alles so wie es sein soll ... Rolling Eyes

und mit "none" funktioniert es auch nicht, falls das der nächste Vorschlag gewesen wäre...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2009, 09:42     Titel:
  Antworten mit Zitat      
Kannst du mal einen kleinen Beispielcode erstellen bei dem das auftritt? Vielleicht hilft es, mal einen anderen Renderer zu versuchen.
 
Pantoffeltier
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.03.09
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 08.03.2009, 11:04     Titel:
  Antworten mit Zitat      
nun, so sieht der gute aus ...

Code:
clc;
close('all')
global ax
ax=[inf -inf inf -inf];
deg=pi/180;
wkl=-30;
O=[0;0];

Code=[1 1 0 0 1 0 1 1 1 0 0 1];

for i = 1:12

    alpha=(i-1)*wkl*deg;
    beta=i*wkl*deg;

    A=[cos(alpha);sin(alpha)];
    B=[cos(beta);sin(beta)];
   
    if Code(i)==1
        Farbe = 'w';
        Inhalt = 1;
    else
        Farbe = 'k';
        Inhalt = 0;
    end    
   
    K=Kreisbogen(B,O,A,0, Farbe ,'linewidth',1);                              
    %Zeichnen des Kreissektor
       
    drawPolygon(@fill,[O K O], Inhalt*[1 1 1],'EdgeColor', Farbe);          
    hold('on')

    t = 0:0.1:2*pi;
    x = (2/3)*sin(t);
    y = (2/3)*cos(t);
    fill(x,y,'w', 'EdgeColor', 'w');

    xx = (1/3)*sin(t);
    yy = (1/3)*cos(t);
    fill(xx,yy,'k', 'EdgeColor', 'k');

    hold('on');
    hold('on');
    axis('off');
    axis('equal');
    axis(ax);
       
    Schrift([0.9;-0.9],'325','HorizontalAlignment','center','VerticalAlignment','middle');
    print('-depsc2','Kreissektor7');
    %print('-djpeg','-r200','Markenprobe2.jpg')    %dauert ewig
   
end


%%% Funktionen %%%

function drawPolygon(draw,P,varargin);
global ax
feval(draw,P(1,:),P(2,:),varargin{:});
if min(P(1,:))<ax(1)
  ax(1)=min(P(1,:));
end
if max(P(1,:))>ax(2)
  ax(2)=max(P(1,:));
end
if min(P(2,:))<ax(3)
  ax(3)=min(P(2,:));
end
if max(P(2,:))>ax(4)
  ax(4)=max(P(2,:));
end

function Schrift(P,txt,varargin)
text(P(1),P(2),txt,'FontName','TimesNewRoman','FontSize',20,varargin{:});

function P=Kreisbogen(A,M,B,offset,varargin)
deg=pi/180;
[t1,r1]=cart2pol(A(1)-M(1),A(2)-M(2));
[t2,r2]=cart2pol(B(1)-M(1),B(2)-M(2));
if abs(r1-r2)>sqrt(eps)
  error('Kreisbogen: A und B liegen nicht auf einem Kreis mit Mittelpunkt M')
end
r=(r1+r2)/2;
t1=t1-offset;
t2=t2+offset;
if t2<t1
  t2=t2+2*pi;
end
t=linspace(t1,t2,round((t2-t1)/deg));
P=repmat(M,size(t))+r*[cos(t);sin(t)];
drawPolygon(@plot,P,varargin{:});
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2009, 13:52     Titel:
  Antworten mit Zitat      
Ich würde erstmal die Schleife aufräumen:
Code:
clc;
close('all')
global ax
ax=[inf -inf inf -inf];
deg=pi/180;
wkl=-30;
O=[0;0];

Code=[1 1 0 0 1 0 1 1 1 0 0 1];
hold on;

for i = 1:12
   
    alpha=(i-1)*wkl*deg;
    beta=i*wkl*deg;
   
    A=[cos(alpha);sin(alpha)];
    B=[cos(beta);sin(beta)];
   
    if Code(i)==1
        Farbe = 'w';
        Inhalt = 1;
    else
        Farbe = 'k';
        Inhalt = 0;
    end
   
    K=Kreisbogen(B,O,A,0, Farbe ,'linewidth',1);
    %Zeichnen des Kreissektor
    drawPolygon(@fill,[O K O], Inhalt*[1 1 1],'EdgeColor', Farbe);    
end
t = 0:0.1:2*pi;
x = (2/3)*sin(t);
y = (2/3)*cos(t);
fill(x,y,'w', 'EdgeColor', 'w');
xx = (1/3)*sin(t);
yy = (1/3)*cos(t);
fill(xx,yy,'k', 'EdgeColor', 'k');

axis('off');
axis('equal');
axis(ax);

Schrift([0.9;-0.9],'325','HorizontalAlignment','center','VerticalAlignment','middle');
print -deps2 Kreissektor7
print('-djpeg','-r200','Markenprobe2.jpg')

Das müsste dann schon ein bisschen schneller gehen.
Zum Plot-Problem kann ich im Moment auch nicht mehr sagen, als dass es wohl vom Typ (eps oder jpg) unabhängig ist. Ich bekomme mit beidem gefüllte Kreise.
Hat bestimmt einen lächerlich einfachen Grund, den wir gerade übersehen...
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2009, 16:25     Titel:
  Antworten mit Zitat      
Keine Ahnung, was da los ist, aber so müsste es erstmal für das eps klappen:
Code:
clc;
close('all')
global ax
ax=[inf -inf inf -inf];
deg=pi/180;
wkl=-30;
O=[0;0];

Code=[1 1 0 0 1 0 1 1 1 0 0 1];

hold on;
for i = 1:12
   
    alpha=(i-1)*wkl*deg;
    beta=i*wkl*deg;
   
    A=[cos(alpha);sin(alpha)];
    B=[cos(beta);sin(beta)];
   
    if Code(i)==1
        Farbe = 'w';
        Inhalt = 1;
    else
        Farbe = 'k';
        Inhalt = 0;
    end
   
    K=Kreisbogen(B,O,A,0, Farbe ,'linewidth',1);
    %Zeichnen des Kreissektor
    drawPolygon(@fill,[O K O], Inhalt*[1 1 1],'EdgeColor', Farbe);
   
end
t = 0:0.1:2*pi;
x = (2/3)*sin(t);
y = (2/3)*cos(t);
fill(x,y,'w', 'EdgeColor', 'w');

xx = (1/3)*sin(t);
yy = (1/3)*cos(t);
fill(xx,yy,'k', 'EdgeColor', 'k');

axis('off');
axis('equal');
axis(ax);

Schrift([0.9;-0.9],'325','HorizontalAlignment','center','VerticalAlignment','middle');

set(gcf,'InvertHardcopy','off')
set(gcf,'Color','w');
print -deps2 bild
print -djpeg bild

Was das mit dem jpeg soll weiss ich nicht.

PS: Was sind das für Marker?
Maßstäbe für Fotogrammetrie?
 
Pantoffeltier
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.03.09
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 09.03.2009, 00:02     Titel:
  Antworten mit Zitat      
wenn es klappt wäre das echt super!
Kann es gerade leider nicht ausprobieren, da ich in den nächsten 2 Tagen nicht an das Programm komme. Sad
Die Lösung für das *eps ist auch vollkommen ausreichend, da die skalierung noch irgendwie erfolgen muss, und dazu sind vektorgrafiken nun mal besser geeignet. oder kann man diese auch gleich in matlab auf eine definierte größe festlegen?

Die Schleife sieht natürlich so viel schöner aus. Smile und die ausgabe als jpeg hatte ich nur probehalber mit drangehangen, um zu sehen, ob es ein typenproblem ist.

wie richtig vermutet handelt es sich um marken für die auswertung von bildern, also für photogrammetrische belange Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2009, 00:09     Titel:
  Antworten mit Zitat      
Womit machst du denn die Auswertung und was wird ausgewertet?
Was soll mit den eps-Files passieren, werden die ausgedruckt, aufgeklebt?
Hast du Inofs darüber, welche Toleranzen (Form, Größe, Lage) da erlaubt sind?
Wäre toll, wenn du dazu ein paar Sätze schreiben könntest...
 
Pantoffeltier
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.03.09
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 09.03.2009, 01:14     Titel:
  Antworten mit Zitat      
Die Marken, die mit diesem Programm erzeugt werden, sind welche, die auf unserer Bildauswerteverfahren angepasst sind.
Diese Marken sind also eindeutige Codierungen, die auf einem Objekt aufgebracht werden, also ausgedruckt und aufgeklebt. Das Objekt wird durch eine Kamera aufgenommen und die Bilder in Matlab eingelesen. Durch ein Programm einer anderen Mitarbeiterin können die Marken mit Hilfe verschiedener Algorithmen im Bild gefunden werden und deren Zentrum, je nach Aufnahmequalität, mit ca. 1/50 Pixel Genauigkeit erfasst werden.
Je nach Objektgröße bzw. Aufnahmeentfernung variiert natürlich die Markengröße, daher auch die Definition als Vektorgrafik.
Über die gemessenen Bildkoordinaten sind dann weitere Auswertungen, bsp. über die Objektgeometrie, möglich...
Private Nachricht senden Benutzer-Profile anzeigen
 
Pantoffeltier
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 07.03.09
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 11.03.2009, 12:39     Titel:
  Antworten mit Zitat      
super!!! es funktioniert!!!!

Danke an die lieben Gäste!!! Very Happy
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.