Posts

Es werden Posts vom 2016 angezeigt.

Matlab: Segmentierung Wachstum (Segmentation Growing)

Bild
Segmentierung Wachstum (Segmentation Growing) ( English ) Diese Post ist über ein Verfahren um Objekte aus BIldern zu segmentieren. Dafür wird eine Region gewählt (seed) und mit einem Gewichtungsfaktor, der von der Standartabweichung und der Durchschnittswert der Region und dem Faktor f abhängt, gewählt. Wenn Pixel, die unmittelbar um das seed liegen innerhalb der Grenzen sind, wird dieser dem seed hinzugefügt. Dies wird so lange fortgezetzt, bis kein Wert mehr dem seed hinzugefügt wird. Dann ist das Objekt somit segmentiert. function [region, area, seed, sx1, sx2, sy1, sy2] = Segmentation_Growing(img,sx1,sx2,sy1,sy2,f): Diese Funktion benötigt ein Bild als input. Wird sonst nichts als input angegeben kann mit 2 Markern der Bereich festgelegt werden, in dem der seed ist. Andernfalls wird mit sx1, sy1 die obere linke Ecke und mit sx2, sy2 die untere rechte Ecke definiert. Wird mit den Markern gearbeitet, kann als zweiter input f angegeben werden. Diese Variable beschreibt die Gewi

Matlab: Dijkstra Methode - große Nachbarschaft

Bild
Die Dijkstra Methode ( English ) In diesem Post wird die Dijkstra Methode aus dem vorherigen Post nochmal aufgearbeitet, sodass diese eine größere Nachbarschaft nach Wegen durchsucht und somit bei mehreren möglichen Pfäden eine präziesere Lösung findet. Die wird in folgendem Bild zu dme vorherigen Post verglichen: Hier kann der Code bei MathWorks heruntergeladen werden. Quellcode Dijkstra: function [path, prev, unvis, distance, start, target] = Dijkstra_Methode(Matrix, start, target) %Matrix is the incoming image %start is the start point in a vector [a,b] where a is the column and b the %row %target is the end point similare to start %path is the matrix with ones excepted at the position of the path where it is 0 %prev are also the previous visited pixels where the algorithm took the %wrong way %unvis are all unvisited pixels %distance is the distance or weight of the pixels %open the image and you can choose with the cursor the start %and end point if you don't give

Matlab: Dijkstra Methode - kürzestes Weg entlang des Gradienten (kleine Nachbarschaft)

Bild
Die Dijkstra Methode ( English ) In diesem Post zeige ich wie mit Matlab am Rand von Objekten oder Bildern der Pfad gefunden werden kann. Hierfür benutzt ich die Dijkstra Methode. Ich nehme als Input ein BIld von Matlab, führe es in ein Gradientenbild über mit [G,Gdir] = imgradient(img,'sobel'); und benutze meine Funktion Dijkstra(G,p,q) : Diese ist benötigt ein Bild in double Format G , einen Startpunkt p bei dem der erste Wert der Zeilenwert und der zweite der Spaltenwert ist und das vorgegebene Ziel q dem entsprechend. Die Methode funktioniert so, dass sie alle Distanzen auf unendlich setzt und nur den Startpunkt auf 0. Alle unbesichteten Pixel haben den Wert 1. Der Algorithmus geht so lange, bis das Ziel kein unbesichteter Pixel mehr ist. Er summiert über alle Nachbarpixel und berechnet immer das Gewicht bzw. die Distanz mit function [weight] = localedgewidth(G,p,q) wobei der Wert vom Nachbarpixel von dem Maximum der Bilder abgezogen wird, dies durch die Differenz von

Matlab: GUI Interface

Bild
Erstellen eines GUI interfaces ( English ) In diesem Beitrag zeige ich wie man mit Matlab ganz einfach ein GUI Interface mit Buttons etc. erstellt und ein Programm daraus schreibt. Hierfür muss zuerst in Matlab in die Konsule "guide" eingegeben werden, dass sich ein Fester öffnet. Hier kann man jetzt entweder schon erstellt Interfaces öffnen oder ein neues erstellen. In einem neu erstellten Interface kann ganz einfach mit den entsprechenden Buttons und anderen Objekten eine Oberfläche erstellt werden. Dies kann man speichern und ausführen woraufhin ein Matlab Code erstellt wird. Für die Programmierung ist wichtig, dass hierbei jedem Objekt ein "Tag" zugeordnet wird und benannt wird. Dies kann man mit dem "Inspector" bearbeiten, indem einfach auf ein Objekt doppelt geklickt wird. Hier können auch noch weitere Einstellungen wie Design oder "Value" oder "Name" angegeben werden: Hier kann nun mit dem grünen Pfeil des Editors der

