Umzug Durchschnitt Scilab
Hausgemachter GPS-Empfänger Der oben gezeigte Front-End, erster Mixer und IF-Verstärker eines experimentellen GPS-Empfängers. Die linke SMA ist mit einer handelsüblichen Antenne mit integriertem LNA - und SAW-Filter verbunden. Ein synthetisierter erster lokaler Oszillator treibt die untere SMA an. Pin-Header auf der rechten Seite sind Power-Eingang und IF-Ausgang. Letzteres ist mit einem Xilinx FPGA verbunden, das nicht nur DSP durchführt, sondern auch einen Fraktional-N Frequenzsynthesizer hostet. Mehr dazu später. Ich war motiviert, diesen Receiver nach dem Lesen der Arbeit 1 von Matjax017E Vidmar, S53MV, zu entwerfen, der vor über 20 Jahren einen GPS-Empfänger vor Kratzer entwickelte, der hauptsächlich diskrete Komponenten benutzte. Seine Verwendung von DSP nach einem hart-limitierenden IF und 1-bit ADC interessierte mich. Der hier beschriebene Empfänger arbeitet nach demselben Prinzip. Sein 1-Bit-ADC ist die 6-polige IC in der Nähe der Pin-Header, ein LVDS-Ausgang Komparator. Versteckt unter Lärm, aber nicht in den zweistufigen quantisierten Mush ausgelöscht, die entstehen, sind Signale von jedem Satelliten im Blick. Alle GPS-Satelliten senden auf der gleichen Frequenz, 1575.42 MHz, mit direkte Sequenz Spreizspektrum (DSSS). Der L1-Träger ist über eine Bandbreite von 2 MHz verteilt und seine Festigkeit auf der Erdoberfläche beträgt -130 dBm. Die thermische Rauschleistung in der gleichen Bandbreite beträgt -111 dBm, so dass ein GPS-Signal an der Empfangsantenne 20 dB unter dem Rauschboden liegt. Dass irgendwelche der anwesenden Signale, die übereinander liegen und in Rauschen vergraben sind, nach einer zweistufigen Quantisierung wiederherstellbar sind, scheint mir eine Intimierung zu schreiben, um mich zu überzeugen. GPS beruht auf den Korrelationseigenschaften von Pseudozufallssequenzen, die als Gold-Codes bezeichnet werden, um Signale von Rauschen und voneinander zu trennen. Jeder Satellit überträgt eine eindeutige Sequenz. Alle unkorrelierten Signale sind Rauschen, auch solche anderer Satelliten und Hard-Limiter-Quantisierungsfehler. Das Mischen mit demselben Code in der richtigen Phase dehnt das gewünschte Signal aus und breitet sich weiter aus. Die schmalbandige Filterung entfernt dann Breitbandrauschen, ohne das (noch einmal schmale) Nutzsignal zu beeinflussen. Hard-Limiting (1-Bit-ADC) verschlechtert SNR um weniger als 3 dB, ein Preis wert, um Hardware-AGC zu vermeiden. Mai 2013 Update Dies ist jetzt ein wirklich tragbarer, batteriebetriebener, 12-Kanal-GPS-Empfänger mit schlüsselfertiger Software, der Satelliten erfasst und verfolgt und seine Position kontinuierlich neu berechnet, ohne Benutzereingriff. Das komplette System (unten, links) umfasst: 16x2 LCD-Display, Himbeer-Pi-Modell Ein Computer, zwei benutzerdefinierte Leiterplatten, kommerzielle Patch-Antenne und Li-Ion-Akku. Gesamtsystemstromverbrauch beträgt 0,4A für eine Batterielebensdauer von 5 Stunden. Die Himbeer-Pi wird über das Flachbandkabel mit dem GPIO-Header an die Frac7 FPGA-Platine angetrieben und benötigt keine weiteren Anschlüsse. Derzeit läuft der Pi Raspbian Linux. Eine kleinere distro würde die Zeit verkürzen, um zuerst zu reparieren. Nach dem Booten von SD-Card startet die GPS-Anwendungssoftware automatisch. Beim Ausstieg gibt es eine Möglichkeit, das Pi vor dem Ausschalten ordnungsgemäß abzuschalten. Pi-Software-Entwicklung wurde kopflos über SSH und FTP über einen USB-Wi-Fi-Dongle durchgeführt. Quellcode und Dokumentation finden Sie am Ende dieser Seite. Beide kundenspezifischen Leiterplatten sind einfache 2-lagige PTH-Platten mit durchgehenden Bodenebenen auf der Unterseite. Im Uhrzeigersinn um den Xilinx Spartan 3 auf der Frac7 FPGA-Platine: von 12 Uhr bis 3 Uhr sind der Loop-Filter, VCO, Power Splitter und Prescaler des Mikrowellen-Frequenzsynthesizers unten rechts der Joystick und der JTAG-Stecker und um 6 Uhr Pin-Header für das Himbeer-Pi-Flachbandkabel. Weit links ist der LCD-Anschluss. In der Nähe ist ein temperaturkompensierter spannungsgesteuerter Kristalloszillator (TCVCXO), der eine stabile Referenzfrequenz liefert, die für den GPS-Empfang unerlässlich ist. Die TCVCXO ist gut, aber nicht ganz bis zum GPS-Standard bei der Bedienung von un-boxed an windigen Standorten. Das Blasen desselben verdrängt den 10,000000 MHz-Kristalloszillator um etwa 1 Teil in 10 Millionen oder 1 Hz, der 150 Mal durch den Synthesizer PLL vergrößert wird. Das ist genug, um die Satelliten-Tracking-Loops vorübergehend freizuschalten, wenn es plötzlich geschieht. Die Vorrichtung ist auch etwas empfindlich gegenüber Infrarot, z. B. Aus Halogenbirnen und TV-Fernbedienungen Als erstmals im Jahr 2011 gepostet wurde, war dies ein Vier-Kanal-Empfänger, dh es konnte nur vier Satelliten gleichzeitig verfolgen. Mindestens vier sind erforderlich, um für Benutzer Position und Empfänger Uhr Vorspannung zu lösen, aber größere Genauigkeit ist mit mehr möglich. In dieser ursprünglichen Version füllten vier identische Instanzen des Tracker-Moduls das FPGA. Aber die meisten Flops wurden nur einmal pro Millisekunde getaktet. Nun, eine benutzerdefinierte Soft-Core-CPU im Inneren des FPGA serialisiert die Verarbeitung und nur 50 der FPGA-Gewebe ist für einen 8-Kanal-Empfänger oder 67 für 12-Kanäle erforderlich. Anzahl der Kanäle ist ein Parameter in der Quelle und könnte höher gehen. Die Positionsgenauigkeit ist am besten, wenn die Antenne 360 ° des Himmels sehen und Signale aus allen Richtungen empfangen kann. Im Allgemeinen, je mehr Satelliten im Blick, desto besser. Zwei oder mehr Satelliten auf demselben Lager können zu einer schlechten Geometrie führen. Die beste Fix so weit war plusmn1 Meter an einem sehr offenen Ort mit 12 Satelliten, aber Genauigkeit ist in der Regel plusmn5 Meter in ärmeren Standorten mit weniger Satelliten. September 2014 Update Der Quellcode für dieses Projekt wurde unter der GNU General Public License (GPL) erneut veröffentlicht. Architektur Verarbeitung ist zwischen FPGA und Pi durch Komplexität und Dringlichkeit aufgeteilt. Der Pi verarbeitet mathematisch-intensive Heavy-Heben in seinem eigenen Tempo. Der FPGA synthetisiert den ersten lokalen Oszillator, bedient hochrangige Ereignisse in Echtzeit und verfolgt Satelliten autonom. Der Pi steuert den FPGA über eine SPI-Schnittstelle. Zweckmäßigerweise wird das gleiche SPI verwendet, um den FPGA-Konfigurationsbitstream und den binären ausführbaren Code für die eingebettete CPU zu laden. Das FPGA kann auch über ein Xilinx Platform USB JTAG Kabel von einem Windows PC gesteuert werden und erkennt automatisch, welche Schnittstelle benutzt wird. Die L1-Frequenzen werden durch Mischen mit einem 1552,82 MHz lokalen Oszillator auf der GPS3-Front-End-Platine auf eine 1. IF von 22,6 MHz heruntergewandelt. Alle nachfolgenden IF - und Basisband-Signalverarbeitung erfolgt digital im FPGA. Zwei Proportional-Integral - (PI) - Controller pro Satellit, Track-Carrier und Code-Phase. NAV-Daten, die von den Satelliten übertragen werden, werden im FPGA-Speicher gesammelt. Dies wird in den Pi hochgeladen, der die Parität überprüft und Ephemeride aus dem Bitstrom extrahiert. Wenn alle erforderlichen Orbitalparameter gesammelt werden, wird ein Schnappschuss von bestimmten internen FPGA-Zählern genommen, von denen die Zeit der Übertragung auf plusmn 15ns Präzision berechnet wird. Ein Großteil des 1552,82 MHz Synthesizers ist im FPGA implementiert. Man könnte Jitterprobleme erwarten, Co-Hosting ein Phasendetektor mit anderen Logik, aber es funktioniert. Synthesizer-Ausgangsspektral-Reinheit ist hervorragend, obwohl der FPGA-Kern wütend ist und nicht alle auf harmonisch bedingten Frequenzen. Dieser Ansatz wurde getroffen, weil ein Board ähnlich wie Frac7 bereits aus einem früheren Synthesizer-Projekt existierte. Das Hinzufügen eines Front-Endes war der kürzeste Weg zu einem Prototyp-Empfänger. Aber diese erste Version war nicht tragbar: es hatte unangenehme Stromanforderungen und keinen On-Board-Frequenzstandard. Signalverarbeitung bis hin zum Hard-Limiter: Der LMH7220 Komparator hat eine maximale Eingangs-Offsetspannung von 9,5mV. Verstärktes thermisches Rauschen muss dies übertreffen, um es zu umgehen. Schwache GPS-Signale beeinflussen nur den Komparator in der Nähe von Nulldurchgängen Sie werden durch das Rauschen abgetastet Um den Rauschpegel am Vergleichseingang abzuschätzen, tabellieren wir Gewinne, Einfügungsverluste und Rauschzahlen: In-Band-Rauschen am Mischerausgang ist -1740.828-1.5-3.920- 610log10 (2,5e6) -73 dBm oder 52microV RMS. Der Mischer wird in 50-Ohm resistiv beendet und die Stufen arbeiten danach mit höherer Impedanz. Der diskrete ZF-Streifen hat eine Gesamtspannungsverstärkung von 1000, so dass der Komparator-Eingangspegel 52mV RMS beträgt. Der LMH7220 fügt 59 dB Verstärkung hinzu, was insgesamt 119 dB für die ganze IF macht. Die Bereitstellung von so viel Gewinn bei einer Frequenz war ein Risiko. Um es zu minimieren, wurde eine ausgeglichene Schaltkreise über eine feste Grundebene verwendet und abgeschirmtes Twisted-Pair führt den Ausgang zum FPGA. Die Motivation war die Einfachheit, die Vermeidung einer zweiten Umwandlung. In der Praxis ist die Strecke stabil, so dass das Glücksspiel ausgezahlt wird. Aktiver Entkoppler Q1 liefert 5V für die Fernbedienung LNA. Der MMIC-Verstärker U2 bietet 20 dB Verstärkung (nicht bei IF) und sorgt für eine niedrige Gesamtsystem-Rauschzahl, auch wenn lange Antennenkabel verwendet werden. L1 und L2 sind handgewickelte Mikrowellen-Drosseln mit sehr hoher Eigenresonanzfrequenz, die senkrecht zueinander angeordnet sind und von der Grundebene frei sind. Wind 14 dreht, luftgekühlt, 1mm Innendurchmesser von 7cm Längen von 32wg emailliertem Kupferdraht. Mit dem Tracking-Generator auf einer Marconi 2383 SA überprüft, waren diese gut bis 4 GHz. Die Mini-Schaltungen MBA-15L DBM wurde für seinen niedrigen 6 dB Umwandlungsverlust bei 1,5 GHz und niedrigem 4 dBm LO Antriebsbedarf gewählt. R9 beendet den IF-Port. Drei volldifferenzielle ZF-Verstärkerstufen folgen dem Mischer. Low-Q parallel abgestimmte Schaltkreise zwischen Kollektoren, die die Bandbreite von -3 dB um 2,5 MHz einstellen und den Aufbau von DC-Offsets verhindern. L4, L5 und L6 sind Toko 7mm Spulen abgeschirmt. Der BFS17 wurde für seine hohe (aber nicht zu hohe) 1 GHz f T gewählt. I e ist 2mA für das niedrigste Geräusch und vernünftige Betar e. Die 22,6 MHz 1. IF wird durch Unterabtastung bei 10 MHz im FPGA digital auf 2,6 MHz abgesenkt. 2,6 MHz liegt nahe der Mitte der 5 MHz Nyquist Bandbreite. Es ist am besten, das genaue Zentrum zu vermeiden, aus Gründen, die später erklärt werden. Mehrere andere ZF-Frequenzen sind möglich: 27,5 MHz, die bei der 2. IF eine Frequenzumkehr erzeugt, wurde auch erfolgreich versucht. Es gibt einen Kompromiss zwischen Bildproblemen bei niedrigerer und verfügbarer BFS17-Verstärkung bei höheren Frequenzen. Die Signaldetektion beinhaltet die Lösung von drei Unbekannten: welche Satelliten sind im Blick, ihre Doppler-Verschiebungen und Code-Phasen. Eine sequentielle Suche dieses dreidimensionalen Raumes von einem sogenannten Kaltstart konnte viele Minuten dauern. Ein Warmstart mit Almanach-Daten zur Vorhersage von Positionen und Geschwindigkeiten erfordert noch eine Codesuche. Alle 1023 Codephasen müssen getestet werden, um den maximalen Korrelationspeak zu finden. Die Berechnung von 1023 Korrelationsintegralen im Zeitbereich ist sehr teuer und redundant. Dieser GPS-Empfänger verwendet einen FFT-basierten Algorithmus, der alle Codephasen parallel testet. Von kalt, dauert es 2,5 Sekunden auf einem 1,7 GHz Pentium, um die Signalstärke, die Dopplerverschiebung und die Codephase jedes sichtbaren Satelliten zu messen. Die Himbeer-Pi ist etwas langsamer. Bei der Konjugation ist die Kreuzkorrelationsfunktion y (Tau) des komplexen Signals s (t) und des durch den Offset Tau verschobenen Codes c (t): Der Korrelationstheorem besagt, dass die Fourier-Transformation eines Korrelationsintegrals gleich ist Das Produkt des komplexen Konjugats der Fourier-Transformation der ersten Funktion und der Fourier-Transformation der zweiten Funktion: FFT (y) CONJUGATE (FFT (s)) FFT (c) Korrelation wird im Basisband durchgeführt. Der 1.023 Mbps CA Code ist 1023 Chips oder 1ms lang. Vorwärts FFT Länge muss ein Vielfaches davon sein. Die Abtastung bei 10 MHz für 4 ms ergibt eine FFT-Behältergröße von 250 Hz. 41 Doppler-Verschiebungen müssen durch Drehen der Frequenzbereichsdaten getestet werden, jeweils ein Bin bis zu plusmn20 Bins plusmn5 KHz. Die Rotation kann auf jede Funktion angewendet werden. Die 22,6 MHz 1. IF aus dem 1-Bit-ADC wird von einem 10-MHz-Takt im FPGA unter-abgetastet, digital umwandelnd auf eine 2. IF von 2,6 MHz. In der Software wird die 2. IF mit Hilfe von Quadratur-Lokaloszillatoren in ein komplexes Basisband (IQ) umgewandelt. Bei zweistufigen Signalen sind die Mischer einfache XOR-Tore. Obwohl oben nicht gezeigt, werden die Proben vorübergehend im FPGA-Speicher gepuffert. Die Pi ist nicht in der Lage, sie mit 10 Mbps zu akzeptieren. 1,023 Mbps und 2,6 MHz werden durch numerisch gesteuerte Oszillator (NCO) Phasenakkumulatoren erzeugt. Diese Frequenzen sind im Vergleich zur Abtastrate ziemlich groß und sind keine exakten Teilharmonischen davon. Folglich haben die NCOs fraktionierte Sporen. Die Anzahl der Samples pro Code-Chip-Dithers zwischen 9 und 10. Glücklicherweise sind DSSS-Receiver tolerant gegenüber schmalbandigen Interferenten, extern oder selbstgeneriert. Komplexes Basisband wird durch eine Vorwärts-FFT in den Frequenzbereich transformiert, die nur einmal berechnet werden müssen. Eine FFT jedes Satelliten-CA-Codes wird vorberechnet. Die Verarbeitungszeit wird von der innersten Schleife dominiert, die Verschiebung, Konjugation, komplexe Multiplikation und eine inverse FFT pro Satelliten-Doppler-Test durchführt. Die Himbeer-Pis-Videocore-GPU könnte genutzt werden, um die Dinge zu beschleunigen. Bei 10 MHz Abtastrate wird die Codephase auf die nächsten 100ns aufgelöst. Die typische CCF-Ausgabe ist nachstehend dargestellt: Die Berechnung der Peak-to-Average-Leistung über diese Daten ergibt eine gute Schätzung des SNR und wird verwendet, um die stärksten Signale zu finden. Am 4. März 2011 wurden in Cambridge, UK, mit der Antenne auf einer Außenseite nach Norden gerahmte Fensterleiste 20:14 GMT eingeholt: Von den nördlichen Breiten werden im Norden des Himmels im Süden mehr GPS-Satelliten gefunden. Wenn Sie längere Proben nehmen, erhöht sich das SNR und zeigt schwächere Signale, aber die Aufhebung erfolgt, wenn die Aufnahme NAV-Datenübergänge umfasst. Vorwärts FFT-Länge ist eine ganzzahlige Anzahl von Millisekunden, aber die inverse FFT kann verkürzt werden, einfach durch das Werfen von Daten in höherfrequenten Bins. SNR bleibt erhalten, aber die Codephase ist nicht so scharf aufgelöst. Trotzdem wird eine gute Schätzung der Peak-Position durch gewichtete Mittelung der beiden stärksten benachbarten Bins und Off-Air-Tests ergeben, was darauf hindeutet, dass dies sogar bis zu sehr kurzen inversen FFT-Längen funktionieren könnte. Nachdem ein Signal erkannt wurde, wird der nächste Schritt verriegelt, verfolgt und demoduliert die 50 bps NAV-Daten. Dies erfordert zwei inter-abhängige Phasenregelschleifen (PLLs), um Code - und Trägerphase zu verfolgen. Diese PLLs müssen in Echtzeit betrieben werden und sind als DSP-Funktionen im FPGA implementiert. Pi-Software hat eine aufsichtsrechtliche Rolle: Entscheiden, welche Satelliten zu verfolgen, den Sperrstatus zu überwachen und die empfangenen NAV-Daten zu verarbeiten. Die Tracking Loops sind gut in der Aufrechterhaltung Sperre, weil sie sehr schmale Bandbreiten haben, aber diese gleiche Charakteristik macht sie schlecht bei Erwerb Schloss ohne Hilfe. Sie können nicht über Schleifenbandbreite sehen, um etwas weiter weg zu erfassen. Anfängliche Phasen und Frequenzen müssen auf die gemessene Codephase und die Dopplerverschiebung des Zielsatelliten vorgegeben werden. Dies ist unter Pi-Kontrolle orchestriert. Die Schleifen sollten von Anfang an in-Lock sein und bleiben so. Die Codephase wird relativ zum FFT-Abtastwert gemessen. Der Code NCO im FPGA wird zu Beginn der Abtastung zurückgesetzt und akkumuliert die Phase bei einem festen 1.023 MHz. Es wird später mit dem empfangenen Code durch kurzes Pausieren des Phasenspeichers ausgerichtet. Die Dopplerverschiebung auf dem 1575,42 MHz Träger beträgt plusmn5 KHz oder plusmn3 ppm. Es beeinflusst auch die 1.023 Mbps Code Rate von plusmn3 Chips pro Sekunde. Die Länge der Pause wird in der Zeit, in der die Probe aufgenommen wurde, für Code-Kriechen eingestellt. Glücklicherweise ist der Code-Doppler proportional zum Träger-Doppler, für den wir eine gute Schätzung haben. Hardware-Software-Split In der folgenden Abbildung zeigt die Farbcodierung, wie die Implementierung des Tracking-DSP nun zwischen Hardware und Software aufgeteilt wird. Zuvor war dies alles in der Hardware, mit identischen parallelen Instanzen für jeden Kanal wiederholt, wodurch ineffiziente Verwendung von FPGA Ressourcen. Nun wird die langsamere 1-kHz-Verarbeitung per Software durchgeführt, und doppelt so viele Kanäle können in der Hälfte der FPGA-Immobilien untergebracht werden. Die sechs Integrations-und-Dump-Akkumulatoren (Sigma) werden in ein Schieberegister auf der Code-Epoche verriegelt. Ein Dienstanforderungsflag signalisiert die CPU, die die Daten bitweise seriert. Mit 8 Kanälen aktiv, 8 der CPU-Zeit verbrachte die Ausführung der oprdBit-Anweisung Aber es gibt viel Zeit und serielle IO verwendet FPGA-Gewebe wirtschaftlich. Luxuren wie RSSI - und IQ-Protokollierung (z. B. für Scatter-Plots) können nun gewährt werden. Die F (z) Schleifenfilterübertragungsfunktionen verschlingen 2 der CPU-Bandbreite pro aktivem Kanal. Dies sind Standard-Proportional-Integral - (PI) - Regler: 64-Bit-Präzision wird verwendet und Verstärkungskoeffizienten KI und KP, obwohl beschränkt auf Potenzen von 2, sind dynamisch einstellbar. Jeder Kanal, der seine Wendung abwarten muss, kann NCO-Rate-Updates durch zehn oder Hunderte von Mikrosekunden nach einer Code-Epoche verzögern, aber dies führt zu einer vernachlässigbaren Phasenverschiebung bei Frequenzen, bei denen der Phasenrand bestimmt wird. Dünne Spuren sind 1-Bit, sinnlich repräsentierend plusmn1. Der 2,6-MHz-Träger wird zuerst durch Mischen mit frühen, späten und pünktlichen Codes verteilt. I und Q komplexe Basisbandprodukte aus dem zweiten Rang der XOR-Gate-Mischer werden über 10000 Proben oder 1ms summiert. Diese Tiefpaßfilterung reduziert die Rauschbandbreite drastisch und erhöht dadurch das SNR. Downsampling auf 1 KHz erfordert breitere Datenpfade im Softwarebereich. Die Code-Phase wird mit einem herkömmlichen verzögerungsverriegelten Schleife oder einem frühen Spät-Gate verfolgt. Die Leistung in den frühen und späten Kanälen wird unter Verwendung von P I 2 Q 2 berechnet, die unempfindlich gegenüber der Phase ist. Frühe und späte Codes sind ein Chip auseinander, d. h. Frac12 Chip vor und hinter pünktlich. Dieses Diagramm hilft, den Fehler richtig zu machen: Ein Costas Loop wird für die Tracksicherung und die NAV-Datenwiederherstellung im pünktlichen Kanal verwendet. NAV-Daten, m, wird aus dem I-Arm-Zeichen-Bit mit 180-Grad-Phasenunsicherheit genommen. K empfangene Signalamplitude und theta ist die Phasendifferenz zwischen dem empfangenen Träger (sans modulation) und dem lokalen NCO. K variiert von rund 400 für die schwächsten erzielbaren Signale bis über 2000 für die stärksten. Beachten Sie, wie der Fehlerfaktor, der an den F (z) Anlagenregler in der Costas-Schleife zurückgeführt wird, proportional zur empfangenen Signalleistung ksup2 ist. Die Spurverfolgung und damit die Schleifenverstärkung variieren auch mit der Signalleistung in der Codeschleife. Unten ist ein Bode-Plot der Open-Loop-Verstärkung für die Costas Loop bei k500: Costas Loop Bandbreite ist etwa 20 Hz, was für die Carrier-Tracking optimal ist. Die Code-Loop-Bandbreite beträgt 1 Hz. Die Geräuschleistung in solchen Bandbreiten ist klein und die Schleifen können sehr schwache Signale verfolgen. Die oben genannten kI und kP arbeiten für die meisten Signale, aber müssen eine Kerbe für die sehr stärksten fallen lassen. Scilab prognostiziert, und Streuungsplots bestätigen, der Beginn der Instabilität bei kge1500. Paritätsfehler treten nicht auf, wenn die Proben in die entgegengesetzte Hälfte der IQ-Ebene übergehen. (I) Instabilität bei kge1500 Die obigen sind 2 aufeinanderfolgende Frames von jeweils 5 Subframes. Subframes sind 300 Bits lang und nehmen 6 Sekunden zum Senden. Spalte 1 ist die Präambel 10001011. Diese erscheint am Anfang jedes Teilrahmens, kann aber überall in den Daten auftreten. Der 17-Bit-Zähler in Spalte 5 ist wöchentlich (TOW) und setzt um Mitternacht Sonntag auf Null zurück. Der 3-Bit-Zähler in Spalte 7 ist der Teilrahmen ID 1 bis 5. Die Unterrahmen 4 und 5 werden jeweils in 25 Seiten unterteilt und eine vollständige Datennachricht mit 25 Vollbilder dauert 12,5 Minuten. Ich verwende derzeit nur die Daten in den Teilrahmen 1, 2 und 3. Lösen für Benutzerposition Jeder GPS-Satellit überträgt seine Position und die Zeit. Subtrahierende Zeit, die von der empfangenen Zeit gesendet wird, und das Multiplizieren mit der Lichtgeschwindigkeit ist, wie ein Empfänger den Abstand zwischen sich und den Satelliten misst. So würde mit drei Satelliten drei gleichzeitige Gleichungen in drei Unbekannten (Benutzerposition: x, y, z) ergeben, wenn die genaue Zeit verfügbar war. In der Praxis sind die Empfangsuhren nicht genau genug, die genaue Zeit ist eine vierte Unbekannte, daher sind vier Satelliten erforderlich und es müssen vier simultane Gleichungen gelöst werden: Eine iterative Methode wird verwendet, da die Gleichungen nicht linear sind. Mit dem Erdzentrum (0, 0, 0) und der ungefähre Zeit als Ausgangspunkt konvergiert der Algorithmus in nur fünf oder sechs Iterationen. Die Lösung wird gefunden, auch wenn der Benutzer-Taktfehler groß ist. Die Satelliten tragen Atomuhren, aber diese haben auch Fehler und Korrekturkoeffizienten im Teilrahmen 1 müssen auf die Zeit der Übertragung angewendet werden. Typische Anpassungen können Hunderte von Mikrosekunden sein. Die unkorrigierte Zeit der Übertragung wird durch Skalierung und Hinzufügen von mehreren Zähler gebildet. Time-of-Week (TOW) in Sekunden seit Mitternacht Sonntag wird jeder Unterrahmen gesendet. Datenkanten markieren 20ms Intervalle innerhalb von 300-Bit-Subframes. Der Code wiederholt sich 20 mal pro Datenbit. Code-Länge ist 1023 Chips und Chip-Rate ist 1.023 Mbps. Schließlich werden die 6 höchstwertigen Bits der Code-NCO-Phase angehängt, die Fixierzeit der Übertragung zu plusmn 15ns. Satellitenpositionen bei der korrigierten Sendezeit werden unter Verwendung von Ephemeriden in den Subframes 2 und 3 berechnet. Die Orbitalposition zu einer Referenzzeitzeile (Ephemeriszeit) wird zusammen mit Parametern bereitgestellt, die eine (x, y, z) Position bis zu einigen berechnen lassen Stunden vor oder nachher. Ephemeriden werden regelmäßig aktualisiert und Satelliten übertragen ihre eigenen. Langzeitbahnen der gesamten Konstellation können mit den Almanach-Daten in den Unterrahmen 4 und 5 weniger genau vorhergesagt werden. Dies ist jedoch nicht wesentlich, wenn eine schnelle FFT-basierte Suche verwendet wird. Lösungen werden in erdzentrierten, erdfixierten (ECEF) Koordinaten berechnet. Der Benutzerstandort wird mit einer Korrektur für die Exzentrizität der Erde, die sich am Äquator ausbucht, in Breiten-, Längen - und Höhenweiten umgerechnet. Die unten dargestellten Streudiagramme veranschaulichen die Wiederholbarkeit, den Nutzen der Mittelung und die Wirkung von schlechten Satellitenwahlen. Gitterquadrate sind 0,001 Grad auf jeder Seite. Blaue Punkte markieren 1000 Fixes. Gelbe Dreiecke markieren die Schwerpunkte: (i) Nordwandfenster (ii) Dachantenne (iii) Ostfrontfensterleiste Der enge Cluster (ii) wurde mit Satelliten in vier verschiedenen Seiten des Himmels gewonnen. Nur die Dachantenne hatte eine klare Sicht in alle Richtungen. Aber gute Fixes wurden durch Mittelung erhalten, auch wenn der halbe Himmel verdeckt war. Rooftop-Fixes zeigen auch Ausbreitung wie (i) und (iii) wenn die falschen Satelliten gewählt werden. Die obigen Lösungen wurden ohne Kompensation von ionosphärischen Ausbreitungsverzögerungen unter Verwendung von Parametern in Seite 18 des Teilrahmens 4 erzeugt, die angewendet werden sollten, da dies ein Einzelfrequenzempfänger ist. Ionosphärenrefraktion erhöht die Pfadlängen zwischen Nutzern und Satelliten. Im April 2012 habe ich einen Fehler behoben, der bei Benutzer-Positionslösungen erhebliche Fehler verursacht hat. Ursprünglich war ich durch die Umwandlung von Satellitenpositionen von erdzentriert-erdfixierten (ECEF) zu Erde-zentriert-inertialen (ECI) - Koordinaten wirksam die Erdrotation während der 60 bis 80 ms, die Signale im Flug waren. Ich sehe jetzt Positionslösungsgenauigkeiten von plusmn 5 Meter nach der Mittelung, auch bei eingeschränkter Sichtbarkeit des Satelliten. Ive hat einen Anhang erstellt, der zeigt, wie die iterative Lösung entwickelt wird, ausgehend von einer geometrischen Bereichsgleichung, die mit einer Taylor Series Expansion linearisiert und durch Matrixmethoden für den Spezialfall von vier Satelliten oder den allgemeinen Fall von mehr, mit dem Möglichkeit, gewichtete kleinste Quadrate zu verwenden, um den Einfluss bestimmter Satelliten zu kontrollieren. Youll finden Sie diese und Lösung C Quellcode in den Links am unteren Rand der Seite. Ich danke Dan Doberstein für die Zusendung eines frühen Entwurfs seines GPS Buches 2, der mir half, den Lösungsalgorithmus zu verstehen. Die offizielle US-Regierung GPS-Schnittstelle Spezifikation 3 ist eine wesentliche Referenz. Signalüberwachung Die oben beschriebene Schaltungsanordnung, die meistens in FPGA implementiert ist, dehnt sich aus, indem sie das Produkt aus dem 1-Bit-IF und dem pünktlichen Code nimmt und 50 BPS Datenmodulation hinterlässt. Eine kleine Kerbe durch BPSK-Trägerunterdrückung ist nur zu sehen: Diese Spektren zeigen die gleiche dekomprimierte Übertragung in verschiedenen Spannweiten und Auflösungsbandbreiten (RBW). Die Dopplerverschiebung betrug -1,2 KHz. Der Geräuschboden ist Antennen-Thermo-Rauschen verstärkt und gefiltert durch den ZF-Streifen. -3 dB Bandbreite sieht etwa 3 MHz, etwas breiter als geplant. Der de-spread Träger ist 5 dB über Rauschen bei 30 kHz RBW und 25 dB oben bei 300 Hz RBW. Die empfangene Signalstärke an der Antenne kann als -174110log10 (30e3) 5 -123 dBm geschätzt werden. Es ist immer noch erstaunt mich, wie gut die Frequenzdomain-Informationen durch die Festlegung beibehalten werden. Der LVDS-Sender hat einen konstanten Ausgangsstrom von 1mW in 100 Ohm. Die Spitzenleistung der SA kann 0 dBm nicht überschreiten. Hier sehen wir diese verfügbare Macht über eine Reihe von Frequenzen verteilt. Breitband integrierte Leistungsspektraldichte muss der erste Lokaloszillator sein Ive baute experimentelle Fraktional-N-Synthesizer mit einer universellen programmierbaren Logik für mehrere Jahre: Xilinx Spartan 3 FPGA Frac7 wurde für diesen Zweck gebaut, aber ich hatte keine Ahnung, dass Frac5 in einem GPS verwendet würde Wenn ich es ursprünglich entworfen habe. Das Foto unten zeigt, wie der ROS-1455 VCO-Ausgang auf Frac5 resistiv zwischen dem Ausgang SMA und einem Hittite HMC363 Divide-by-8-Prescaler aufgeteilt wurde. Der 200-MHz-Teilerausgang wird (anders) in den FPGA geleitet, wobei diese Phase mit einer Masterreferenz unter Verwendung von in meinen früheren Projekten dokumentierten Methoden verriegelt wird. Mikrowellenkreis auf Frac7 ist ähnlich, aber verwendet einen Mini-Circuits 3dB Splitter. Hohe Stabilität und niedriges Phasenrauschen werden erreicht, wie in den unten gezeigten VCO-Ausgangsspektren zu sehen ist. Als Frac5 ursprünglich entwickelt wurde, wurde als eigenständiger Frequenzsynthesizer das gleichzeitige Umschalten auf Frequenzen, die nicht harmonisch verwandt waren, vermieden, um Intermodulationssporen zu minimieren. Das FPGA war statisch, als Taktimpulse, die den Phasendetektorausgang umschlossen, das Gewebe überkreuzten. Kein solcher Luxus ist praktisch, wenn das FPGA einen GPS-Empfänger hostet, aber zum Glück ist der lokale Oszillatorausgang gut genug: Die Marconi 2383 Spektrumanalysatoren 50 MHz STD OUTPUT wurden als Masterreferenzquelle für Frac5 und alle internen GPS-Empfängeruhren verwendet. GPS-Empfänger benötigen Genauigkeiten besser als 1 ppm (Teile pro Million), um plusmn5 KHz Doppler-Verschiebungen auf dem 1575.42 MHz L1 Träger zu messen. Jede Frequenzunsicherheit würde einen breiteren Suchbereich erfordern. Eingebettete CPU Mein ursprünglicher GPS-Empfänger konnte nur 4 Satelliten verfolgen. Das verfügbare Gewebe wurde nicht effizient genutzt und das FPGA war voll. Die identische Logik wurde für jeden Kanal repliziert und nur in der 1-kHz-Code-Epoche getaktet. GPS-Aktualisierungsraten sind ziemlich unauffällig und die meisten der parallelen Verarbeitung können einfach nacheinander durchgeführt werden. Das Einbetten einer CPU für diese Aufgabe hat sowohl die Anzahl der Kanäle als auch den freigegebenen Speicherplatz im FPGA erhöht. Diese CPU führt direkt FORTH-Primitive als native Anweisungen aus. Die Besucher meiner Mark 1 FORTH Computer Seite werden mir schon mein Interesse an der Sprache bewusst sein. FORTH ist nicht Mainstream und seine Verwendung hier könnte eine esoterische Barriere sein, aber ich konnte nicht widerstehen, eine andere FORTH CPU zu tun, diesmal in FPGA, nachdem ich das hervorragende J1-Projekt gesehen hatte, was eine Inspiration war. FORTH ist eine Stack-basierte Sprache, die im Grunde bedeutet, dass die CPU Stacks anstelle von Allzweckregistern hat. Wikipedia hat einen guten Überblick. FPGA-Ressourcen: 360 Slices 2 BRAMs Single-Cycle-Befehlsausführung FORTH-ähnliche Dual-Stack-Architektur 32-Bit-Stack und ALU-Datenpfade 64-Bit-Doppelpräzisionsoperationen Hardware-Multiplikator 2k Byte (erweiterbar auf 4k Byte) Code und Daten RAM Makro Assembler-Code-Entwicklung Speicher und IO Zwei BRAMs werden verwendet: eine für Hauptspeicher, die andere für Stacks. Xilinx-Block-RAM ist dual portiert, so dass eine Instanz Host sowohl Daten und Rückkehr Stacks. Jeder Stapelzeiger reicht über die Hälfte des Arrays. Die doppelte Portierung des Hauptspeichers erlaubt den Datenzugriff gleichzeitig mit dem Befehlsabruf. Ein Speicher-Port wird durch den Programmzähler adressiert, der andere von T, der Oberseite des Stapels. Writes an den PC-adressierten Port werden auch für Code-Download verwendet, wobei der Programmzähler inkrementelle Adressen liefert. Code und Daten teilen sich den Hauptspeicher, der als 1024 (erweiterbar auf 2048) 16-Bit-Worte organisiert ist. Speicherzugriffe können 16-, 32- oder 64-Bit sein, Wort-ausgerichtet. Alle Anweisungen sind 16-Bit. Gesamtcode plus Datengröße der GPS-Anwendung ist weniger als 750 Wörter, obwohl alle Schleifen abgerollt sind. IO ist nicht speicherzugeordnet und besetzt seinen eigenen 36-Bit-Auswahlraum (12 in 12 aus 12 Ereignissen). Eine Heißkodierung wird verwendet, um die Auswahldekodierung zu vereinfachen. IO-Operationen sind unterschiedlich 1-Bit seriell, 16- oder 32-Bit parallel. Serielle Daten verschieben 1 Bit pro Taktzyklus. Ereignisse werden hauptsächlich als Hardware-Strobes verwendet und unterscheiden sich von Schriften, indem sie den Stapel nicht auftauchen. Instruktionsformat 24 Befehle aus einem möglichen 32 werden derzeit im opcode space h80XX - h9FXX vergeben. Dies sind meist Null-Operand-Stack-ALU-Operationen. Die ret-Option, die die Rückkehr aus der Subroutine durchführt, führt parallel zum gleichen Zyklus aus. Add-Sofort ist die einzige Ein-Operand-Anweisung. Eine Carry-In-Option erweitert (Stack, impliziert) Addition Präzision. HF0000 - hFFFF ist Ersatz. Stack - und ALU-Datenpfade sind 32-Bit, jedoch werden 16-, 32- und 64-Bit-Operationen unterstützt. 64-Bit-Werte besetzen zwei Plätze auf dem Stapel, mit niedrigstwertigen Bits oben. Top of Stack, T, und weiter auf Stack, N, sind außerhalb der BRAM für Effizienz registriert. Abgesehen von der 64-Bit-Linksverschiebung (opshl64), die für die Einzelzyklus-Ausführung fest verdrahtet ist, sind alle anderen doppelten Präzisionsfunktionen Software-Subroutinen. Assembler-Sprache Die GPS-eingebettete Binärdatei wurde mit Microsofts Macro Assembler MASM erstellt. Dies unterstützt nur x86 mnemonics, aber Opcodes werden mit equ deklariert und Code wird mit dw-Richtlinien zusammengestellt. MASM bietet nicht nur Etikettenauflösung, Makroerweiterung und Ausdrucksauswertung, sondern auch Datenstrukturen Der MASM dup () - Operator wird ausgiebig verwendet, um Loops, z. B. Dw N dup (opcall dest) ruft eine Subroutine N mal auf. Dieses Fragment gibt etwas Geschmack des Quell-Stils. Stack-Effekt wird auf jeder Zeile kommentiert: opfetch16 und opstore16 sind primitives. Opstore32 und opstore64 sind Unterroutinen oder zusammengesetzte Anweisungen, die als primitiv verwendbar sind. T ist eigentlich 15: 0,31: 16 nach opswap16. Aber wir interessieren uns nicht für die oberen 16-Bits hier. Opstore16 verlässt die Adresse Stapeltiefe kann nur plusmn1 pro Zyklus ändern. Puristen mögen es vorziehen: dw N addi Host serielle Schnittstellen Das FPGA kann über SPI mit dem Raspberry Pi oder über einen Windows PC mit einem Xilinx Platform USB JTAG Kabel gesteuert werden. Es gibt zwei Ebenen der Anforderungspriorität: Senden Sie den neuen Befehl und die Abfrage für die Antwort auf vorherige Neue Codebilder werden über einen dritten BRAM, der die CPU und serielle Clock Domains überbrückt, in den Hauptspeicher kopiert. So werden heruntergeladen, Binärbilder werden automatisch ausgeführt. Host-Befehle werden in der Bridge BRAM erfasst und die CPU wird signalisiert, sie zu handeln. Seine Antworten werden vom Gastgeber aus der Brücke beim nächsten Scan gesammelt. Die Top-Level-Hauptschleife fragt nach Host-Service-Anfragen ab. Das erste Wort einer beliebigen Host-Nachricht ist ein Befehlscode. Anfragen werden über die Befehle Sprungtabelle verschickt: optor bewegt den Vektor in den Rückgabestapel. Einige Host-Anfragen (z. B. CmdGetSamples) erlangen langwierige Antworten. Datenports auf der CPU-Seite der Brücke sind 16-Bit. Die CPU kann diese über den Datenstapel lesen und schreiben, jedoch sind für den Hochladen von Hauptspeicher und GPS-IF-Samples mehr direkte Pfade vorhanden. Die Anweisung opwrEvt GETMEMORY überträgt ein Speicherwort direkt an die Brücke, wobei T als auto-inkrementierender Zeiger verwendet wird. GETMEMORY ist das einzige Ereignis, das Stack-Effekt hat. Der Befehl opwrEvt GETSAMPLES überträgt 16 Bits vom IF-Sampler: Unrolling-Loops bei der Montagezeit mit dup () Trades Code-Größe für Performance, Vermeidung eines Dekrement-Test-Branch-Hit und die gesamte Applikations-Binär ist immer noch winzig aber lange Schleifen müssen verschachtelt werden , as illustrated above. CHANNEL data structure An array of structures holds state variables and buffered NAV data for the channels. MASM has excellent support for data structures. Field offsets are automatically defined as constants and the sizeof operator is useful. The epoch service routine (labelled Method: ) is called with a pointer to a CHANNEL structure on the stack. Affecting OO-airs, stack-effect comments refer to it as this throughout the routine. A copy is conveniently kept on the return stack for accessing structure members like so: The Chans array is regularly uploaded to the host. Raspberry Pi application software The Raspberry Pi software is multi-tasked using what are variously known as coroutines, continuations, user-mode or light-weight threads. These co-operatively yield control, in round-robin fashion, using the C library setjmplongjmp non-local goto, avoiding the cost of a kernel context-switch: Up to 16 threads can be active:Advanced Source Code. Com 31.10.2015 Matlab source code for biometric recognition has been updated. Reduced costs . all software is provided with big discounts, many codes are offered for free. Better performances . some minor bugs have beed fixed. Enhanced software capabilities . many codes have been improved in terms of speed and memory management. Follow us on Twitter Follow us on FaceBook Follow us on YouTube Follow us on LinkedIn Real-time help . connect us now with WhatsApp 393207214179 Video tutorial . software is intuitive, easy to understand and well documented. For most of codes many video tutorials have been published at our YouTube channel. We also develop software on-demand. For any question please email us. Join us21.06.2005 A biometric system can be viewed as a pattern recognition system consisting of three main modules: the sensor module, the feature extraction module and the feature matching module. The design of such a system is studied in the context of many commonly used biometric modalities - fingerprint, face, speech, hand, iris. Various algorithms that have been developed for each of these modalities will be presented. 16.05.2006 A neural network is an interconnected group of biological neurons. In modern usage the term can also refer to artificial neural networks, which are constituted of artificial neurons. Thus the term Neural Network specifies two distinct concepts: - A biological neural network is a plexus of connected or functionally related neurons in the peripheral nervous system or the central nervous system. - In the field of neuroscience, it most often refers to a group of neurons from a nervous system that are suited for laboratory analysis. Artificial neural networks were designed to model some properties of biological neural networks, though most of the applications are of technical nature as opposed to cognitive models. Neural networks are made of units that are often assumed to be simple in the sense that their state can be described by single numbers, their activation values. Each unit generates an output signal based on its activation. Units are connected to each other very specifically, each connection having an individual weight (again described by a single number). Each unit sends its output value to all other units to which they have an outgoing connection. Through these connections, the output of one unit can influence the activations of other units. The unit receiving the connections calculates its activation by taking a weighted sum of the input signals (i. e. it multiplies each input signal with the weight that corresponds to that connection and adds these products). The output is determined by the activation function based on this activation (e. g. the unit generates output or fires if the activation is above a threshold value). Networks learn by changing the weights of the connections. In general, a neural network is composed of a group or groups of physically connected or functionally associated neurons. A single neuron can be connected to many other neurons and the total number of neurons and connections in a network can be extremely large. Connections, called synapses are usually formed from axons to dendrites, though dendrodentritic microcircuits and other connections are possible. Apart from the electrical signalling, there are other forms of signaling that arise from neurotransmitter diffusion, which have an effect on electrical signaling. Thus, like other biological networks, neural networks are extremely complex. While a detailed description of neural systems seems currently unattainable, progress is made towards a better understanding of basic mechanisms. Artificial intelligence and cognitive modeling try to simulate some properties of neural networks. While similar in their techniques, the former has the aim of solving particular tasks, while the latter aims to build mathematical models of biological neural systems. In the artificial intelligence field, artificial neural networks have been applied successfully to speech recognition, image analysis and adaptive control, in order to construct software agents (in computer and video games) or autonomous robots. Most of the currently employed artificial neural networks for artificial intelligence are based on statistical estimation, optimisation and control theory. The cognitive modelling field is the physical or mathematical modelling of the behaviour of neural systems ranging from the individual neural level (e. g. modelling the spike response curves of neurons to a stimulus), through the neural cluster level (e. g. modelling the release and effects of dopamine in the basal ganglia) to the complete organism (e. g. behavioural modelling of the organisms response to stimuli). 11.06.2007 Genetic algorithms constitute a class of search, adaptation, and optimization techniques based on the principles of natural evolution. Genetic algorithms were developed by Holland. Other evolutionary algorithms include evolution strategies, evolutionary programming, classifier systems, and genetic programming. An evolutionary algorithm maintains a population of solution candidates and evaluates the quality of each solution candidate according to a problem-specific fitness function, which defines the environment for the evolution. New solution candidates are created by selecting relatively fit members of the population and recombining them through various operators. Specific evolutionary algorithms dier in the representation of solutions, the selection mechanism, and the details of the recombination operators. In a genetic algorithm, solution candidates are represented as character strings from a given (often binary) alphabet. In a particular problem, a mapping between these genetic structures and the original solution space has to be developed, and a fitness function has to be defined. The fitness function measures the quality of the solution corresponding to a genetic structure. In an optimization problem, the fitness function simply computes the value of the objective function. In other problems, fitness could be determined by a coevolutionary environment consisting of other genetic structures. For instance, one could study the equilibrium properties of game-theoretic problems whereby a population of strategies evolves with the fitness of each strategy defined as the average payoff against the other members of the population. A genetic algorithm starts with a population of randomly generated solution candidates. The next generation is created by recombining promising candidates. The recombination involves two parents chosen at random from the population, with the selection probabilities biased in favor of the relatively fit candidates. The parents are recombined through a crossover operator, which splits the two genetic structures apart at randomly chosen locations, and joins a piece from each parent to create an offspring (as a safeguard against the loss of genetic diversity, random mutations are occasionally introduced into the offspring). The algorithm evaluates the fitness of the offspring and replaces one of the relatively unfit members of the population. New genetic structures are produced until the generation is completed. Successive generations are created in the same manner until a well-defined termination criterion is satisfied. The final population provides a collection of solution candidates, one or more of which can be applied to the original problem. Even though evolutionary algorithms are not guaranteed to find the global optimum, they can find an acceptable solution relatively quickly in a wide range of problems. Evolutionary algorithms have been applied to a large number of problems in engineering, computer science, cognitive science, economics, management science, and other fields. The number of practical applications has been rising steadily, especially since the late 1980s. Typical business applications involve production planning, job-shop scheduling, and other difficult combinatorial problems. Genetic algorithms have also been applied to theoretical questions in economic markets, to time series forecasting, and to econometric estimation. String-based genetic algorithms have been applied to finding market-timing strategies based on fundamental data for stock and bond markets. 23.04.2006 A list of matrix-based programming languages: Scilab - Scilab is a scientific software package for numerical computations providing a powerful open computing environment for engineering and scientific applications. Developed since 1990 by researchers from INRIA and ENPC, it is now maintained and developed by Scilab Consortium since its creation in May 2003. The R Project for Statistical Computing - R is a free software environment for statistical computing and graphics. It compiles and runs on a wide variety of UNIX platforms, Windows and MacOS. Octave - Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with Matlab. It may also be used as a batch-oriented language. Python - Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code. before a link means the link points to a binary file, not a readable page) Research Code A rational methodology for lossy compression - REWIC is a software-based implementation of a a rational system for progressive transmission which, in absence of a priori knowledge about regions of interest, choose at any truncation time among alternative trees for further transmission. To circumvent the lack of knowledge of what distortion measure is more suitable for optimization of the trade-off between image fidelity and coding rate, this coder shall introduce a novel mathematical methodology for rate control by organizing the progressive transmission in accordance with coherence constraints for avoiding forms of behavioral inconsistency. A set of postulates is provided for specifying the ways in which preferences need to be made precise and fit together if illogical forms of behavior are to be avoided. We show that the rational choice for transmission at truncation time t is to select bit streams which have the maximum expected increase in utility per coding bit, where rational must be understood in the sense that it cannot lead the transmission system into forms of behavioral inconsistency. This method is then used within a progressive transmission scheme to produce a new compression method called rational embedded wavelet image coding (REWIC). (by J. A.Garcia, Rosa Rodriguez-Sanchez, J. Fdez-Valdivia Computer Vision Group. University of Granada. University of Granada ) Active Appearance Models - Extensions and Cases - This site acts as home for the the AAM-API which is a free C implementation of the Active Appearance Model method. Several results and models are also given. ( Section for Image Analysis The Technical University of Denmark ) Associative Memory for Face Memorization and Recognition - Free fully self-contained C code for on-the-fly storing and retrieving of patterns, such as binary coded faces, using projective associative memory. (by Dmitry Gorodnichy Computational Video Group NRC-CNRC ) Automatic edge thresholding - Automatic edge thresholding as described in paper by Venkatesh and Rosin (GMIP, Vol. 75, pp. 146-160, 1995) (by Paul Rosin, Svetha Venkatesh Cardiff University Cardiff University) Belief Propagation for Early Vision - Fast algorithms for MRF based stereo and image restoration. (by Pedro Felzenszwalb) BrainTechs Odysee Development Studio - Commercial program - A drag-and-drop environment for vision system prototyping and testing (a la Wit, Vision Blox, Khoros, etc.). It is also an open architecture so that one can import their own CC functions. (by Ajay Sidda Odysee BrainTech ) Camera Array Viewer - CAView is a free package about a 3D viewer from multiple input images (image-based rendering) using on-the-fly geometry reconstruction. CAView includes an algorithm that reconstructs the scene geometry in the form of a 2D mesh model, which runs fast and gives good rendering quality. It could be easily extended and used in 3D video conferencing applications. (by Cha Zhang Advanced Multimedia Processing Lab Carnegie Mellon University ) Camera Calibration - Routines for calibrating using Roger Tsais perspective projection camera model. (by Reg Willson CMU) CMVision Color Machine Vision Library - A free low level color vision processing library, which is able to threshold and calculate connected components of 640x480 60fps video streams entirely in software. (by James Bruce CORAL research group Carnegie Mellon University ) Collective rationality for the allocation of bits - CORAL is a software-based implementation of a new coder scheme that in absence of a priori knowledge about regions of interest propose a new method for bit allocation which can be used with reasonable internal consistency and acceptable image fidelity. The effectiveness of a coding method can be improved through a space-varying filterbank tree representation of the image, and this property can be conveniently exploited using appropriate bit allocation strategies among the spatial segments of the image. In CORAL we examine the conditions for achieving a rational agreement on the distribution problem by stating axioms that its solution must obey in absence of a priori knowledge about regions of interest. Firstly, a measure of benefit avoiding certain forms of behavioral inconsistency is to be assigned to each possible bit allocation in such a way that each regions preference may be inferred between any two bit allocations from their respective benefits. Secondly, individual regions are to agree on an allocation of bits which is then to be brought about by a joint strategy, but, under what conditions is their agreement rational CORAL propose a characterization of rational agreement whose solution is an application of a general procedure for cooperative action where each may benefit only on terms which permit proportionately equal benefits to others. Experimental results are given to evaluate the performance of the strategy of COllective Rationality for the ALlocation of bits (CORAL), based upon a validated predictor for visual distinctness from digital imagery. (by J. A.Garcia, Rosa Rodriguez-Sanchez, J. Fdez-Valdivia Computer Vision Group. University of Granada. University of Granada ) Compound Gain: A visual distinctness metric for coder performance evaluation - CG is a visual distinctness metric that constitutes an alternative to PSNR for evaluating the performance of compression methods. ( Computer Vision Group University of Granada. Spain ) Convex grouping code - Robustly locates salient convex collections of line segments in an image. (by David Jacobs) Coriander - Coriander is a 1394 camera controller for Linux. It let you control the camera, plus save, FTP, stream and display live video. (by Damien Douxchamps Telecom lab Universite Catholique de Louvain ) Disparity Analysis of Images - This java-based application estimates the disparity between two images. It works by first detecting remarkable points in both images and then finding the best possible match between the two sets of points. (by Lionel Le Briquer) Distance Transform - Fast algorithm for computing the Euclidean distance transform of a binary image and the distance transform of a sampled function. (by Pedro Felzenszwalb University of Chicago) Edge list approximation code - From Nonparametric segmentation of curves into various representations . PAMI 1995 pp 1140-1153. by Paul Rosin and Geoff West. EuclidStudio Preview - Preview of an open source project for integration and development of computer vision and video processing libraries. The preview application demonstrates a simple integration of Intels OpenCV library and the MPEG-4 AVC reference software. Gandalf - Gandalf is a computer vision and numerical algorithm library, written in C, which allows you to develop new applications that will be portable and run FAST. Includes many useful vision routines, including camera calibration, homographies, fundamental matrix computation, and feature detectors (includes source code). Dynamically reconfigurable vector, matrix and image structures in Gandalf allow efficient use of memory. Gandalf has been used to develop the MoKey motion editing software, released at IBC2001 in Amsterdam. MoKey performs automatic inpainting of moving objects over an image sequence, and can also be used to compute an accurate alpha matte or outline of an object. Gandalf currently contains four packages: 1) Common package of simple structures and routines used by the other packages, such as memory allocation, linked lists and error handling 2) Linear algebra package with a large number of routines for matrix and vector manipulations 3) Image package defining a general purpose image structure and low-level image manipulation routines 4) Vision package containing a number of standard image processing, computer vision and numerical routines. The major design features of Gandalf are: (i) Efficient use of memory through dynamically reconfigurable structures (ii) Emphasis on support of numerical algorithms, especially optimisation (iii) A very flexible and efficient internal image representation, (iv) A comprehensive set of matrixvector operations, incorporating implicit matrix transpose inverse, and in-place computation where appropriate Exploitation of the computational and compilation speed advantages of C over C in reducing the number of layers of abstraction over the raw data, an approach we believe is appropriate for simple objects such as matrices, vectors and images. The documentation for Gandalf comes in two parts. There is a LaTex tutorial with examples available also in HTML (via Latex2html). Reference documentation for Gandalf has also been generated using ObjectOutline, (by Philip McLauchlan Imagineer Software Ltd ) General Image Rectification - Re-usable free C source code library for performing general image rectification Rectification is the process of simplifying the epipolar geometry by making epipolar lines in a pair of images co-incident and parallel to the x axis. The code presented here is a free C library incl. source code for performing general image rectification given the fundamental or essential matrix. The method used is general and so will work for ANY valid epipolar geometry. The method also has the advantage over other methods of attempting to minimise image distortion caused by rectification and ensuring that disparities will be roughly centred on 0 pixels. (by Daniel Oram ) Gradient Vector Flow Active Contour - The purpose of GVF active contour is to extract parameterized contour description from images. Matlab implementation is available for both UNIX and Windows. (by Chenyang Xu and Jerry L. Prince Image Analysis and Communications Laboratory Johns Hopkins University ) GREYCstoration. A fast PDE-based algorithm for image restoration. - This web site exposes a fast algorithm for image restoration. Several examples are provided, and the executable can be downloaded for Windows and Unix. (by David Tschumperle GREYC ) GSnake - Contour modeling, extraction, detection, and classification. Hidden Markov Model routines - Implementation of Forward, Backward, Viterbi and Baum-Welch algorithms. The code follows Rabiner and Juang notation. Written in c. (by Tapas Kanungo Center for Automation Research University of Maryland, College Park ) IIDC Control Library for 1394 cameras - libdc1394 is a library for controlling and acquiring images from a 1394 IIDC compliant camera. (by Gord Peters, Damien Douxchamps, Dan Dennedy al. Telecom Lab UCL ) Image Segmentation - Implementation of an efficient graph-based image segmentation algorithm. (by Pedro Felzenszwalb University of Chicago) Intel Open Source Computer Vision Library - Computer vision routines, applications and tutorials. Open Source, FREE for academic AND commercial use. Assembly language optimized on Intels processor line. Areas covered are Geometric Methods, Recognition, Image Pyramids Camera Calibration, Tracking, and Fitting. (by Vadim Pisarevsky, Dmitry Abrosimov. Jean-Yves Bouguet. Gary R. Bradski. Valery Cherepennikov. Michael Chu. Boris Chudinovich. Prof. Trevor. Bob Davies. Prof. James Davis. Victor Eroukhimov. Prof. Irfan Essa. Radek Grzeszczuk. Mark Holler. Prof. Jitendra Malik. Sergey Molinov. Valery Mosyagin. Ara Nefian. Sergey Oblomov. Prof. Pietro Perona. Vadim Pisarevsky, Alexander Pleskov, Chuck Richards, Prof. Stan Scarloff, Stewart Taylor, Prof. Carlo Tomasi Visual Interactivity Lab Intel Corporation) KLT - An implementation of the Kanade-Lucas-Tomasi feature tracker. (by Stan Birchfield) LogicalLinear Operators (by Lee Iverson ) LTI-LIB computer vison library - an object oriented library with algorithms and data structures frequently used in image processing and computer vision. The LTI-Lib is an object oriented library with algorithms and data structures frequently used in image processing and computer vision. It has been developed at the Chair of Technical Computer Science (Lehrstuhl fuer Technische Informatik) LTI at the Aachen University of Technology, as part of many research projects in computer vision dealing with robotics, object recognition and sing language and gesture recognition. Machine vision without pixels - A tutorial and open source code for finding edges and corners based on the filters used in primary visual cortex. (by Tyler Folsom DigiPen Institute of Technology ) MATLAB Functions for Computer Vision - A collection of MATLAB functions including: Feature detection via Phase Congruency, Non-maxima suppression and hysteresis thresholding, Edge linking and line segment fitting, Image denoising, Frequency domain transformations, Functions supporting projective geometry, Surface normals to surfaces using Shapelets, Robust estimation, and more. (by Peter Kovesi Vision Research Group The University of Western Australia ) Maximum-Flow Stereo Algorithm - Code for the maximum-flow formulation of the N camera stereo correspondence problem. (by Sebastien Roy Universit de Montral) MeasTex - A framework for quantitative measurement of image texture classification algorithms. MegaWave - Wavelet, Snake and Segmentation source code. Microsoft Easy Camera Calibration Tool - a flexible camera calibration technique, which only requires the camera to observe a planar pattern shown at a few (at least two) different (unknown) orientations. (by Zhengyou Zhang Vision Technology Group Microsoft Corp. ) MMach - A Mathematical Morphology Toolbox for the Khoros System Modelling the initial stages of visual information processing. - Ret4 - software for modelling and observing reactions of retinal cells NIST Handwriting OCR Testbed - OCR software and datasets for UNIX systems. Non-Rigid Structure from Motion - Matlab software for reconstructing non-rigid 3D shape from tracking data. (by Lorenzo Torresani, Aaron Hertzmann, and Chris Bregler Movement Group ) OpenVIDIA. Parallel GPU Computer Vision - The OpenVIDIA project implements computer vision algorithms on computer graphics hardware, using OpenGL and Cg. The project provides useful example programs which run real time computer vision algorithms on single or parallel graphics processing units(GPU). ( EyeTap Personal Imaging Lab University of Toronto) OpenVIDIA: Parallel GPU Computer Vision - The OpenVIDIA project implements computer vision algorithms on computer graphics hardware in real-time, using OpenGL and Cg. The OpenVIDIA project implements computer vision algorithms on computer graphics hardware in real-time, using OpenGL and Cg. The project provides useful example programs which run real time computer vision algorithms on single or parallel graphics processing units(GPU). OpenVIDIA utilizes the computational power of the GPU to provide real--time computer vision much faster than the CPU is capable of, and leaves the CPU free to conduct other tasks beyond vision. Perceptual Organization Software Philip Torrs stereo vision code - routines to generate corner matches between images guided by RANSAC and epipolar geometry, fundamental matrix estimation, synthetic data generation, trifocal tensor estimation, and more. (by Philip Torr Oxford Brookes University) Projective Vision Toolkit - PVT is a series of utilities that allows one to take an image sequence and compute the fundamental matrix and trilinear tensor. This can be used for such problems as camera self-calibration, structure from motion, camera motion annotation, image stabilization, 3D tracking and recognition, etc. ( Computational Video Group of NRC ) Real-time dense stereo - E-Stereo is a library that enables to perform real-time dense stereo from 2 or 3 rectified images. It relies on a two-pass algorithm. (correlation-based algorithm region growing w. r.t. photometric constraints). (by David Demirdjian Vision Interfaces MIT ) Salience distance transform - The salience distance transform incorporates edge strength information into the distance transform. The output is more robust and informative as input for techniques such as snakes. (by Paul Rosin, Geoff West Cardiff University) Savitzky-Golay Filters for 2D Images - This web page describes the derivation of the Savitzky-Golay filters for 2D images, gives MatLab routines for computing the filters, and gives C files with the filter coefficients. (by John Krumm Vision Technology Research Group Microsoft Research ) sba: A Generic Sparse Bundle Adjustment CC Package Based on the Levenberg-Marquardt Algorithm - Generic sparse bundle adjustment for multiview reconstruction vision tasks. sba exploits the sparse structure of the problem to efficiently minimize the image reprojection error. (by Manolis Lourakis Computational Vision and Robotics Lab Foundation for Research and Technology - Hellas ) Segmentation of Skin-Cancer Images - Implementation of an algorithm for segmenting images of skin cancer and other pigmented lesions (see Image and Vision Computing, January 1999, pp. 65-74). An automatic method for segmention of images of skin cancer and other pigmented lesions is implemented. This method first reduces a color image into an intensity image and approximately segments the image by intensity thresholding. Then, it refines the segmentation using image edges. Double thresholding is used to focus on an image area where a lesion boundary potentially exists. Image edges are then used to localize the boundary in that area. A closed elastic curve is fitted to the initial boundary and is locally shrunk or expanded to approximate edges in its neighborhood in the area of focus. Segmentation results from twenty randomly selected images show an average error that is about the same as that obtained by four experts manually segmenting the images. (by L. Xu, M. Jackowski, A. Goshtasby, C. Yu, D. Roseman, S. Bines, A. Dhawan, A. Huntley Intelligent Systems Laboratory Wright State University ) SketchUp - A demo package for recognizing hand-drawn sketches through Size Functions. ( Vision Mathematics group University of Bologna) SRI Stereo Engine Software - fast stereo software for PCs. It performs disparity calculations and filtering in real time on images up to 320x240 in size. ( SRI Artificial Intelligence Center SRI International ) SSD tracking matlab toolbox (Jacobian Factorisation based) - Matlab toolbox for SSD based tracking, in which we implemented the Jacobian Matrix factorisation of Hager and Belhumeur. In this toolbox we have additionaly implemented our Jacobian matrix factorisation for a projective motion model (see paper: Real-time tracking and estimation of plane pose, Jos Miguel Buenaposada Biencinto, Luis Baumela Molina. Proc. of International Conference on Pattern Recognition, ICPR 2002. Vol II, pp. 697-700, IEEE. Quebec, Canada, August 2002.). (by Jose M. Buenaposada, Luis Baumela Technical University of Madrid (Universidad Politcnica de Madrid)) Statistical Discriminant Learning for Face Recognition - Matlab source code for LinearQuadraticKernel Discriminant Learning algorithms, which can be used for applications such as face recognition. (by Juwei Lu Multimedia Laboratory at the University of Toronto University of Toronto ) Steerable Pyramid Check Eeros home page for a tar file. (by Eero Simoncelli ) Stereo Calibration - free java-based software for camera calibration and stereo rig calibration. The device uses a calibration object. Non-linear estimation of the parameters of a single camera. correction of distortion. Non-linear estimation of the parameters of a stereo-rig from several positions of a calibration object. 3D reconstruction and metrologic statistics. acquisition of images. (by Matthieu Personnaz MOVI INRIA ) Stereo Matching and Evaluation - A stand-alone C implementation of many stereo algorithms including an evaluation module using ground truth and prediction error (by Daniel Scharstein, and Richard Szeliski Middlebury Stereo Vision Research Page Middlebury College ) SUSAN - Low-level image processing. SUSAN is an acronym for Smallest Univalue Segment Assimilating Nucleus. The SUSAN algorithms cover image noise filtering, edge finding and corner finding. (by Steve Smith Oxford University) TargetJr - A C Computer Vision Environment - C programing environment with libraries to support: image processing image segmentation camera modeling 2-d and 3-d geometry a graphical user interface based on FRESCO. TargetJr has been developed over the last 10 years, starting at GEs Corporate RD Center. Currently TargetJr is used by a number of vision research groups with emaphasis on geometric algorithms and object recognition. TargetJr is written in C and organized into a number of libraries including: numerics spatial objects image image processing segmentation computational geometry 3-d modeling and user interface. (by Joseph Mundy, William Hoffman, Andrew Fitzgibbon, Peter Vanroose and Rupert Curwen GE Corp. RD, Oxford University, University of Leuven) Texture Synthesis and Analysis by Rupert Paget - Fast texture synthesis by nonparametric MRF modelling. Source code is provided, plus many free textures. Fast Semi Causal Nonparametric Markov Random Field Texture Synthesis. This algorithm is a cut down version of the algorithm published in IEEE Transactions on Image Processing 1998. In this version, it has been rewritten for a single cpu machine. To maintain speed of synthesis, the update function UpdateFn() has been set to return the maximum value. If this was modified to return a portion of the maximum value, then the synthesis would take longer, but there would be a gain in quality. If you do decide to modify the code, be careful, as I have not put in any safeguard checks. Best to fully understand the whole code, before modifying it. Recently there has been quite an influx of nonparametric sampling techniques for texture synthesis, this is because it has been the nonparametric models that have had the greatest success at synthesising arbitrary textures. This technique uses a multiscale approach, which has the advantage that only a small neighbourhood is required. This fast version implements a modification based on Ashikhmins Synthesizing Natural Textures. As noted in his work, the L2 norm may not be the best measure to test for perceptual similarity between two neighbourhoods. Instead, we may note that if we are only taking pixels from the input image (and not sampling from a larger distribution), then when we iterate a respective pixel, we can be assured that each of its defined neighbours occur within the input image. Speed can be gained if, instead of doing a exhaustive search, we only sample from those pixels which have the same neighbour. In this algorithm I have modified Ashikhmins approach by using our previous algorithm, and sampling from all pixels which have at least one of its neighbours the same colour as its respective neighbour of the pixel being iterated. This algorithm works well for natural textures which have a pixelwise noise distribution. (by Rupert Paget Swiss Federal Institute of Technology - Computer Vision Group Swiss Federal Institute of Technology ) The Reading People Tracker - The Reading People Tracker is a software for tracking people in camera images for visual surveillance purposes. The Reading People Tracker is written in C. It originates from research work on people tracking for automatic visual surveillance systems for crime detection and prevention. It was built within the context of two PhD theses (by AM Baumberg and NT Siebel) and contains many image processing algorithms. It is easily maintainable and well documented. Therefore it can (and has already been) easily be adapted to new requirements and different projects. The Reading People Tracker contains the necessary functionality to read video sequences from hard disk or a video camera (IEEE1394DV), to manipulate the images with image filters and to analyse them with a number of detection and tracking modules. (by Nils T Siebel, Adam Baumberg Cognitive Systems Group Christian-Albrechts-University of Kiel ) ToolDiag - Pattern recognition of multivariate numerical data. Uncalibrated Stereo by Singular Value Decomposition - This stereo algorithm allows to match features across a pair of stereo images with unparalleled algorithmic simplicity and neatness. Results are comparable to complex relaxation methods. Its simple implementation has made it a good off-the-shelf solution for a number of researchers needing a fast a easy-to-integrate matching module. (by Maurizio Pilu Hewlett Packard Research Laboratories) University of Calgary vision software - Includes chain code, Hough transform, and others. UNL Fourier Features (UFF) - An implementation of a general purpose 2-D shape description method. (by Thomas Rauber ) VISCA(tm) Control Library - libVISCA is a library for controlling a VISCA compliant camera (such as several camera blocks from Sony) (by Damien Douxchamps Telecom Lab UCL ) Visual Hull Modeling Library - A linux library for building a polyhedral representation of the visual hull, from a set of binary images and the corresponding camera calibration matrices. (by Jean-Sebastien Franco MOVI - Models for Vision INRIA Rhone-Alpes ) VXL - C libraries for Computer Vision - The Vision-something-Libraries are a collection of C libraries designed for computer vision research. It was created from TargetJr and the Image Understanding Environment (IUE) with the aim of making a lighter, faster and more consistent system. VXL is written in ANSIISO C and is designed to be portable over many platforms. It is developed and used by a consortium including groups from the Universities of Leuven, Oxford, Manchester, and RPI, GE CRD. ( VXL Consortium ) XVision visual tracking software - Application independent, configurable interface to high-speed tools for visual feature tracking. Uses include tracking a persons eyes and mouth, gesture recognition. Contains interfaces to many popular cameras and frame grabbers. (by Greg Hager Computational Interaction with Physical Systems ) ZipPack Polygon Mesh Zippering - Combines several range images into a polygonal mesh. Image Processing Toolkits 2D and 3D Image Filter: Facor. - Facor is an image filter suitable for enhancement of wide variety of 2D and 3D images, including medical diagnostic images (commercial software). Facor image filter is a program that detects image structures and distinguishes them from a noise in digital images. Based on this detection, it is possible to suppress noise, or to emphasize image structures, or both. This processing improves the Signal to Noise Ratio and visual presentation of images. (by Michael Semenchenko) Able Image Analyser - Windows application for image analysis, processing and measurement (commercial software). Able Image Analyser supports image analysis functions that include dimensional, gray scale and 24 bits color measurements: distance, area, angle, point, line, pixel profile, histogram etc. (from images or selections) with statistics that calculate basic statistics (count, mean, median, minimum, maximum, range, variance, standard deviation, coefficient of variation, skew and kurtosis) and frequencies. Spatial calibration is available to provide real world dimensional measurements such as kilometers, centimeters, millimeters, nanometers, microns, cm, miles, etc. for both linear and area measurements. All manual measurements are written into a spreadsheet, where you can enter and edit data as well. The measurements can be exported as CSV, HTML or ASCII file formats. The images can be exported as RGB, HSV or 8 Bit channels, generating a matrix with the decimal or hexadecimal values of the image pixels, in order to process them in another application. Able Image Analyser provides for geometric transformations such as rotate, resize, merge, flip horizontal and vertical, rotate or flip selection. The program is a multiple document interface (MDI) application supporting any number of windows (images) simultaneously. The program supports standard image processing functions such as subtract background, brightness and contrast manipulation, invert image color, channels manipulation, spatial convolutions with user-defined convolution masks and morphing filters. ( MuLabs ) AcquireNow - A real-time image acquisition and processing product. (Commercial product ). The product includes a COM (Component Object Model) component, which allows developers to create powerful imaging applications quickly and easily using COM supported languages such as C and Visual Basic. The AcquireNow package include the AcquireNowClient application. AcquireNowClient is a stand-alone application, which can be used to acquire, display, and save images to disk. The AcquireNowClient application also allows the user to perform real time image averaging, scaling and flat fielding. Source code for the AcquireNowClient application is included, and can be used by customers as a base for their own imaging applications. ( Boulder Imaging, Inc. ) AdOculos - PC-based image processing without the need of extensive programming knowledge The following image processing functions are realized as DLLs. The complete C source code of these DLLs is part of the standard pack. Point, local and global, morphological operations Texture, image sequence Histograms procedures Hough and color transformations Automatic counting and interactive measuring Pattern recognition, graylevel profile General purpose and display functions ( The Imaging Source ) An Image Processing Laboratory - IMLAB is a free open source graphical application for Scientific Image Processing that runs in Windows, Linux and many other UNIX systems. It supports multiple windows, data types including 32 bit integers, 32 bit real numbers and complex numbers. It is implemented in C and also in C to provide a very simple way to add new functions. It has many image operations and supports several file formats. An Imaging Library - IM is free open source set of libraries that contains a series of C functions and C classes for handling digital images. It has support for capture devices, multipaged image file formats, many image processing functions, scientific data types and attributes. ( TecgrafPUC-Rio ) Aphelion - Commercial image processing and understanding package for Windows. Features a rapid prototyping environment, image processing and object recognition libraries, and a vision tutorial. Aphelion is a commercial software product which can be used to quickly develop vertical imaging applications. It is a comprehensive and powerful development environment and a delivery vehicle for image-based applications, including a Graphical User Interface, Image Processing libraries available as DLLs or ActiveX components, a Visual Basic compatible scripting language, a chart server, etc. Aphelion provides the very latest developments in mathematical morphology and symbolic representationrecognition, as well as effective tools for quantitative analysis, microscopy, pattern recognition, and classification. (by Bruno Lay Amerinex Applied Imaging Inc. ) AutoTrace - AutoTrace converts bitmaps to vector graphics (by Martin Weber) Bersoft Image Measurement - Measure length, angle, segments, perimeter and area in digital images. Commercial package for windows. Bersoft Image Measurement runs under Windows 9.xNT and it is intended to measure length, angle, segments, perimeter and area in digital images. It can be used in multiple scientific disciplines, such as Biology, Ecology, Geography, Agronomy, and Natural Sciences. It also can export matrixes (Exporting RGB values) with the decimal or hexadecimal values of the image pixels. The DEMO version can realize all the functions, but only over images saved in a propietary format: Image Bersoft Bitmap (bim extension). ( Bersoft ) CImg. A C Image Processing Library - CImg is a free C toolkit providing a set of classes designed to process and display images. Contains algorithms classically used in computer vision. (by David Tschumperle Odysse Lab INRIA Sophia Antipolis ) Clemex Vision - Commercial software for analysis of images from microscopes. Color Reduction and Multithresholding - Free image processing software for color reduction and quantization, multithresholding, Hough Transform etc. (Image and Multimedia Laboratory Democritus University of Thrace, Greece) Common Vision Blox - A modular and open software development platform to solve image processing and machine vision applications (Windows, Commercial product) ( Stemmer Imaging GmbH ) CppIma - C image processing library. CVIPtools - GUI-based computer vision and image processing tools, ANSI-C source code and libraries for Windows95NT and UNIX, extended computer imaging TCL shell. Also contains an extended Tcl shell with all the computer imaging functions. ANSI-C source code and libraries for image analysis, image compression, image enhancement, image restoration, and many imaging utilities. Used for both research and education, as well as applications development. (by Scott E Umbaugh, Greg Hance, Arve Kjoelen, Kun Luo, Mark Zuke, Yansheng Wei and others CVIP Group Southern Illinois University at Edwardsville ) DTU Image Viewer and Analyser - The DIVA consists of a number of image analysis functions collected in C template image classes and a windows interface, which handles a wide variety of different image file formats and pixel types. Everything is available as source code. (Section for Image Analysis Technical University of Denmark ) Edge Detection and Image Segmentation - EDISON is a system with a GUI that performs mean shift based discontinuity preserving filtering and image segmentation as well as edge detection with embedded confidence. The operations can be executed either alone or synergistically. ( Robust Image Understanding Laboratory Rutgers University) EdgeDetector - JavaBean for edge detection using Canny algorithm (commercial software) EdgeDetector is a JavaBean that implements Canny edge detection algorithm. The Canny algorithm is advantageous with its capability of anti-noise, subpixel-level detecting accuracy, and one-pixel width of resulting edges. The employment of the Canny algorithm is able to detect edges of an image with much less loss than the use of other algorthms of edge detection. The EdgeDetector can be integreted into any Java application or Applet in Java 1.1 or later visions with the JDK or JavaBeans environment. An application example is included in the software package. EIKONA - A family of general purpose, highly portable image processing applications. The full implementations contain more than 500 routines. Demos available. (commercial software) (AlphaTec ) eVision - Commercial image processing and analysis toolkit for use in industrial applications on Windows platforms. There is also a rapid prototyping development environment called EasyAccess. eVision provides all familiar tools in image processing such as image linear and morphological filtering, projections, profiles, geometric transforms, color conversions, blob analysis, pattern matching as well as application libraries such as OCR, matrix code reading, mark inspection. These tools are provided in a form well suited for rapid application development and are extremely fast. ( Euresys ) Exbem: Scientific Image Processing Analysis - Exbem is a software for scientific image processing analysis under MacOS. Exbem handles images, QuickTime movies, and live-video. Multiple operators can be assigned to multiple ROIs. ( Pixlock e. K. (company) ) Free portable image processing software - AnaLogic is a developer of machine vision hardware and software, has made its image processing library for Texas Instruments digital signal processors available as a free download. Geographic Resources Analysis Support System - An open source, Free Software Geographical Information System (GIS) with raster, topological vector, image processing, and graphics production functionality that operates on various platforms through a graphical user interface and shell in X-Windows. It is released under GNU General Public License (GPL). Graphics Gems - Generally useful graphics and image processing subroutines from the similarly-named books. HALCON - a commercial computer vision tool consisting of an image processing library, C and C interfaces, and a rapid prototyping tool called HDevelop. HALCON is manufactured by MVTec, which is a spin-off of the Technische Universitt Mnchen and the Bavarian Research Center for Knowledge Based Systems (FORWISS). The company is specialized in software solutions for image processing using standard hardware and framegrabbers. HALCON covers a wide field of applications like factory automation, quality control, medical image analysis, aerial image analyis, surveillance, research, and education. ( MVTec Software GmbH ) HIPS - General Unix-based Image Processing System with C source code (Commercial package ) HIPS is a software package for image processing that runs under the UNIX operating system. HIPS is modular and flexible, it provides automatic documentation of its actions, and is almost entirely independents of special equipment. It handles sequences of images (movies) in precisely the same manner as single frames. Over 200 such image transformation programs have been developed. HIPS is written in C, provided as source code, and is both a set of separate programs as well as a callable library. (by Michael S. Landy ) Image processing and analysis in Java - ImageJ is a public domain Java image processing program inspired by NIH Image for the Macintosh. It runs, either as an online applet or as a downloadable application, on any computer with a Java 1.1 or later virtual machine. Downloadable distributions are available for Windows, Mac OS, Mac OS X and Linux. It can display, edit, analyze, process, save and print 8-bit, 16-bit and 32-bit images. It can read many image formats including TIFF, GIF, JPEG, BMP, DICOM, FITS and raw. It supports stacks, a series of images that share a single window. It is multithreaded, so time-consuming operations such as image file reading can be performed in parallel with other operations. It can calculate area and pixel value statistics of user-defined selections. It can measure distances and angles. It can create density histograms and line profile plots. It supports standard image processing functions such as contrast manipulation, sharpening, smoothing, edge detection and median filtering. It does geometric transformations such as scaling, rotation and flips. Image can be zoomed up to 32:1 and down to 1:32. All analysis and processing functions are available at any magnification factor. The program supports any number of windows (images) simultaneously, limited only by available memory. Spatial calibration is available to provide real world dimensional measurements in units such as millimeters. Density or gray scale calibration is also available. ImageJ was designed with an open architecture that provides extensibility via Java plugins. Custom acquisition, analysis and processing plugins can be developed using ImageJs built in editor and Java compiler. User-written plugins make it possible to solve almost any image processing or analysis problem. ImageJ is being developed on Mac OS X using its built in editor and Java compiler, plus the BBEdit editor and the Ant build tool. The source code is freely available. The author, Wayne Rasband (waynecodon. nih. gov), is at the Research Services Branch, National Institute of Mental Health, Bethesda, Maryland, USA Image Processing Library 98 - A platform independent image manipulating CC library The purpose of the library is to be useful, for combining tailor-made image processing and interpretation with standard methods for acquisitions, processing, display and storage of image information. Emphasis is put on interactivity in projects made by students, as well as for advanced research and development. (by Ivar Balslev and Ren Dencker The Maersk Mc-Kinney Moller Institute for Production Technology University of Southern Denmark, Odense University ) Image Restoration and Inpainting - Large Library in c for slow and fast image restoration, inpainting, morphology, and distance mapping. (free software) (by Bernard De Cuyper) Image Restoration and Inpainting in C - New free software about image restoration and inpainting using Level Set technology. The project is open and related to image enhancement. It permit interested people to get a first idea and move up -) Image-Pro Plus - Commercial image analysis software used in biological and industrial microscopy applications. ImageGear - Commercially available imaging toolkit for Windows, UNIX, and MAC. Supports all of the popularly used graphics file formats. ImageGear Professional Edition supports over 700 imaging functions, full multi-threading and easy Internet integration. ImageGear includes analysis, correction, and manipulation of both computer-generated and scanned images, special effects, file format conversion, image enhancement through color reductionpromotiondithering, and GUI (Graphical User Interface) functions. ( AccuSoft Corporation ) ImageLib - An Image Processing C Class Library (template based) ImageLib is a C class library providing image processing and related facilities. The main set of classes provides a variety of image and vector types, with additional modules supporting scalar and vector quantisation, wavelet transforms, DCT transforms, and simple histogram operations. (by Brendt Wohlberg University of Cape Town) IMAQ Vision - Adds machine vision and image processing functionality to LabVIEW and ActiveX containers (National Instruments) ImgStar Image Processing Tools - Complements Pbmplus with edge detection, highlowband-pass filters, thresholding, etc. (by Simon Winder) ImLib3D - ImLib3D is an open source C library for 3D (volumetric) image processing. It comes with an optional viewer that features 3D (OpenGL) multiplanar. Templated: ImLib3D images are STL-like templated containers. This means you can create images of arbitrary types (examples: float, int, complex, 3D vectors for deformation fields. ) Iterators: ImLib3D provides STL-like iterators for moving around images. This provides a much faster, more efficient and easier to use framework. This also provides a common simple syntax for moving around images in special ways, like in masked images or rectangular sub-zones in an image. Speed: ImLib3D is very fast. Iterators hide all the gory details of making it fast. Command line: All image processing operators can be called from the unix command line. This is, with the viewer, important for easy image processing experimentation. Fast BSpline interpolation (thanks to Unser et all.) Rigid, affine, deformable registration (thanks to O. Musse) Very fast fft (thanks to fftw) Image processing (arithmetic, convolution, morphological operations. ) 3D image viewer. (by Marcel Bosc, Torbjorn Vik LSIITIPB ULP Strasbourg France ) Intel Image Processing Library - Optimized assembly MMX code for image processing, pattern recognition, signal processing, and matrix manipulation. The computer vision code was folded into the Integrated Performance PRimitives library and it is no longer free. ( Intel Corporation ) Interactive Data Language (IDL) - IDL is a development environment for data visualization, 2D and 3D graphics, and image processing. IPTool - Freeware image processing toolkit for Windows Karma Library - Image processing and interprocess communications toolkit Khoros - An integrated software environment for data exploration and visualization, visual programming and simulation, and sofware development. LaboImage - Image processing and analysis toolkit for Windows or X11Motif. LEADTOOLS Imaging Development Toolkit - commercial toolkit that supports loading, saving, converting, and processing of color, greyscale, and document images - Windows-based commercial toolkit that ( LEAD Technologies, Inc. ) LookingGlass Real-time ImageProcessing System - multithreaded PC-based image proccessing environment that supports realtime video processing. LookingGlass is an Image Processing Environment for developing imaging applications and for research and development of new image system. LookingGlass supports real-time live video processing from VideoForWindow compatible device, and also supports BMP, JPG, GIF89 and AVI or user can write a dll to support other vdo format or image acquisition device. LookingGlass can produce AVI file, sequence of BMP or JPG files, or just display images to screen, or users can write a dll to do what ever output they want. LookingGlass is derived from RobotVision2(ccs. neu. eduhomepsksvprv2.htm), so LookingGlass uses the pipeline idea and support using the same IP-DLL as RobotVision2. (by PongSuvan) LuaMat: An Image Processing Script Language - Image Processing script language based on Lua and OpenCV library. Includes common detection and segmentation algorithms. Can be used for rapid prototyping in interactive mode. Runs under Windows. Shareware. Matlab Pyramid Tools - MatLab tools for multi-scale (pyramid) image decomposition. This includes Laplacian pyramids, QMFswavelets, and steerable pyramids as well as fast convolution routines, histogram tools, and synthetic image generation. Matrox Imaging - Matrox Imaging Library (MIL) is a development toolkit for machine vision, medical imaging and image analysis. ActiveMIL, a collection of ActiveX controls for managing image capture, transfer, processing, analysis and display is bundled with MIL. Additional software includes Matrox Inspector, an interactive Microsoft Windows-based prototyping tool and an intelligent camera interface utility. Microsoft Vision SDK - Visual C library for vision which defines an image object and supports digitizer independent image acquisition. Mimas Toolkit - The Mimas Toolkit if an open source library that contains a variety of image processing, computer vision and mathematical tools. Mimass original emphasis was on real-time computer vision, although it has grown to encompass much more. It is actively supported by the Microsystems and Machine Vision Laboratory at Sheffield Hallam University, UK. (by Bala Amavasai and Stuart Meikle Microsystems and Machine Vision Laboratory ) MontiVision Development Kit - A DirectX-based development kit for vendor independent image and video processing applications, programmable via COM interfaces. Contains a free development environment. (commercial software) MRF image segmentation - Platform independent implementation of a Markov random field based supervised image segmentation algorithm. ( SZTE ) NeatVision: An Image Analysis Software Development Environment - NeatVision is a Java based image analysis and software development environment. It provides high level access to a wide range of machine vision algorithms through a well defined and easy to use graphical interface. NeatVision is distributed as a shareware product. NeatVision contains over 200 image and general data processing algorithms. Users can extend the core NeatVision library using the developers interface, a plug-in which features, automatic source code generation, compilation with full error feedback and dynamic algorithm updates. The Developers interface supports algorithm development based on Java AWT Imaging, Java 2D Imaging and Java Advanced Imaging. NeatVision is primarily an image processing application and offers an extensive range of image analysis and visualisation tools (these include zoom, pseudo colour, intensity scan, histogram and 3D profile mesh). In addition, the ability to read and write a wide range of image file formats is supported. ( Vision Systems Laboratory Dublin City University ) NeuroCheck - Commercial Windows-based image processing system for automatic presence verification, bar and DataMatrix code reading, character and pattern recognition, robot guidance and gauging. NeuroCheck is the complete framework for configuring and operating industrial visual quality control systems. Its powerful graphical tools enable the user to easily develop solutions within a familiar Windows - based environment to achieve rapid system integration into production line processes. ( DS GmbH ) NewCyber3D - Commercial software for OpenGL 3D graphics, GIS, stereo display, image processing, and visualization Nuages - A package for 3D reconstruction from parallel cross-sectional data. It uses the Delaunay triangulation. Optimas: Analytical Imaging - Complete commercial image-analysis program for Windows used in biological and industrial measurement environments. Optimas implements hundreds of measurement, image processing, and image management operations, all available from the graphical user interface. Optimas is designed for the imaging professional who needs the ability to prototype and quickly develop custom imaging solutions, and therefore includes an integrated development environment enabling one to record, edit, and debug macros. It is being used the world over to develop cutting-edge solutions to imaging problems. An Automation Server and Client (formerly known as OLE Automation) Optimas also allows itself to be controlled via VB or any Automation Client, and conversely can control Excel or any Automation Server via an elegant syntax. Help is richly linked and context-sensitive. ( Media Cybernetics ) PBMPlus - Image manipulation toolkit. This is the standard toolkit for Unix, it converts between dozens of formats. A version with many more features called NetPBM is also available, but may not be as easy to install. Some NetPBM patches are available. Perl Data Language - An extension to perl that implements fast, compact manipulation of large, N-dimensional data arrays for scientific computing and image processing. Phase-based estimation of the optical flow field - Implementation of the phase-based optical flow algorithm described in Gautama, T. and Van Hulle, M. M. (2002). A Phase-based Approach to the Estimation of the Optical Flow Field Using Spatial Filtering, IEEE Trans. Neural Networks, 13(5), 1127--1136. (by Temu Gautama Laboratorium voor Neuro - en Psychofysiologie, K. U.Leuven) PiXCL and geoPiXCL - A commercial image processing scripting language and Win9xNT2000 EXE builder for TWAIN scanner and digital camera image sources. geoPiXCL adds geographic imagery extensions. IP and geo library APIs are available. (by Stewart DIBBS) PixeLook - PixeLook is a powerful set of components for Delphi 6 for creating professional-looking image - and 2D-data processing applications. Features at glance: - Windows bitmap images (8-bit grayscale, 8-bit indexed color, 24- and 32-bit true color) are supported - Custom multichannel 2D-data of the following types: byte, 16-bit integer (unsigned, signed), 32-bit integer, 32- and 64-bit float) are supported. For example, you can define in your program 2D-data where each pixel is a vector of 10 32-bit float numbers. - Big images and data matrices are easily handled using Windows memory-mapped files concept - Components for visualization of single images, stereo images and image sequences with scrollingzooming capabilities are included - Components for 2D - and 3D-plots visualization are included - All visualization components can contain graphic layers - Graphic layers components (fully custom layers, layers of vector objects, raster layers) are included - Very sophisticated image viewer with image analysis tools (histogramthresholding, projections, profiles, aperture, surface, look-up-table transformations, scattergrams) is included - Plugin-based image processing procedures are supported - All drawing mouse handling is doing in world coordinates. It is no need to worry about current zoom level and scroller positions in the image window. RobotVision2 - real-time image processing software that uses any VideoForWindow(VFW) compatible camera as the image source (by Pong Suvan Northeastern University ) RobotVisionCAD - RobotVisionCAD(RvCAD) is an Image Processing Environment for developing imaging applications and for research and development of new image system. RobotVisionCAD(RvCAD) is an Image Processing Environment for developing imaging applications and for research and development of new image system. RvCAD supports real-time live video processing from VideoForWindow compatible device, and also supports BMP, JPG, GIF89 and AVI or user can write a dll to support other vdo format or image acquisition device. RvCAD can also produce AVI file, sequence of BMP or JPG files, or just display images to screen, or users can write a dll to output images to whatever device theyd like. RvCAD is similar to an electonic logic gate simulation Program. Users drag and drop RvCadProcessor components from the left tree view then connect them together to build an ImageProcessing pipeline. (by pong suvan ) Scion ImagePC - Scion frame grabber interface and image processing software based on NIH Image. Windows and Mac versions available. (free) Versions also available for Mac NuBus (inquire). (by Jeff Reidler Scion Corporation) Scorpion Vision Software - Scorpion is a windows-based commercial software package for industrial machine vision applications such as inspection. (by Thor Vollset) SDC Morphology Toolbox for Matlab - Matlab add-on: Gray-scale morphological tools for image segmentation, non-linear filtering, pattern recognition and image analysis: watershed, Euclidean distance transform, top-hat, reconstruction. (many real-life demonstrations) Sherlock Machine Vision Software - Machine vision and image processing package with intuitive user interface. For commercial machine vision tasks, but free demo allows unlimited use on image files. Sherlock software is used for rapid development of machine vision applications. Its vision algorithms include measurement, defect analysis, image processing, OCR, barcode reading, search, pattern recognition, etc. The graphical user interface makes it easy to set up sequences of algorithms for an application. It supports a wide variety of line - and area-scan cameras, digital and analog input and output, and frame grabbers. Sherlock programs can be wrapped using Visual Basic or OPC. The demo version is the full package but without support for image capture using a frame grabber. (ipd Coreco Imaging, Inc. ) SNVision SDK - A windows-based SDK for real-time recognition and tracking. (commercial software) Advanced object recognition and tracking technology for video surveillance, traffic monitoring, incident detection, biometric authentification. Locates multiple targets extremely fast at any angle scale or resolution. Tolerates noise and light variations. Real-time Image Processing using biologically inspired processing algorithms. (by Simon Thorpe Brain and Cognition Research Centre in Toulouse (France) SpikeNet Technology ) SpikeNET research: object recognition using spiking neurons - SpikeNET is a program designed for simulating very large networks of asynchronous spiking neurons able to perform object recognition (faces, digits. ) in natural images. (by Arnaud Delorme, and Simon Thorpe Swartz Center for Computational Neuroscience University of San Diego California) SpikeNet Technology - (Company) Vendor of SpikeNet, a biologically-inspired computer vision system for object detection, recognition, and related applications. (by Simon Thorpe Centre de Recherche Cerveau Cognition ) THBComponentware - THBImage - Commercial windows-based image processing library. Displays an image with the ability to align, stretch, scroll, zoom and pan it. PreviewScrollWindow for convenient scrolling. Magnification window to take a closer look to any part of the image. Popup menu to access all zooming functions. With databinding capabilities. Supports all common raster image formats BMP, PCX, JPG, TIF, PNG, TGA, PSD. Image processing operations like Resize, Rotate, Crop, Mirror, Brightness, Contrast, Invert. Filter operations like Antialias, Sharpen, Blur. Color Conversion. Easy printing. Clipboard support. Ole DragDrop. Image Annotation. Supports, VB, VC, MSAccess. Now with JPEG2000 AddOn - Add the new JPEG2000 compression codec to your application. The Delft Scientific Image Processing Library - DIPlib is a scientific image processing library written in C. It contains a large number of functions for processing and analysing multi dimensional image data. The library provides functions for performing transforms, filter operations, object generation, and statistical analysis of images. (by Michael van Ginkel, Geert van Kempen, Cris Luengo Hendriks, Lucas van Vliet Geert van Kempen Cris Luengo Hendriks Lucas van Vliet Pattern Recognition Group Delft University of Technology ) The Image Processing Tool Kit - Comprehensive set of image processing and analysis routines in the form of Photoshop-compatible plug-ins for Mac and PC, with extensive tutorial. (commercial package ) (by Chris Russ, John Russ ) TINA - A set of vision algorithm development libraries written in C TINA is the result of over 50 man years of vision research. It is a set of libraries providing various levels of infrastructure for people developing vision algorithms. It covers a wide range of activities, from low level image reading, writing and manipulation to complete algorithms for depth estimation from stereo pairs. TINA is used as a research tool by several vision research groups in the UK. It is written in C and following the EU funded OSMIA project it has recently been updated to use gnu autoconfigure and CVS source control, and to separate the core libraries from the user interface specific code. The TINA libraries have now been compiled and used on UNIX, Linux, Mac OS X and Windows under Visual Studio. Tracking moving object - Given a sequence of images you can identify target object and track their path. Exports positionspeed to excel spreadsheet (by Andrea Giacosi) Uratek - Software for real-time object tracking, gaze tracking, and camera motion estimation (by Philippe Guillemant Artificial Vision and Biophysics Group Polytechnic University School of Marseille) USB camera driver toolkit for LabVIEW - USB cameras and video capture devices are now included in the LabVIEW programming world. INVENTvisionVFW 1.0 gives you the power to view and capture any VFW (Video For Windows) video devices in any programming language that can interface to activex technology. INVENTvisionVFW can be implemented in VB, VC, G (LabVIEW) programming environments. This mean that USB cameras and video capture devices are now included in the LabVIEW programming world. This product integrates and works with LabVIEW Picture Control and IMAQ. A real-time overlay is display on the activex control placed on the LabVIEW front Panel. Images can be captured to a 2D ArrayU32, Visual Basic Picturebox, LabVIEW Picture Control or IMAQ Image. Images can be loaded from and saved to disk in BMP and JPG formats. (by George Miles INVENTeering ) Utah Raster Toolkit - UNIX commands and C libraries for an 8 bitspixel, 1-255 channel image format. Contains a nice display tool for X11 its fast, supports animation and zooms in on any image. Wes Barris URT extensions are quite useful too. UTHSCSA ImageTool - A free image processing and analysis program for windows. UTHSCSA ImageTool (IT) is a free image processing and analysis program for Microsoft Windows 9x, Windows ME or Windows NT. IT can acquire, display, edit, analyze, process, compress, save and print gray scale and color images. IT can read and write over 22 common file formats including BMP, PCX, TIF, GIF and JPEG. Image analysis functions include dimensional (distance, angle, perimeter, area) and gray scale measurements (point, line and area histogram with statistics). ImageTool supports standard image processing functions such as contrast manipulation, sharpening, smoothing, edge detection, median filtering and spatial convolutions with user-defined convolution masks. IT also has built-in scripting capabilities that allow the user to record repetitive tasks and playback saved scripts to automate image analysis. VASARI Image Processing Software - An optimised library in CC running on Unix. Its strengths are handling high-resolution images and colour spaces. Automatically parallel on SMP systems. ( Intelligence Agents and Multimedia Research Group (IAM) University of Southampton, UK) Video OCX - Windows-based interface for easy integration of video capture into your applications. It supports VFW video devices (USB cameras or framegrabber) AND AVI sequences as image sources. ( vision pearls GbR ) VideoOCX - VideoOCX functions in an ActiveX programming environment and allows you to easily integrate video capture and image processing capabilities into your software program. (commercial software) VideoOCX Video Capture and Image Processing Capabilities VideoOCX functions in an ActiveX programming environment and allows you to easily integrate video capture and image processing capabilities into your software program. VideoOCX is compatible with all Video-for-Windows (VFW) devices, such as USB cameras (webcams) and framegrabbers in conjunction with a CCD camera or camcorder. VideoOCX allows you to capture video in one simple step. Just drop VideoOCX into your programming application, change a few properties, add a few lines of code and you are ready to go. VideoOCX works smoothly in any ActiveX hosting environment, such as Visual Basic, Visual C, FoxPro and Delphi. VideoOCX applications range from professional scientific image processing and surveillance to computer vision and general multimedia programs. VIPS image processing system - free image processing library and interface for unix, mac and windows (Scientific Department National Gallery, London) Visiopharm Integrator System - A commercial, database-driven image analysis system aimed at medical image analysis. VIS is a database-driven image analysis system, which is fully configurable and extensible. In its standard configuration, VIS is equipped with a wide range of modules for viewing, montage, and segmentation of images. Measurement results from these modules are automatically stored in the built-in database, making data management an integrated part of the work flow. Custom developed image analysis software is provided as plug-in modules and seamlessly integrated into the VIS user-interface. Vista - A flexible library of C-routines, command-line filters, and Motif widgets for image representation and manipulation. Visus Imaging - Image analysis toolkit and complete systems aimed at researchers and microscopists in Biomedical and Material Sciences. (commercial product ) (Foresthill Products) WiT - Visual programming environment for image processing (demo). XCaliper - Commercial Windows NT software toolkit for machine vision and thermal imaging applications. ( FSI Automation ) XMegaWave, an Image Processing Environment - a freeware graphical windows environment oriented towards image processing, where the user can create his own function in a very easy way. Some european universities have developed a freeware image processing environment, named XMegaWave (XMW). It runs on Unix workstations or Linux machines, running Motif and X11 windows libraries. XMW includes some classical procedures for image processing (edge detection, segmentation, morphological filters). But the important thing is that XMW is also a programming library, where the user can implement his own image processing algorythm in C in a very very very easy way. The time needed to write the code and debug it is very short, so you can obtain results rapidly. Besides, XMW is a pedagogic tool suitable for using in image processing classes. It can be explained in just one class, and the students can easily implement any kind of image filter. (Image Mathematical Analysys Group (AMI) University Las Palmas ) Display Tools 3DViewnix - Demo of a commercial package. FP Image - ViewProcess Floating Point and integer images in Windows 9598NT. Formats include DICOM and user defined formats. Includes a image processing scripting language. FP Image for Windows - ScientificMedical imaging software. Formats include floating point, integer and DICOM. Built-in image processing scripting language, batch processing, 3D solid modeling. ( FP Image ) FreeImage - FreeImage is an Open Source project for developers who would like to support popular graphics image formats like BMP, JPEG, TIFF, PNG, RAS, PNM, PCX, TGA in their C applications for Windows. (by Floris van den Berg, Herv Drolon) GD - a graphics library for GIF creation - provides GIF readwrite code in a C library. It also provides minimal image manipulation functions (lines, arcs, text, colors). Includes versions for Unix and Windows systems. (by Thomas Boutell Boutell ) GNU Image Manipulation Program (GIMP) - Photoshop-style image editor. ImageMagick - Load, display, process, save, and convert images in many formats. Works on Unix, Linux, Windows, and Mac. Includes a display program, a converter, screen capture, animator, and more. JPEG - Library source code and simple display tools. JpegDicom library - MFC source code for jpegdicomtwain (commercial, but limited free version available) C MFC source code for Dicom, Jpeg, Dib codecs plus TWAIN manager. Up to 32 bits per channel (96 bpp in RGB mode), 12-16 bits per channel jpeg codec. (by Paolo Brandoli) Mesa - Mesa is a 3-D graphics library with an API which is very similar to that of OpenGL. MPEG-1 player and encoder Also: FAQ and fancy VCR-like interface using Motif. NIH Image - for Macintosh TIFF - Library source code and tools VisGenie: a Generic Video Information Visualization System - VisGenie is a Generic Video Information Visualization System VisGenie is a generic video based information visualization system on computers running Microsoft Windows operating systems, capable of rendering video data in a manner suitable for the research development purpose instead of entertainment, and visualizing the associated metadata streams. (by Yong Wang, Lexing Xie, and Shih-Fu Chang Digital Video Multimedia (DVMM) Columbia University ) Volumetric Image Display and Analysis (VIDA) - Demo of a commercial package. XAnim - X11 display tool. Supports many animation and image formats (everything except mpeg). Notes on integrating xanim with Web clientsMIME are also available. XLI - X11 display tool. Not as featureful as xv but it understands nearly all the same formats and displays images much more quickly. Source archive is available. XV - X11 Image Display tool. Provides an amazing assortment of image operators, reads and writes images in many different formats. Ygl - Emulation of SGI GL library for X11. Synthetic Data Generators Persistence of Vision - Ray Tracer. Philip Torrs stereo vision code - routines to generate synthetic data for testing and evaluating fundamental matrix estimation algorithms (by Philip Torr Machine Learning and Perception Group Microsoft ) Radiance - Ray tracer Produces floating point photometrically accurate images, with emphasis on good light source modeling. Random dot stereogram generators - Pictures, programs, and information on single image random dot stereograms. Ray Tracers - A nice summary of free ray tracers. (by Eric Haines) Rayshade - Ray tracing renderer. Generates realistic 2D images from a text description of a 3D world. Supports texture mapping, surface (heightfield) rendering, multiple light sources, defocus, animation and more. Synthetic Fingerprint Generator - SFinGe is a novel method for the generation of synthetic fingerprint images (sfinge is the Italian for sphinx). Gabor-like space-variant filters are used for iteratively expanding an initially empty image containing just one or a few seeds. A directional image model, whose inputs are the number and location of the fingerprint cores and deltas, is used for tuning the filters. Very-realistic fingerprint images are obtained after the final noising-and-rendering stage. ( Biometric Systems Lab University of Bologna) Mathematical Toolkits CGAL - Computational Geometry Algorithms Library - C library of geometric primitives and standard data structures and algorithms used in computational geometry. The CGAL project is a collaborative effort to develop a robust, easy to use, and efficient C software library of geometric data structures and algorithms. The CGAL library contains: - Basic geometric primitives such as points, vectors, lines, predicates such as for relative positions of points, and operations such as intersections and distance calculation. - A collection of standard data structures and geometric algorithms, such as convex hull, (Delaunay) triangulation, planar map, polyhedron, smallest enclosing sphere, and multidimensional query structures. - Interfaces to other packages, e. g. for visualisation, and IO, and other support facilities. For further information and for downloading the library and documentation, please visit the CGAL web page: cs. uu. nlCGAL Should you have any questions or comments, please send a message to cgalcs. uu. nl ( CGAL Consortium ) levmar: Levenberg-Marquardt non-linear least squares algorithms in CC - CC implementations of four Levenberg-Marquardt (nonlinear least squares) flavors. Package includes double and single precision versions, both with analytic and finite difference approximated jacobians. ( Computational Vision and Robotics Lab Foundation for Research and Technology - Hellas ) Netlib - Public domain collection of mathematical software, papers, and databases. Mostly in Fortran, but f2c (included in netlib) converts Fortran to C. Numerical Recipies - Public Domain code for the famous book (only some of the code is public domain). Reviver - A Practical Provable Surface Reconstructor - Free software that takes unorganised point clouds as input and produces 3D models automatically in various industry standard formats (runs on Unix and Windows) Scilab - A free scientific software package for numerical computations providing a powerful open computing environment for engineering and scientific applications. Developed by researchers at INRIA and ENPC. StatLib - Statistical software, datasets, and information. 3d Model compression - Mesh Compiler is a Windows application which converts 3d models to very compact VRML 2 files. Concurrently to GZ compression, the size of a 3d model can be further reduced by a typical factor between 3 and 10. Mesh Compiler compiles and optimizes 3d models to script controlled active content files. The model layers are separated into unconnected parts to be saved in own local coordinate systems. (by Lothar Muench (Next Dimension Imaging) Next Dimension Imaging ) Carina - commercial package for recognizing license plates (Adaptive Recognition Hungary) DIVA 3D - Diva3D for Windows is a software package for digital video processing and analysis. Grabbo: vision-based MIDI controller - Grabbo uses orientation histograms for realtime image matching and 3D interpolation. MIDI output. Free demo version for BeOS. (Tebo Software) IEEE-1394 Digital Camera Windows Driver - Windows device driver and CC software library for IEEE-1394 digital cameras. The web site also contains a demo program, documentation, example images, links, and other information. IEEE-1394 digital cameras are an ideal solution for acquiring high quality images with a regular laptop computer. (by Iwan Ulrich Mobile Robot Programming Lab Carnegie Mellon University ) MeteorCapture - Application to capture video to memory or disk using PC and Matrox Meteor (written using Visual C). (by Ross Cutler Computer Vision Lab UMCP) Modular Flow Scheduling Middleware - An open source, windows-based framework for developing programs with good software engineering qualities. It has been used for developing real-time vision applications. Modular Flow Scheduling Middleware is an open source implementation of a generic, modular, extensible software architecture for dataflow processing of datastreams. It provides a framework for the implementation of algorithms and development of applications with desirable software engineering qualities, such as efficiency, scalability, extensibility, reusability, interoperability. (Windows - VC) (by Alexandre RJ Francois IMSC IRIS University of Southern California ) PicDB - an image database system with query by image content capabilities. Renoir - 3D reconstruction from photos - 3D reconstruction from photos. 3D photomontage. ( payware - free demo version available). Mainly useful for computer graphics, but uses some computer vision techniques Model of an object is created manually from parametric blocks. Corresponding edges are marked on images and model. Camera and model parameters are reconstructed through minimization of distance between projected edges of model and corresponding edges, marked on photos. (by Ildar Valiev Integra, Inc. ) Scion LG-3 Linux Driver - A driver and SDK for using the Scion LG-3 card under Linux. GPL source code is included. Verifinger - Fingerprint processing and recognition - SDK for fingerprint processing and recognition ( Neurotechnologija Ltd. ) VisualMouse - Our software translates users head motion into the motion of the cursor on the screen, by processing the image from a web cam Zaxel 3D Imaging Systems - Zaxels 3D Imaging Systems create an infinite number of virtual cameras around the object or moving subject from a limited number of real camera inputs. Computer Vision Homepage (last updated Thu Jun 30 13:45 EDT 2005) Text only version of this page. Please submit new links using our forms interface or send email to visioncs. cmu. edu. visits since so far.
Comments
Post a Comment