Ich habe erst kürzlich mit der Bildverarbeitung angefangen und einen entsprechenden Kurs in der Grad-Schule besucht. Aber ich habe bereits ein Projekt ohne zu viele Informationen zu diesem Thema, aber ich habe einige stetige Fortschritte gemacht. Ich versuche, die Pillen von ihren jeweiligen Hintergründen zu segmentieren. Für Bilder mit kontrastierendem Hintergrund konnte ich die Pillen nach Otsus Methode segmentieren. In Bezug auf Bilder mit ähnlichen Hintergründen funktioniert die Methode von Otsu nicht ganz. Ich habe einige Artikel in Bezug auf die Segmentierung gelesen, aber die meisten Artikel, die ich gelesen habe, verwenden je nach Art des Bildes einen manuellen Schwellenwert. Ist es möglich, den richtigen Schwellenwert zu ermitteln und ein Bild automatisch zu schwellen und Techniken wie Samenwachstum oder Clustering zu verwenden, um das Bild zu segmentieren?
Der Farbraum, den ich verwendet habe, ist L a b *, daher würde ich mich freuen, wenn Sie den geeigneten Farbraum empfehlen könnten, den ich auch verwenden sollte.
Die fraglichen Bilder:
Original 1
Ergebnis 1
Original 2
Ergebnis 2
Original 3
Ergebnis 3
quelle
Antworten:
Wenn Sie den Schwellenwertansatz verwenden möchten, sollten Sie eine adaptive Schwellenwertmethode verwenden, wenn es große Beleuchtungsschwankungen gibt, wie im dritten Beispielbild ( dsp-Frage hier ).
Sie sollten auch mit Farbräumen experimentieren, es ist einfach: Das Skript zum Zerlegen des Bildes in verschiedene Farbräume sollte nicht länger als ein paar Zeilen sein, und viele Bildbetrachter haben diese Option zur Verfügung. Das beste sollte einfach visuell zu bestimmen sein. Wenn Sie sich über Farbräume informieren möchten, gibt es hier eine gute Frage .
Schließlich möchten Sie vielleicht einen anderen Ansatz ausprobieren. Eine Idee wäre, eine nicht perfekte Segmentierung, dann eine Kantenerkennung durchzuführen und schließlich so etwas wie eine Hough-Transformation für Kreise zu verwenden, die auch bei (unvollständigen) Kreisbögen gut funktioniert. (Diese Idee gilt natürlich nur für runde Pillen)
quelle
Circle-Hough-Transformationen aus der OpenCV-Bibliothek eignen sich gut für diese Anwendung. Sie müssen eine Reihe von Radien ausführen, aber die beste Hough-Antwort gibt Ihnen die Grenzen und Zentren der Pillen. Beachten Sie, dass Sie generalisierte Hough-Transformationen verwenden müssten, um nicht kreisförmige Pillen zu finden. Es funktioniert auch dann, wenn die Pillen verschlossen sind oder Randpunkte fehlen.
Schwellenwerte können eine schlechte Lösung sein, da Sie im Feld möglicherweise in Situationen geraten, in denen kein Schwellenwert die Pille vom Hintergrund trennt, weshalb ein Algorithmus, der von den relativen Positionen von Kantengruppen abhängt, überlegen ist.
quelle
Um dieses Problem zu lösen, müssen Sie Hintergrund und Vordergrund trennen. Dies ist die Lösung, ich schlage Ihnen vor:
1) konvertiere das Bild von Rgb in Graustufen; Sie erhalten ein Bild, das wir nennen
I1
;2) Wenden Sie einen morphologischen Filter an, Erosion mit einem großen Radius, eventuell mehrmals ==> Sie sollten die Pille durch Erosion löschen und nur den Hintergrund erhalten; Sie erhalten ein neues Bild
I2
;3) abziehen
I2
zuI1
, werden Sie den Vordergrund , dh die Pille erhalten;4) Wenden Sie einen weiteren morphologischen Filter an, um ein Loch in der Pille zu füllen, das Sie erhalten haben.
5) Wenden Sie einen morphologischen Filter, eine Erosion und einen kleinen Radius an, um alle isolierten Pixel zu entfernen.
Diese Methode erfordert keine Schwelle, Formerkennung, Farbsegmentierung oder irgendetwas anderes.
quelle