Matlab: alle Dateien aus Ordner darstellen

Öffnen und Darstellen aller Dateien aus einem Ordner ( English ) In diesem Post wird beschrieben, wie aus einem Ordner mit Matlab alle Dateien geöffnet und geplottet werden können. Zuerst werden alle Datein des Formats  *.txt geladen und in files gespeichert. files = dir('*.csv'); Dann werden alle Dateien in eine Variable gespeichert. Für value = 2 wird beispielsweise nur jede 2. Datei genommen. for i = 1:1:length(files)/value     fid3{i}=files(i).name; end Diese Dateien sind noch nicht sortiert und können nun sortiert werden. Hierfür muss "natsortfiles" aus Matlab-Exchange heruntergeladen werden: fid3 = natsortfiles(fid3) for i = 1:value:length(files)      fid = fopen(fid3{i});     daten = textscan(fid,'%f %f','delimiter',',','headerlines',0');     q1(:,i/value) = daten(1);     q2(:,i/value) = daten(2); end fclose(fid); Im "textscan"-Befehl wird mit 'headlines',0 die Anzahl der Zeilen der .

Matlab: Farbspektrum für Plots

Bild
Farbspektren mit Matlab ( English ) In diesem Post wird beschrieben, wie mit meiner Funktion für Matlab, ein Farbspektrum erzeugt werden kann, sodass verschiedene Plots alle verschiedene Farben haben. Hierfür habe ich die Funktion geschrieben ( Download ): function [CoolSpec] = ColSpec(a,q,value,start,m,k,inv) Es kann also mit "a" die Anzahl der verschiedenen Farben im Bereich von rot über gelb zu grün zu blau und zu pink abgegeben werden. Mit dem Wert q wird der q'te Wert des Spektrums zurückgegeben. Mit "value" wird die Weite des Spektrums beschreiben also für Wert größer 1 wird sich die Farbe weniger ändern. "start" gibt den Startwert der Farbe an. Dabei ist rot (start = 0), gelb (start = 0.5), grün(start = 1), hellblau (start = 1.5-2), dunkelblau (start = 2.5) und pink (start = 3) und dann beginnts wieder von vorne. Mit "m" und "k" kann für kleinere Werte als 1 die Helligkeit der Kuven kontinuierlich verringert werden. Mi

Matlab: optische Aufbauten

Bild
Optikenaufbauten mit Matlab ( English ) Dieser Post ist dazu da, optische Aufbauten aus Linsen, Spiegeln und anderen Optiken schön mit Matlab darzustellen. Dafür habe ich einige einzelne Funktionen geschrieben mit denen man diese infolgender Form benutzen kann ( MATLAB Dateien ): opticlense(x,y,deg,thick,dx,dy,color) opticbeamsplitter(x,y,deg, thick,dx,dy,color) opticbikonvex( x,y,deg,thick,dx,dy,color)  opticdistance(x1,y1,x2,y2,string,len,thick,color) opticline(x,y,deg,len,thick,color) opticmirror(x,y,deg,style,thick,color,len) opticslit(x,y,deg,thick,color,len) Hierbei gibt x und y die Position des optischen Elements an. So kann nun Maßstabgetreu in Matlab die Linsen positioniert werden. deg gibt den Winkel der Neigung der Optik an und dx, dy bzw. len die Länge in x, y Richtung. color bestimmt die Farbe der Optik und thick die Dicke der Linie. In opticdistance x1 , y1 sind die Startwerte und x2 , y2 die Endwerte des Abstandes, wobei mit string der Name (z.B. die Entfe

Theremin: Das elektrische Musikinstrument

Bild
Allgemein: ( English ) Ein Theremin ist ein elektrisches Musikinstrument, welches durch zwei Schwingkreise geregelt wird, indem an einem Schwingkreis eine Antenne angeschlossen ist. Durch Annäherung der Hand wird die Kapazität geändert und somit auch die Frequenz des Schwingkreises. Schlussendlich hört man die Differenz zwischen den beiden Schwingkreisen. Aufbau: Hierfür habe ich folgende Schaltung genommen. Die Stückliste ist wie folgt: OPV TL071 x2 LM386 x1 Kondensator: 100 nF x2 220 nF x2 47 pF x2 47 nF x1 100 pF x1 10 nF x1 Elko 220 u x3 Widerstand: 100 k  x4 22 k x4 47 k x2 10 x1 Potentiometer: 100k x1 10k x2 Sonstiges: Diode 1N4007 1 BAT42 2 Antenne Lautsprecher Um das Theremin mit Strom zu versorgen werden entweder 2 9V-Akkus benötigt die in Reihe geschaltet sind oder sonstige 18V Spannungsdifferenz. Mit Netzteilen ist es kritisch, da diese eine richtige Erdung brauchen. Eignen könnten sich dafür diese Stecker , falls man so wie ich

Matlab: Matlabskript

Bild
Matlabskript Da ich sehr viel mit Matlab mache, habe ich auch immer nebenher mir alles dokumentiert und die wichtigsten Befehle in eine Latexdatei zusammengefasst. Dieses Skript ist für Anfänger als auch für Fortgeschrittene. Es beginnt mit einfachen Plot- und Fit-Funktionen über 3D-Plots und Fehlergeraden. Matlabskript Vorschau:

Matheabitur Skript

Bild
Matheabitur-Skript Da ich dieses Jahr ziemlich viel Mathenachhilfe gegeben habe, habe ich nebenher ein Matheskript geschrieben für das Abitur mit allen relevanten Themen. Bei irgendwelchen Fehlern oder Unklarheiten im Skript würde ich mich gerne über Komentare und Bemerkungen freuen, da ich doch nicht die Zeit hatte öfters über das Skript zu schauen und es zu perfektionieren. Ich hoffes es hilft euch beim Lernen und Verstehen!   Matheabitur-Skript Vorschau:

Arduino: Geräuschsensor LM393

Bild
Motivation Da ich mir ein Theremin gebaut habe, wollte ich mir mit dem Arduino-Geräuschsensor LM393 eine Art Mikrofon bauen, bzw. einen Lautstärke regeler. Anwendung: Die Anwendung des Sensors ist ziemlich einfach. Man nimmt ein beliebiges Arduino-Board und verbindet vom Sensor VCC mit +5 V , GND mit GND und OUT mit A0 .   Nun wird einfach der analog Pin A0 mit analogRead(A0) ausgelesen. Der Arduino gibt abhängig von der Lautstärke entweder 26 oder 1023 als Wert an. Es kommt selten vor, dass sich ein Wert dazwischen befindet. Deswegen habe ich immer über einige Werte (500) gemittelt und dann den Durchschnitt bestimmt. Wird nun 10 Sekunden lang immer der Wert ermittelt, kann der Lautstärkeverlauf ziemlich grob bestimmt werden. Dieser ist umso genauer, über je mehr Werte gemittelt wird. Allerdings ist die Zahl der gemittelten Werte und die Werte die man pro Sekunde aufnehmen will, abhängig von der Geschwindigkeit des Computers.  In folgenden Bildern ist der Lautstärkev

Matlab: Kegel/Pfeil in 3D

Kegel/Pfeil in 3D (English) Um einen Kegel bzw. ein Pfeil im 3D darzustellen kann die Funktion: function arrow3D(startVec, stopVec, varargin) Die Variable startVec ist der Anfang des 3D-Kegels und die Variable stopVec das Ende des Kegels. Du kannst die optionalen Argumente wie "Color", "Thickness" und "Length" verwenden, um den Kegel anzupassen. Source code : function arrow3D(startVec,stopVec,varargin) % Input arguments: % startVec ... input vector of the beginning of the point in [x,y,z] % stopVec ... input vector of the ending of the point in [x,y,z] % % Optional input argument (varargin): % 'Color',color ... define the color of the arrow/point % 'Thickness',thick ... thickness of the arrow % 'Length',length ... Length of the arrow % 'Axes',ax ... Input axes     if isempty(varargin)         varargin{1} = '';     end          [x] = startVec(1);      [y] = startVec(2);      [z] = startVec(3);      x2 = stopVec(1);

Matlab: Punkte und Vektoren in 3D-Plots

Bild
Punkte und Vektoren in 3D-Plots (English) Diese Matlabfunktion ist für das im vorherigen Post dargestellte 3D-Gitter. Dabei kann mit folgender Funktion ein Vektor bzw. ein Punkt im 3D-Plot erstellt werden. function punkt3D(x1,y1,z1,x2,y2,z2,sign,name,color,dx,dy,dz,true) Du benötigst hierfür diese 2 Funktionen: 3D Gitter ,  3D Kegel/Pfeil Dabei gibt "startVec" den Startpunkt des Vektors und "stopVec" den Endpunkt an. Es können verschiedene optionale Parameter gewählt werden: 'Marker'           ... kann entweder 'arrow' sein damit ein Kegel gezeigt wird oder als Default ein Punkt. 'Color'               ... gibt die Farbe in RGB des Vektors an. 'LineWidth'     ... bestimmt die Dicke des Vektors.  'Label'               ... gibt den String an, wie der Vektor/Punkt benannt werden soll. 'Deviation'       ... gibt den Abweichungsvektor zu dem Punkt an damit das Label nicht auf dem Punkt ist. 'PlotProjction' ...