バイナリマスクで定義された任意の形状があります(灰色=形状、黒=背景)。
私は灰色のピクセルのみを含む可能な限り大きな長方形を見つけたいです(そのような長方形は黄色で描かれています):
形状は常に「ワンピース」ですが、必ずしも凸状ではありません(形状の境界上のすべてのポイントペアが、形状を通る直線で接続できるわけではありません)。
そのような「最大の長方形」の多くが存在する場合があり、その後、次のようなさらなる制約を導入できます。
- 中心が図形の重心(または画像の中心)に最も近い長方形を撮影する
- 定義済みの比率(4:3など)に最も近いアスペクト比を持つ長方形を撮影します
アルゴリズムについて最初に考えたのは次のとおりです。
- 形状の距離変換を計算し、その重心を見つける
- シェイプのピクセルのみが含まれる正方形の領域を拡大します
- 長方形(元は正方形)の幅または高さを拡大し、形状のピクセルのみが含まれるようにします。
ただし、このようなアルゴリズムは時間がかかり、最適な解決策にはならないでしょう。
助言がありますか?