У мене довільна форма, визначена двійковою маскою (сірий = форма, чорний = фон).
Я хотів би знайти найбільший можливий прямокутник, що містить лише сірі пікселі (такий прямокутник зображений жовтим кольором):
Форма завжди "цільна частина", але вона не обов'язково опукла (не всі точки точок на межі форми можуть бути з'єднані прямою лінією, що проходить через форму).
Іноді існує багато таких "максимальних прямокутників", і тоді можна ввести додаткові обмеження, такі як:
- Візьміть прямокутник з його центром, найближчим до центру мас форми (або центру зображення)
- Беремо прямокутник із співвідношенням сторін, найближчим до заданого співвідношення (тобто 4: 3)
Моя перша думка про алгоритм полягає в наступному:
- Обчисліть відстань перетворення форми і знайдіть її центр маси
- Зростайте квадратної площі, хоча вона містить лише пікселі форми
- Виростіть прямокутник (спочатку квадрат) по ширині чи висоті, тоді як він містить лише пікселі форми.
Однак я думаю, що такий алгоритм був би повільним і не призвів до оптимального рішення.
Будь-які пропозиції?