Если у меня есть выпуклые вершины полигонов, то мой расчет области на изображении не соответствует точной стандартной формуле.Как определить площадь многоугольника в изображении
(Для simiplicity), если я с 3x3 квадрат, а вершины (1,1) (1,3) (3,3) (3,1)
полигоном область метод расчета изображен здесь
и разделив суммирование 2 мы получаем Area.
Таким образом, для данных 3 х 3 выше, мы получим площадь в 4 вместо 9.
Это происходит потому, что вершины не являются точками, но пикселей.
это соответствующий код. Координаты являются циклическими.
int X[] = { 1, 1, 3, 3, 1};
int Y[] = { 1, 3, 3, 1, 1};
double Sum1 = 0;
double Sum2 = 0;
int numElements = 5;
for (int k = 0; k < numElements-1; k++)
{
Sum1 += X[k] * Y[k + 1];
Sum2 += Y[k] * X[k + 1];
}
double area = std::abs((double)(Sum1 - Sum2))/2;
Для квадрата мы можем сделать +1 шириной и высотой и получить правильную площадь. Но как насчет нерегулярных полигонов в изображении? Надеюсь, вопрос имеет смысл.
обычный вопрос : что вы пробовали? Я предлагаю вам показать какой-то код, который терпит неудачу, и дать понять, где он терпит неудачу. – davidhigh
Я добавил код. –
Я понимаю ваш предполагаемый алгоритм вовсе.Самое главное: как именно вы собираетесь рассчитать площадь общих полигонов? Далее: как картина связана с этим? Как вы преобразовали изображение в код? – davidhigh