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

circfit funktion mit ginput und error

 

Ceh
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 11.09.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2017, 14:55     Titel: circfit funktion mit ginput und error
  Antworten mit Zitat      
Hallo,

ich habe ein Problem. um dieses genauer verdeutlichen hänge ich noch 2 Bilder an.
Ich habe ein Image mit schwarzen Punkten. Mittels ginput-funktion lese ich die x und y werte der Punkte aus 'untitled2.jpg' durch anklicken aus und gebe diese aus. Die angeklickten Punkte werden dann in einer extra Graphik zusätzlich ausgegeben 'untitled.jpg'.
Ich habe zwar die circfit funktion gefunden und habe mich nach einem Beispiel aus https://blogs.mathworks.com/pick/20...../fitting-a-circle-easily/ gehalten und probiert dies anzupassen:

Code:

close all;
clear all;
clc;

%
path2dir = 'C:\Users\.....';
if ~exist(path2dir,'dir')
   path2dir = pwd;
end
[A, path2jpg] = uigetfile('*.jpg', 'Select your Image', path2dir);
%[A] = uigetfile ('*.bmp', 'Select your Image');
V = imread(A)
%V = single(V);

figure('NumberTitle','off','Name',A);
imshow (V);
imagesc (V)
%ax.YAxisLocation = 'origin'
set(gca,'YDir','normal')
colormap gray
%view(0,-90); %dreht das Bild
axis image
axis on
%fliplr

%fadenkrezfunktion
[x,y] = ginput
           %kann später mit angeklickte Punkte nachvollziehen
           %plot kann Excel manuell beigefügt werden. Umbenennen!
plot(x,y,'--ks',...
    'LineWidth',1,...
    'MarkerSize',3,...
    'MarkerEdgeColor','r',...
    'MarkerFaceColor',[0.5,0.5,0.5])
figure('NumberTitle','off','Name',A);
imshow (V);
imagesc (V)
%ax.YAxisLocation = 'origin'
set(gca,'YDir','normal')
colormap gray
%view(0,-90); %dreht das Bild
axis image
axis equal

%circfit
[xfit,yfit,Rfit] = circfit(x,y);
figure('P1_gesamtjpg.jpg');
plot(x,y,'--ks',...
    'LineWidth',1,...
    'MarkerSize',3,...
    'MarkerEdgeColor','r',...
    'MarkerFaceColor',[0.5,0.5,0.5])
hold on
rectangle('position',[xfit-Rfit,yfit-Rfit,Rfit*2,Rfit*2],...
    'curvature',[1,1],'linestyle','-','edgecolor','g');
title(sprintf('Best fit: R = %0.1f; Ctr = (%0.1f,%0.1f)',...
    Rfit,xfit,yfit));
plot(xfit,yfit)
xlim([xfit-Rfit-2,xfit+Rfit+2])
ylim([yfit-Rfit-2,yfit+Rfit+2])
axis equal
 


dies ergibt bisher die 2 Bilder, die ich hier angehängt habe.

Nun habe ich aber das Problem, dass diese circfit-funktion irgendwie nicht funktioniert bzw garnicht gefunden wird: 'Undefined function or variable 'circfit'.'
Ich verstehe nicht, wieso das überall, wo ich gesucht habe geht, nur bei mir nicht? hat das vielleicht mit ginput zu tun?
Ich würde diesen Best fit Kreis gerne in der Graphik 'untitled.jpg' anzeigen, wenn möglich aber auch im OrginalImage 'untitled2.jpg'

des weiteren gibt es Probleme die ginput werte in Excel auszulesen; es funktioniert einfach nicht:
Code:

% Excel exportieren
xs = [ repmat('x', size(x)), num2str(x)];
ys = [ repmat('y', size(y)), num2str(y)];
sheet=1;
xlRange = 'A2';
xlswrite('Stegpositionen.xls',xs,sheet,xlRange);
ylRange = 'B2';
xlswrite('Stegpositionen.xls',ys,sheet,ylRange);

Excel = actxserver('Excel.Application');
Excel.Visible = 1;
w = Excel.Workbooks;
invoke(w, 'open', fileloc);   %hier weiter!! excel muss richtig geschrieben werden und hier dann direkt auch geöffnet werden, dass man file ned erst suchen muss
%ginput
 


kann mir bitte jemand Hilfestellung bei dem circle fit geben und wie genau ich ginput-Werte genau in Excel überführe, damit in einer Spalte die X-Werte stehen und in A1 'X-Werte' und in der zweiten Spalte alle Y-Werte beginnend bei B1 mit 'Y-Werte'.

Ich würde mich sehr freuen, könnte man nicht nur schreiben, was zu tun ist, sondern vielleicht auch wie und an welcher Stelle das eingebaut werden muss, da ich nun kein Profi in Matlab bin^^

Danke und mit freundlichem Gruß,
Ceh

untitled2.jpg
 Beschreibung:

Download
 Dateiname:  untitled2.jpg
 Dateigröße:  60.92 KB
 Heruntergeladen:  329 mal
untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  33.01 KB
 Heruntergeladen:  284 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: 08.11.2017, 15:29     Titel:
  Antworten mit Zitat      
habe noch ein zusätzliche Frage zu 'untitled2.jpg'.

man stelle sich vor, es ist noch kein KOS eingetragen, sondern ich will will durch Anklicken durch ginput zuerst 3 Punkte bestimmen innerhalb des Bildes (also ich klicke erst irgendwo beliebiges unten links im Bild = 0punkt, ich klicke dann an einen Punkt senkrecht nach oben dazu, dieser wäre dann max X-Wert und vom 0punkt geh ich gerade nach rechts, klicke dort irgendwo und dies wäre mein max X-Wert).

Oder vlt kann man dann das Bild so croppen, dass dann mein erster "klick" unten links dann als neuer 0Punkt auch in den Achsen angezeigt wird?

Dies soll dazu dienen, dass ich die x-y-Werte von den schwarzen Punkten in Abhängigkeit von diesem neuen, selbst erstellten KOS aus bestimmen kann.

Ich weiß nichtmal, ob sowas überhaupt realisierbar ist. Mein Betreuer der Projektarbeit meinte, er hätte das gerne so.. falls es auch hierzu Anregungen gibt, wäre ich für jeden Vorschlag dankebar!

Danke und LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 08.11.2017, 15:39     Titel:
  Antworten mit Zitat      
circfit ist keine Standard-Funktionalität von MATLAB. circfit.m kann am Ende des zitierten Blog-Eintrages heruntergeladen werden, aber Besten in das Arbeitsverzeichnis.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
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.