Effiziente Möglichkeit, sich überschneidende Rechtecke zu kombinieren

Ich versuche das folgende Bild mit OpenCV zu vereinfachen:

Was wir hier haben, sind viele rote Formen. Einige von ihnen enthalten andere vollständig. Einige von ihnen kreuzen ihre Nachbarn. Mein Ziel ist es, alle zu vereinensich überschneiden Formen durch Ersetzen von zwei sich überschneidenden Formen durch den Begrenzungsrahmen des Polygons ihrer Vereinigung. (Wiederholen, bis es keine sich überschneidenden Formen mehr gibt).

Mit schneiden meine ich auch berühren. Hoffe das macht es 100% klar:

Ich versuche dies effizient mit Standard-Morphologie-Operationen zu tun; Natürlich kann es naiv in O (N ^ 2) gemacht werden, aber das wird zu langsam sein. Die Erweiterung hilft nicht, da einige Formen nur 1 Pixel voneinander entfernt sind und ich nicht möchte, dass sie zusammengeführt werden, wenn sie sich nicht überschneiden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage