Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Softwarearchitekt (m/w)
Entwicklung mit Matlab / Simulink und MISRA-C
SEG Automotive Germany GmbH - Stuttgart-Weilimdorf

Softwareentwickler (m/w) automatische Codegenerierung
Umsetzung, Neuprogrammierung und Weiterentwicklung in Simulink, TargetLink und C
EFS - Ingolstadt, Wolfsburg

Informatiker (m/w) für den Bereich Toolkette Embedded Software
Weiterentwicklung einer MATLAB- / Simulink-Toolkette
cbb-Software GmbH - Stuttgart

SW-Entwickler/in SiL Motorsteuerung
Erstellung und Erweiterung von kundenspezifischen Simulationsmodellen in MATLAB/Simulink
Robert Bosch GmbH - Schwieberdingen

Algorithmenentwickler für Digitale Signalverarbeitung (m/w)
Entwicklung von Audioalgorithmen und Erstellung von Prototypen
ASK Industries GmbH - Niederwinkling

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Probleme bei Skalierung von Pixel in mm

 

Ceh
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 11.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2018, 16:40     Titel: Probleme bei Skalierung von Pixel in mm
  Antworten mit Zitat      
Hallo,
ich habe hier einen kleinen Code für eine Bildauswertung geschrieben, leider will das nicht so wie ich will.... zwar funktioniert alles im Pixelbereich, aber bei der Umrechnung in mm geht wohl etwas schief.

erst einmal der Code:
Code:
close all;
clear all;
clc;

%[A] = uigetfile ('*.bmp', 'Select your Image');
V = imread('S6_3_uebersicht.jpg');
%V = single(V);



figure
imshow (V);
imagesc(flip(V));
hold on;
set(gca,'ydir','normal');%(reverse or normal). y achse gedreht, aber spiegelt immer.
%ax.YAxisLocation = 'origin'
 
colormap gray
%axis view(0,-90); %dreht das Bild. spiegelt aber auch
axis image
%axis ij   %(ji or ij) spiegelt auch das bild
axis on

%fliplr

%fadenkrezfunktion
[x,y] = ginput
 xreal=x/231;
 yreal=y/231;
% x0=0; x1=6,93;
% y0=0; y1=5,19;
%xreal=(x-x(1))/(x(end)-x(1))*(x1-x0)+x0;
%yreal=(y-y(1))/(y(end)-y(1))*(y1-y0)+y0;
plot(xreal,yreal,'--ks',...
    'LineWidth',1,...
    'MarkerSize',5,...
    'MarkerEdgeColor','r',...  
    'MarkerFaceColor',[0.5,0.5,0.5])
set(gca,'YDir','normal')
for idx = 1:numel(x)
    text(xreal(idx),yreal(idx), num2str(idx), 'Color','green','FontSize',13);
end



%nur bfk
[xfit,yfit,Rfit] = circfit(xreal,yreal);
figure
imshow(V);
        %set(gca,'XTick',[0:0.5:5]);
        %set(gca,'YTick',[0:0.5:7]);
plot(xreal,yreal,'r.')
hold on
rectangle('position',[xfit-Rfit,yfit-Rfit,Rfit*2,Rfit*2],...
    'curvature',[1,1],'linestyle','-','edgecolor','k');
title(sprintf('Best fit: R = %0.1f; Ctr = (%0.1f,%0.1f)',...
    Rfit,xfit,yfit));
plot(xfit,yfit,'k.')

for idx = 1:numel(x)
    text(xreal(idx),y(idx), num2str(idx), 'Color','green','FontSize',13);
end
axis equal
       

%xlim([0 1600])
%ylim([0 1200])
set(gca,'YDir','normal')
h = imdistline(gca);    % zum verifizieren der Pixelabstände, oder zum schnellcheck
api = iptgetapi(h);


%%%%%%%%%%xreal=(x-x(1))/(x(end)-x(1))*(x1-x0)+x0;
%%%%%%%%%%xreal= x/231;

%alles in einem %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[xfit,yfit,Rfit] = circfit(xreal,yreal);
figure  
imshow(V);
imagesc(flip(V));
hold on;
set(gca,'ydir','normal')
colormap gray
axis image
axis on
grid on;
hold on;
plot(xreal,yreal,'--ks',...   %fadenkreuz
    'LineWidth',1,...
    'MarkerSize',5,...
    'MarkerEdgeColor','r',...
    'MarkerFaceColor',[0.5,0.5,0.5])
hold on;
plot(xreal,yreal,'r.')        %circfit
hold on

rectangle('position',[xfit-Rfit,yfit-Rfit,Rfit*2,Rfit*2],...
    'curvature',[1,1],'linestyle','-','edgecolor','k');
title(sprintf('Best fit: R = %0.1f; Ctr = (%0.1f,%0.1f)',...
    Rfit,fit,yfit));
plot(xfit,yfit,'k.')
for idx = 1:numel(x)
    text(xreal(idx),y(idx), num2str(idx), 'Color','blue','FontSize',13);
end

axis image
axis on
 


Funktion für Kreisberechnung
Code:

 x=x(:); y=y(:);
   a=[x y ones(size(x))]\[-(x.^2+y.^2)];
   xc = -.5*a(1);
   yc = -.5*a(2);
   R  =  sqrt((a(1)^2+a(2)^2)/4-a(3));
 


