www.vorkurse.de
Ein Projekt von vorhilfe.de
Die Online-Kurse der Vorhilfe

E-Learning leicht gemacht.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Teams · Forum · Wissen · Kurse · Impressum
Forenbaum
^ Forenbaum
Status Mathe-Vorkurse
  Status Organisatorisches
  Status Schule
    Status Wiederholung Algebra
    Status Einführung Analysis
    Status Einführung Analytisc
    Status VK 21: Mathematik 6.
    Status VK 37: Kurvendiskussionen
    Status VK Abivorbereitungen
  Status Universität
    Status Lerngruppe LinAlg
    Status VK 13 Analysis I FH
    Status Algebra 2006
    Status VK 22: Algebra 2007
    Status GruMiHH 06
    Status VK 58: Algebra 1
    Status VK 59: Lineare Algebra
    Status VK 60: Analysis
    Status Wahrscheinlichkeitst

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - hough code
hough code < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

hough code: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:02 Do 27.09.2007
Autor: anitram

halli hallo!

ich weiß nicht ob ich meine frage hier überhaupt stellen kann, aber ich probiers einfach mal!

auf folgender seite, gibts einen matlab code.
http://www.mathworks.fr/matlabcentral/fileexchange/loadFile.do?objectId=9833&objectType=FILE

ich habe ihn heruntergeladen, und will ihn nun ausprobieren.

es wird auch etwas ausgegeben.
nur was hier ausgegeben wird, das weiß ich nicht.
für was ist das gut? was hat das mit kreisen zu tun?

und wie kommt der autor auf das bild das auf der webseite steht?
es gibt ja weder ein plot oder sowas ähnliches in dem programm...

kann so eine frage hier jemand beantworten?

vielen dank im voraus!
lg anitram

        
Bezug
hough code: Antwort
Status: (Antwort) fertig Status 
Datum: 15:03 Do 27.09.2007
Autor: Martin243

Hallo,

> ich weiß nicht ob ich meine frage hier überhaupt stellen kann, aber ich probiers einfach mal!

Warum nicht?

> ich habe ihn heruntergeladen, und will ihn nun ausprobieren.

Das habe ich jetz auch.

> es wird auch etwas ausgegeben.
> nur was hier ausgegeben wird, das weiß ich nicht.
> für was ist das gut? was hat das mit kreisen zu tun?

Hmmm, du solltest aber schon mit dem Sinn der Hough-Transformation vertraut sein.
Das wichtigste steht in der Datei:
Du bekommst die x- und y-Werte der Mittelpunkte der Kreiskandidaten, die den Kriterien (Radius und ggf. min. Anzahl der Punkte, evtl. Region) genügen.

Da eigentlich der große Kreis gesucht ist, wollen wir natürlich ein möglichst eindeutiges Ergebnis. Das setzt voraus, dass wir den Radius des Kreises kennen (ausprobieren!) und den Threshold (=minimale Anzahl der Punkte, durch die der Kreis geht) hoch genug setzen.

> und wie kommt der autor auf das bild das auf der webseite steht?
> es gibt ja weder ein plot oder sowas ähnliches in dem programm...

Richtig, das muss man selbst die Ergebnisse umsetzen.

> kann so eine frage hier jemand beantworten?

Ja.


Zuerst laden wir uns das Bildchen mal runter. Es ist etwas verzerrt, so dass wir es eher mit einer Ellipse als mit einem Kreis zu tun haben, was wir am Ende sehen werden.

Dann geben wir ein:
im = imread('pupil_line.gif');
im = im>0; %alles, was nicht schwarz ist, wird auf 1 gesetzt
radius=42; %ungefährer Kreisradius
threshold=500; %ein Kreis muss durch mindestens 500 Punkte gehen (ziemlich happig!)
[y_M,x_M,a_unwichtig] = houghcircle(im,radius,threshold);
imshow(im,[]);
hold on;
for i=1:length(x), %wir zeichnen jeden Ergebniskreis
  plot(x(i), y(i), 'yd'); %der Mittelpunkt
  plot(x(i) + radius*cos(2*pi/20*(0:20)), y(i) + radius*sin(2*pi/20*(0:20)),'r','LineWidth',3); %Kreis zeichnen
end;
hold off;
disp(sprintf('Es wurde%s %g Kreis%s gefunden\n',repmat('n',1,length(x)~=1),length(x),repmat('e',1,length(x)~=1)));

Wir sehen zwei Kreise, die die Ellipse am oberen bzw. am unteren Rand berühren.
[Dateianhang nicht öffentlich]

Gruß
Martin

Dateianhänge:
Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
Bezug
                
Bezug
hough code: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 14:30 Mo 01.10.2007
Autor: anitram

hallo!

zuerst einmal vielen dank!!!
hab mich jetzt ein bisschen mit deinem vorschlag beschäftigt und  ihn fest ausprobiert!!

lustigerweise geht mein matlab aber anscheinend anders als deines.
bei mir hab ich nämlich mit dem threshold von 500 keine chance einen kreis zu finden...
bei einem threshold von 125 wird dann nur 1 kreis gefunden,
bei 120 dann schon 2.
ist der threshold größer als 125 gibts keinen kreis...
und du findest ja beide kreise bei 500!

