Ich habe eine beliebige Form, die durch eine Binärmaske definiert ist (grau = Form, schwarz = Hintergrund).
Ich möchte ein größtmögliches Rechteck finden, das nur graue Pixel enthält (ein solches Rechteck ist gelb dargestellt):
Die Form ist immer "einteilig", aber nicht unbedingt konvex (nicht alle Punktpaare an der Formgrenze können durch eine gerade Linie verbunden werden, die durch die Form verläuft).
Manchmal existieren viele solcher "maximalen Rechtecke" und dann können weitere Einschränkungen eingeführt werden, wie zum Beispiel:
- Das Rechteck so nehmen, dass sein Mittelpunkt dem Massenmittelpunkt (oder dem Bildmittelpunkt) der Form am nächsten liegt
- Ein Rechteck mit einem Seitenverhältnis nehmen, das einem vordefinierten Verhältnis (dh 4: 3) am nächsten kommt
Mein erster Gedanke an den Algorithmus ist folgender:
- Berechnen Sie die Entfernungstransformation der Form und finden Sie den Schwerpunkt
- Vergrößern Sie den quadratischen Bereich, während er nur die Pixel der Form enthält
- Vergrößern Sie das Rechteck (ursprünglich ein Quadrat) in der Breite oder Höhe, während es nur die Pixel der Form enthält.
Ich denke jedoch, ein solcher Algorithmus wäre langsam und würde nicht zu einer optimalen Lösung führen.
Irgendwelche Vorschläge?