Verfasst am: 16.05.2018, 15:40
Titel: Probleme bei Skalierung von Pixel in mm
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.
%[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'
%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([01600])
%ylim([01200]) 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(xreal,yreal);
figure imshow(V);
imagesc(flip(V));
hold on;
set(gca,'ydir','normal') colormapgray axisimage 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
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!
Verfasst am: 17.05.2018, 10:54
Titel: Selbst gelöst. Code falls Leute ein ähnliches Problem habe
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.
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') colormapgray axisimage 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
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
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.