Исследуя эту проблему, я склонен думать об условиях, которые должны сделать сравнение зеленый и красные прямоугольники неудачи, вместе с рассуждениями о неисправном условиях, отдельно о каждом состоянии.
Что я имею в виду выше, практически, является то, что я хотел бы следующие ответы от алгоритма, разъясняя, какой аспект сравнения не удается: ширина
- прямоугольника находится далеко.
- Высота вашего прямоугольника отходит.
- Горизонтальное размещение вашего прямоугольника не работает.
- Вертикальное размещение вашего прямоугольника находится в выключенном состоянии.
Назовем условия выше «неудачными условиями». Эти неудачные условия свидетельствуют о моем взгляде на сравнение, которое неизбежно направляет мой подход. Можно было бы просмотреть его по-разному («Область вашего прямоугольника выключена»). Пользователь, конечно же, мог бы получить более общие ответы, такие как:
- Размеры вашего прямоугольника уходят.
- Размещение вашего прямоугольника уходит.
- Ваш прямоугольник выключен. Попробуй еще раз.
- Чувак, ты пьян?
В дальнейшем я использую green
для обозначения зеленого прямоугольника в качестве объекта и red
для обозначения красного прямоугольника в качестве объекта. Все условия основаны на относительных ошибках, которые являются абсолютными ошибками, нормированными относительно фактических значений, т. Е. Значениями зеленого прямоугольника.
Одна вещь, которая должна быть указана, - это то, что означает «выход» для горизонтального и вертикального размещения. Это означает, что существует расхождение между расположением ключевой точки зеленого прямоугольника и местоположением соответствующей ключевой точки красного прямоугольника. Выберем центр прямоугольника в качестве ключевого момента для сравнения (можно было выбрать верхний левый угол прямоугольника).
Еще одна вещь, которую необходимо указать, - это то, как вы можете сравнить две точки относительно друг от друга, отдельно для каждой оси. Вам нужно ссылочное значение. Что вы можете сделать, так это рассчитать абсолютное смещение между двумя точками каждой оси. Затем вы можете рассчитать относительное смещение относительно соответствующего размера зеленого прямоугольника. Например, вы можете рассчитать относительное горизонтальное смещение как абсолютное смещение между центрами по оси x, разделенными на ширину зеленого прямоугольника. В общем, для сравнения, чтобы добиться успеха, я хотел бы, чтобы прямоугольники имели почти одинаковые размеры и почти тот же центр. Где «почти» следует количественно определить в процентах.
Относительно неудачу условие (1), при условии, что максимально допустимая относительная погрешность ширины прямоугольника составляет 25%, то логическое значение, которое нужно вычислить является:
| green.width - red.width |/green.width > 0.25
Если выше значение true
, то условие отказа (1) отключается. Чувак может быть пьян. Мы можем выйти и уведомить.
Об отсутствии условия (2), при условии, что максимальная допустимая относительная погрешность высоты прямоугольника составляет 30%, логическое значение, которое мы должны вычислить это:
| green.height - red.height |/green.height > 0.30
Если выше значение true
, то условие отказа (2) отключается. Мы можем выйти и уведомить.
Относительно неуспешное условие (3), при условии, что максимально допустимая относительная погрешность по горизонтали прямоугольника смещения составляет 15%, то логическое значение, которое нужно вычислить является:
| green.center.x - red.center.x |/green.width > 0.15
Если выше значение true
, то условие отказа (3) отключается. Мы можем выйти и уведомить.
Относительно неуспешное условие (4), при условии, что максимально допустимая относительная погрешность для вертикального смещения составляет 20% прямоугольника, то логическое значение, которое нужно вычислить является:
| green.center.y - red.center.y |/green.height > 0.20
Если выше значение true
, то условие отказа (4) отключается. Мы можем выйти и уведомить.
Если хотя бы одно состояние неисправности отключается, сравнение сравнивается. Если состояние ошибки не true
, сравнение будет успешным, зеленый и красный прямоугольники почти одинаковы.
Я считаю, что подход, приведенный выше, имеет много преимуществ, таких как рассуждение для отдельных аспектов сравнения, а также определение различных пороговых значений для условий отказа. Вы также можете настроить пороги в соответствии с вашим вкусом. В крайних случаях, возможно, необходимо будет учитывать все больше параметров.
Это зависит от того, чего вы пытаетесь достичь. – SergeyS
Всегда ли рисованный прямоугольник пользователя должен перекрывать изображение, или прямоугольник можно рисовать в любом месте в этой области? –
Пользователь должен выбрать специальный элемент на изображении, и алгоритм должен вычислить, выбрал ли он правильный элемент. –