hättest du hier vielleicht auch noch eine erklärung?

vielen dank nochmal!!

lg anitram


Bezug
                        
Bezug
hough code: Antwort
Status: (Antwort) fertig Status 
Datum: 15:47 Fr 05.10.2007
Autor: Martin243

Hallo,

mein Fehler!

In dem angegebenen Code ist ja mal von x_M, y_M und mal von x, y die Rede. Ich hätte wohl auch einen Threshold von 10000 angeben können und würde immer noch Kreise finden...
Die Werte wurden nach meiner Variablenumbenennung einfach nicht mehr aktualisiert. Aber der Code scheint es ja sonst zu tun, war nur ein kleiner Patzer...


Gruß
Martin

Bezug
                                
Bezug
hough code: Rückfrage
Status: (Frage) beantwortet Status 
Datum: 14:50 Do 27.12.2007
Autor: Beni80

Hallo ihr beiden,
ich bin ziemlich matlab unerfahren und muss aber irgendwie eine Houghtransformation hinkriegen...
Ich habe jetzt auch mal allles das ausprobiert was oben gepostet wurde, habe aber das problem das ich immer die Fehlermeldung kriege:

??? Undefined function or variable "x".

Wie muss ich die denn vorher noch deklarieren? Über Hilfe wäre ich sehr dankbar,

Benni

Bezug
                                        
Bezug
hough code: Antwort
Status: (Antwort) fertig Status 
Datum: 21:58 Do 27.12.2007
Autor: Martin243

Hallo,

wie ich im Beitrag vorher geschrieben habe, ist dort ein Fehler eingebaut. Ersetze alle x_M und y_M durch x bzw. y, dann sollte es gehen. Falls nicht, melde dich nochmal.


Gruß
Martin

Bezug
                                                
Bezug
hough code: Rückfrage
Status: (Frage) beantwortet Status 
Datum: 13:04 Fr 28.12.2007
Autor: Beni80

Hallo Martin,

vielen Dank, es klappt:) Kannst du mir aber bitte nochmal erklären wofür in der Plot Funtkion das (0:20) steht? Das ist mir nicht ganz klar...

Und ich muss das jetzt mit einem Graustufenbild machen, was eigentlich nur aus Kreisen besteht. Da wäre es jetzt wohl sinnig,  dieses Bild erstmal in ein s/w Bild zu wandeln mit einer Schwellwertoperation? Ich probiers einfachmal:)
Danke,
Beni

Bezug
                                                        
Bezug
hough code: Antwort
Status: (Antwort) fertig Status 
Datum: 15:03 Fr 28.12.2007
Autor: Martin243

Hallo,

> Kannst du mir aber bitte nochmal erklären wofür in der Plot Funtkion das (0:20) steht? Das ist mir nicht ganz klar...

Damit wird die zu plottende Kreisform approximiert. Es werden statt eines Kreises 21 Kreissehnen gezeichnet, damit es schneller geht. Ersetze das mal testweise durch (0:2).

> Und ich muss das jetzt mit einem Graustufenbild machen, was eigentlich nur aus Kreisen besteht. Da wäre es jetzt wohl sinnig,  dieses Bild erstmal in ein s/w Bild zu wandeln mit einer Schwellwertoperation? Ich probiers einfachmal:)

Ja, genau. Ich weiß ja nicht, wie eindeutig die Kreise bei dir sind, aber vielleicht musst du da etwas mit den Schwellwerten herumspielen.


Gruß
Martin

Bezug
                                                                
Bezug
hough code: weitere Frage
Status: (Frage) überfällig Status 
Datum: 15:04 Sa 29.12.2007
Autor: Beni80

Hallo Martin,

ich hätte da nochmal ne Frage zum weiteren Vorgehen. Vielleicht hast du ja die Zeit und kannst dir das Bild mal angucken was ich hochgelade habe, da gehts nämlich drum.
Da müssen alle Kreise detektiert werde, mit Koordinatenangaben...
Also ich hab zu erstmal die Gradation etwa steiler gemacht (noch mit Photoshop), dann habe ich einen Schwellwert (der lag bei mir dann so bei 0,3) angegeben und in ein Binärbild gewandelt. Dann wurde erstmal der große Kreis gefunden. (R= 64 und thres= 123).
Allerdings findet MAtlab min. immer 2 Kreise. Das heißt dann ich müsste immer noch ne Mittelwertberechnung aus den Koordinaten machen?

Und dann das ganze nochmal mit nem kleinen Radius durchlaufen lassen?
Funktioniert das vielleicht auch irgendwie einfacher?

Falls du die Zeit hast mal drüber zu gucken wär super,
Vielen Dank,
Beni
[Dateianhang nicht öffentlich]


Dateianhänge:
Anhang Nr. 1 (Typ: tif) [nicht öffentlich]
Anhang Nr. 2 (Typ: png) [nicht öffentlich]
Bezug
                                                                        
Bezug
hough code: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:20 Mo 31.12.2007
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorkurse.de
[ Startseite | Mitglieder | Teams | Forum | Wissen | Kurse | Impressum ]