In S6_3_Auswertung.jpg ist zu sehen, wie alles in Pixel aussieht.
In untitled.jpg ist der Versuch mit der Umrechnung in mm, indem ich die Werte aus ginput [x,y]=[xreal,yreal] ersetzt habe- scheinbar aber nicht erfolgreich.
Wie man hier sehen kann, skalieren wohl die Werte, da sie alle links unten verstaucht sind, aber die Gesamtgraphik bleibt unverändert. Ebenso werden Mittelpunkt und Kreisradius einfach garnicht mehr angegeben

ich hoffe, es kann mir jemand helfen, wie ich alles schon skaliert in mm ausgeben kann! Sollte jemand eine Antwort haben, würde ich drum bitten, mir auch genau zu beschreiben, an welche Stelle und wieso man das genau so macht, damit ich daraus auch etwas lernen kann und nicht nur reinkopiere! Smile

Danke und mit freundlcihem Gruß
Ceh

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  117.02 KB
 Heruntergeladen:  11 mal
S6_3_Auswertung.jpg
 Beschreibung:

Download
 Dateiname:  S6_3_Auswertung.jpg
 Dateigröße:  141.6 KB
 Heruntergeladen:  8 mal
Private Nachricht senden Benutzer-Profile anzeigen


Ceh
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 11.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2018, 10:38     Titel: update
  Antworten mit Zitat      
so, also mittlerweile sieht es so aus (siehe neue Graphik unten) jedoch skaliert das gesamt Bild und die Achsen immer noch nicht mit :/

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  109.97 KB
 Heruntergeladen:  9 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Ceh
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 11.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2018, 11:54     Titel: Selbst gelöst. Code falls Leute ein ähnliches Problem haben
  Antworten mit Zitat      
wichtig ist es, die die "fit" Parameter mit einem Umrechnungsfaktor zu belegen und dann diese "Conversion-Funktion" ganz unten (gleicher Faktor) einzubauen.
Der Umrechnungsfaktor ist nicht allgemein güttig. habe mich an die Skalierung unten rechts orientiert, weshalb das für alle individuell angepasst werden muss.

Code:

close all;
clear all;
clc;

%[A] = uigetfile ('*.bmp', 'Select your Image');
V = imread('S6_3_uebersicht.jpg');
%V = single(V);



figure
imshow (V);
imagesc(flip(V));
hold on;
set(gca,'ydir','normal');%(reverse or normal). y achse gedreht, aber spiegelt immer.

 
colormap gray
axis image
axis on


%fadenkrezfunktion
[x,y] = ginput
 
plot(x,y,'--ks',...
    'LineWidth',1,...
    'MarkerSize',5,...
    'MarkerEdgeColor','r',...  
    'MarkerFaceColor',[0.5,0.5,0.5])
set(gca,'YDir','normal')
for idx = 1:numel(x)
    text(x(idx),y(idx), num2str(idx), 'Color','green','FontSize',13);
end



%nur bfk
[xfit,yfit,Rfit] = circfit(x,y);
figure
imshow(V);
        %set(gca,'XTick',[0:0.5:5]);
        %set(gca,'YTick',[0:0.5:7]);
plot(x,y,'r.')
hold on
rectangle('position',[xfit-Rfit,yfit-Rfit,Rfit*2,Rfit*2],...
    'curvature',[1,1],'linestyle','-','edgecolor','k');
title(sprintf('Best fit: R = %0.2f; Ctr = (%0.2f,%0.2f)',...
    Rfit,xfit,yfit));
plot(xfit,yfit,'k.')

for idx = 1:numel(x)
    text(x(idx),y(idx), num2str(idx), 'Color','green','FontSize',13);
end
axis equal
       

set(gca,'YDir','normal')
h = imdistline(gca);    % zum verifizieren der Pixelabstände, oder zum schnellcheck
api = iptgetapi(h);


%alles in einem %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[xfit,yfit,Rfit] = circfit(x,y);
xrealfit=xfit/231;
yrealfit=yfit/231;
Rrealfit=Rfit/231;
figure  
imshow(V);
imagesc(flip(V));
hold on;
set(gca,'ydir','normal')
colormap gray
axis image
axis on
grid on;
hold on;
plot(x,y,'--ks',...   %fadenkreuz
    'LineWidth',1,...
    'MarkerSize',5,...
    'MarkerEdgeColor','r',...
    'MarkerFaceColor',[0.5,0.5,0.5])
hold on;
plot(x,y,'r.')        %circfit
hold on


   
rectangle('position',[xfit-Rfit,yfit-Rfit,Rfit*2,Rfit*2],...
    'curvature',[1,1],'linestyle','-','edgecolor','k');
title(sprintf('Best fit: R = %0.2f; Ctr = (%0.2f,%0.2f)',...
    Rrealfit,xrealfit,yrealfit));
plot(xfit,yfit,'k.')

for idx = 1:numel(x)
    text(x(idx),y(idx), num2str(idx), 'Color','blue','FontSize',20);
end

  conversion=1/231; % in mm/pixel
    addMM=@(x) sprintf('%.1fmm',x*conversion);
    xticklabels(cellfun(addMM,num2cell(xticks'),'UniformOutput',false));
    yticklabels(cellfun(addMM,num2cell(yticks'),'UniformOutput',false));
 
   
axis image
axis on
 
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.