micha
23-11-2002, 16:44
Hi,
ich suche nach einer Möglichkeit zur Segmentierung eines 2-dimensionalen QImage-Bildes (540x150), das in Regionen mit eindeutigen Farben aufgeteilt ist (insgesamt 89 Regionen mit genau so vielen Farben).
Ziel der Segmentierung ist es, bei einer Suche nach einer bestimmten Farbe in dem Bild die Region die diese Farbe enthält, aufgeteilt in Rechtecke zu erhalten ( Rechtecke deshalb, da ich anschließend die Region per bitBlt auf ein QPaintDevice übertragen muss, was nur über QRect möglich ist ).
Die Region, die eine bestimmte Farbe enthält, ist zusammenhängend, es kann also nicht vorkommen, das eine Farbe über das ganze Bild verteilt ist.
Zusätzlich ist es wahrscheinlich, dass das QImge-Objekt zur Laufzeit seine Größe verändert, was zu folgenden Fragen führt:
1) Indiziere ich die kompletten Regionen bei jedem QResizeEvent oder soll ich jedesmal das komplette Bild nach der Region durschsuchen, wenn eine bestimmte Farbe abgefragt wird ( was im Endeffekt häufiger vorkommen wird, als die Größenveränderung des Bildes ).
Eine weiter Möglichkeit wäre auch ein Mittelweg, indem ich das Bild während eines QResizeEvents in Quadrate einteile und jede Farbe einem Quadrat zuteile, was das später Suchen der Farbe auf dieses Quadrat beschränken würde.
2) Gibt es einen schnellere Algorithmus um den ersten Pixel einer Farbe in dem Bild zu finden, als das Bild einfach von einer Seite beginnend danach zu durchsuchen ( wahrscheinlich schon, allerdings müsste da zuvor auch mindestens ein kompletter Bilddurchlauf zur Indizierung stattfinden, oder ? ).
3) Wenn ich jetzt einen Pixel der gesuchten Farbe habe, über welchen Algorithmus bestimme ich dann die konvexe Hülle, der dieser Pixel angehört ?
4) Und schließlich, wenn ich dann alle Punkte habe, wie teile ich die dann in Rechtecke auf ?
Mir würden schon ein paar Fachbegriffe, mit denen ich Google füttern kann helfen. Ich hab bis jetzt nur Seiten gefunden, die sich mit viel komplexeren Problemen beschäftigen ( 3-dimensionale Bilder, Unterscheidung zwischen Hintergrund und eigentlichen Elementen, Elemente bestehend aus unterschiedlichen Farbzusammenseztungen, was bei mir ja alles nicht gegeben ist ).
Ansätze wären natürlich auch nicht schlecht ,)
Gruß micha
ich suche nach einer Möglichkeit zur Segmentierung eines 2-dimensionalen QImage-Bildes (540x150), das in Regionen mit eindeutigen Farben aufgeteilt ist (insgesamt 89 Regionen mit genau so vielen Farben).
Ziel der Segmentierung ist es, bei einer Suche nach einer bestimmten Farbe in dem Bild die Region die diese Farbe enthält, aufgeteilt in Rechtecke zu erhalten ( Rechtecke deshalb, da ich anschließend die Region per bitBlt auf ein QPaintDevice übertragen muss, was nur über QRect möglich ist ).
Die Region, die eine bestimmte Farbe enthält, ist zusammenhängend, es kann also nicht vorkommen, das eine Farbe über das ganze Bild verteilt ist.
Zusätzlich ist es wahrscheinlich, dass das QImge-Objekt zur Laufzeit seine Größe verändert, was zu folgenden Fragen führt:
1) Indiziere ich die kompletten Regionen bei jedem QResizeEvent oder soll ich jedesmal das komplette Bild nach der Region durschsuchen, wenn eine bestimmte Farbe abgefragt wird ( was im Endeffekt häufiger vorkommen wird, als die Größenveränderung des Bildes ).
Eine weiter Möglichkeit wäre auch ein Mittelweg, indem ich das Bild während eines QResizeEvents in Quadrate einteile und jede Farbe einem Quadrat zuteile, was das später Suchen der Farbe auf dieses Quadrat beschränken würde.
2) Gibt es einen schnellere Algorithmus um den ersten Pixel einer Farbe in dem Bild zu finden, als das Bild einfach von einer Seite beginnend danach zu durchsuchen ( wahrscheinlich schon, allerdings müsste da zuvor auch mindestens ein kompletter Bilddurchlauf zur Indizierung stattfinden, oder ? ).
3) Wenn ich jetzt einen Pixel der gesuchten Farbe habe, über welchen Algorithmus bestimme ich dann die konvexe Hülle, der dieser Pixel angehört ?
4) Und schließlich, wenn ich dann alle Punkte habe, wie teile ich die dann in Rechtecke auf ?
Mir würden schon ein paar Fachbegriffe, mit denen ich Google füttern kann helfen. Ich hab bis jetzt nur Seiten gefunden, die sich mit viel komplexeren Problemen beschäftigen ( 3-dimensionale Bilder, Unterscheidung zwischen Hintergrund und eigentlichen Elementen, Elemente bestehend aus unterschiedlichen Farbzusammenseztungen, was bei mir ja alles nicht gegeben ist ).
Ansätze wären natürlich auch nicht schlecht ,)
Gruß micha