Autor Beitrag
HCN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22

Xp Prof Sp2, Vista ultimate Sp1
C#, C++, VS 2008 Prof, MeVisLab
BeitragVerfasst: Fr 20.06.08 13:25 
Hallo,

welche Methoden oder Algorithmen gibt es um Objekte in Bildern zu zählen. Z. B. einfach ein weisses Bild auf dem rote +- gleichartige Punkte sind, das Programm soll jetzt zählen wie viele das sind.

Ziel ist es letzten Endes ein Programm zu entwickeln welches automatisch Bakterienkulturen auf Agarplatten zählt (Direkte Auswertung eines Bildes einer über z. B. über einem Tisch installierten Kamera) um den Auswertungsprozess in Routinelaboren zu vereinfachen.

Das ganze wäre ein Thema für eine Bachelorarbeit und klingt interessant.

Ich kenne mich nur leider damit nicht aus (da ich eigentlich Biologe bin und kein Informatiker, die Arbeit wäre halt interdisziplinär) und bevor ich die Arbeit annehme würde mich erstmal interessieren wie Komplex derartige Problemstellungen generell sind bzw. ich möchte mich erstmal ein wenig einlesen.

Das ganze wäre zwar erst in einem Jahr soweit aber ich würde mir gerne schonmal ein Bild von solchen Problemen machen um zu sehen ob das Thema was für mich wäre oder eher nicht, kann mir da vielleicht jemand helfen ?


Danke und Gruß HCN
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Fr 20.06.08 13:56 
hallo,

also rote punkte zählen ist extrem simpel. einfach alle pixel der reihe nachgehen und zählen... mehrere aneinander hängende pixel sind ein objekt, daher am besten so vorgehen:
zeilenweises durchsuchen nach einem roten pixel. ist ein solcher gefunden, einen zähler um eins erhöhen. alle roten pixel, die an dem gefundenen roten pixel dranhängen, schwarz machen (somit wird dieses objekt nur einmal gezählt). so wie sich das anhört, ist das eine sache von wenigen minuten...
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Fr 20.06.08 14:07 
Objekte erkennen ist weitaus komplexer als Pixel zählen.
Du brauchst hauptsächlich einen Algorithmus der ein zusammenhängendes Bild erkennt.
Also rekursiv in alle Richtungen von einem Pixel aus suchen, der als Farbig korrekt erkannt wurde. Bis an keinem Ende mehr was zu finden ist.
Und so weitergehen ...
Probleme sehe ich bei überlagerung mehrerer Objekte / Bakterien. Oder bei Zellteilung ... =/
Kann mir leider noch nicht vorstellen, dass das so einfach sein sollte ..
Hast du ein Beispielsbild oderso? Mit gewünschten Ergebnis?

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
HCN Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 22

Xp Prof Sp2, Vista ultimate Sp1
C#, C++, VS 2008 Prof, MeVisLab
BeitragVerfasst: Fr 20.06.08 14:08 
Hmm ja gut, das Beispiel ist dann wohl so simpel, aber in echt sind Bakterienkulturen ja weder genau einfarbig, noch gleich groß, sondern eher +- gleichartig.....

Hier mal ein Beispielbild wie sowas aussehen kann (normalerweise hat man natürlich ein scharfes und deutliches Bild).....

www.genetik.uni-koel...rial/menz/abb13g.jpg

Normalerweise muss man sich jetzt hinsetzen und das Teil per Hand auszählen, was bei hunderten Platten eine Ewigkeit dauert......
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Fr 20.06.08 15:09 
Zitat:

Du brauchst hauptsächlich einen Algorithmus der ein zusammenhängendes Bild erkennt.
Also rekursiv in alle Richtungen von einem Pixel aus suchen, der als Farbig korrekt erkannt wurde. Bis an keinem Ende mehr was zu finden ist.
Und so weitergehen ...


Zitat:

zeilenweises durchsuchen nach einem roten pixel. ist ein solcher gefunden, einen zähler um eins erhöhen. alle roten pixel, die an dem gefundenen roten pixel dranhängen, schwarz machen (somit wird dieses objekt nur einmal gezählt).



so schwer ist das nicht. zumindest dürfte man eine recht gute näherung der korrekten anzahl erhalten...
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Fr 20.06.08 15:12 
noch eine andere idee:

du kannst die fläche der objekte bestimmen (egal ob zusammenhängend oder nicht). wenn du die durchschnittliche fläche eines einzigen objektes kennst, kannst du dann ja ganz einfach die anzahl bestimmen... anzahl = fläche_alle/fläche_einzeln


wie genau muss denn dein ergebnis sein?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 21.06.08 22:42 
Für solche Dinge nimmt man meist eine Selection auf Basis der Helligkeit des Pixels her (also mit nem Graustufen-Bild) und legt dort ne Grenze (bipartid) rein, die alle Objekte zwischen zwei definierbaren Schranken als weiß, jegliche anderen als Schwarz markiert.

Am Ende geht man das Bild (S/W) Pixelweise durch und schaut, wo ein weißer Pixel ist. Alle dort zusammenhängenden Pixel werden dabei dann schwarz gefärbt und das Objekt (wenn es die korrekte Größe (Anzahl weißer Pixel) hatte, gezählt.

Lässt sich alles mit recht wenig Aufwand selber implementieren - wir hatten da bei uns an der FH ein "Framework" im Unterricht, wo es bestimmte Dinge schon mit gab, aber selbst die nachzubauen ist recht einfach.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.