реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> подсчитать площадь кляксы
sergey sva
сообщение Oct 22 2013, 13:57
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Подскажите пожалуйста как подсчитать площадь кляксы? Площадь круга понятно как считать, а если это что то типа кляксы значение получено из ацп по всему периметру, цифры от 0 до 4096.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Oct 22 2013, 14:03
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Вообще площадь произвольной замкнутой несамопересекающейся фигуры на плоскости можно считать методом трапеций. Но лично мне не совсем ясна задача - что значит "значение получено из ацп по всему периметру"? Это какая-то фигура на плоскости или что?
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Oct 22 2013, 14:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Вот на таком примере: лежит экран сенсорный и на нем провели какой то рисунок замкнутый получили координаторы xy как теперь подсчитать площадь?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Oct 22 2013, 15:02
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(sergey sva @ Oct 22 2013, 18:48) *
Вот на таком примере: лежит экран сенсорный и на нем провели какой то рисунок замкнутый получили координаторы xy как теперь подсчитать площадь?


Залейте контур изнутри белым цветом (0xFF), а снаружи черным (0х00). А потом посуммируйте интенсивности всех точек на экране.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Oct 22 2013, 15:18
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Это если известно разрешение экрана, а если нет, и нужно подсчитать площадь этого контура в кв мм ?

Да разрешение не известно, но к значением ацп могу привязать например 0 = 0мм а 4096 = 500мм но это длина, как теперь из массива x[n] и y[n] определить площадь?
Go to the top of the page
 
+Quote Post
cant
сообщение Oct 22 2013, 15:26
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 216
Регистрация: 28-10-08
Из: Брест
Пользователь №: 41 243



произвольную фигуру проще всего так, как описала Xenia. только нормировку сделать по размерам и все
Go to the top of the page
 
+Quote Post
RHnd
сообщение Oct 22 2013, 15:45
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Заливать всю площадь и считать интенсивность это обалдеть как ресурсозатратно. Одна только заливка произвольной фигуры чего стоит. Тогда уж проще прямо в процессе заливки и посчитать, скольким точкам был присвоен цвет заливки и помножить на площадь пикселя.

Для вашей задачи неплохим, как мне кажется, решением будет именно метод трапеций, о котором я говорил в начале. Точки у вас, как я понимаю, заданы в порядке обхода. Каждые две точки соединяются прямой, т.е. фигура описывается многоугольником. Затем, начиная с некоторой точки, считаем площадь прямоугольной трапеции, заданной вершинами (x(i),0) — (x(i),y(i)) — (x(i+1),y(i+1)) — (x(i+1),0). Тут для простоты считается, что все y больше нуля:
dS = (x(i+1)-x(i)) *(y(i+1)+y(i))/2;
S=S+dS.
Когда обойдем все точки, в S будет площадь аппроксимирующего прямоугольника. Естественно, dS может быть как положительным, так и отрицательным.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Oct 22 2013, 16:10
Сообщение #8


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Polygon triangulation
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 22 2013, 16:32
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(sergey sva @ Oct 22 2013, 17:57) *
Подскажите пожалуйста как подсчитать площадь кляксы?

Площадь будет равна сумме ориентированных площадей треугольников, образованных из следующих точек: любая точка плоскости (абсолютно любая, хоть 0,0), пара соседних точек из множества контура, ограничивающего "кляксу". Обходим контур в определенном направлении - считаем ориентированную площадь треугольников - модуль суммы площадей = искомая площадь. Трудность (и то - небольшая) в определении ориентации треугольника - т.е. в определении положения третьей точки относительно прямой, проходящей через первые две...
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Oct 22 2013, 19:58
Сообщение #10


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Классическая задача для интегрирования методом Монте-Карло. Грубо:

Пусть клякса нарисована на листе с известной площадью.
Кидаем на лист горсть копеечных монет.
Подсчитываем количество монет на всем листе и на кляксе.
Отношение числа монет в пределе равно отношению площадей.

Задача "Point in polygon" решается не сложно.

Всё. Раздаем монеты нищим.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Oct 22 2013, 21:43
Сообщение #11


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Fat Robot @ Oct 22 2013, 23:58) *
Классическая задача для интегрирования методом Монте-Карло. Грубо:

Пусть клякса нарисована на листе с известной площадью.
Кидаем на лист горсть копеечных монет.
Подсчитываем количество монет на всем листе и на кляксе.
Отношение числа монет в пределе равно отношению площадей.

Так он же не может определить, внутри кляксы точка или снаружи! Дорого это занятие для него. А если бы легко определялось, то залить кляксу краской и дело с концом sm.gif. Тем паче, что быстрее все точки на том дисплее по очереди перебрать, чем Монте-Карла заводить.
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Oct 22 2013, 22:56
Сообщение #12


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



Залить и перебрать. это подход.

Всё зависит от точности, с которой нужно получить эту площадь. Этим метод и прекрасен. Можно оценку уточнять с течением времени. Можно, оценивая сходимость, решать, нужно ли продолжать вычисления.
В качестве начальной оценки (лист для кляксы в моем примере) взять описанный прямоугольник.

Цитата(Xenia @ Oct 23 2013, 00:43) *
Так он же не может определить, внутри кляксы точка или снаружи! Дорого это занятие для него. А если бы легко определялось, то залить кляксу краской и дело с концом. Тем паче, что быстрее все точки на том дисплее по очереди перебрать, чем Монте-Карла заводить.

Go to the top of the page
 
+Quote Post
RHnd
сообщение Oct 24 2013, 09:10
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Подождите, а как вы предлагаете реализовывать заливку, не определяя, внутри фигуры точка или нет?
Предложили два аналитических метода - по трапециям и по ориентированным треуголькам. Зачем накручивать более ресурсоемкие, и медленные методы подсчета точек?
Go to the top of the page
 
+Quote Post
megajohn
сообщение Oct 24 2013, 09:18
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(RHnd @ Oct 24 2013, 13:10) *
Зачем накручивать более ресурсоемкие, и медленные методы подсчета точек?


можно еще проще: да взять и поставить резистор в цепь питания сенсора и смотреть ток =)


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
RHnd
сообщение Oct 24 2013, 09:55
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(megajohn @ Oct 24 2013, 13:18) *
можно еще проще: да взять и поставить резистор в цепь питания сенсора и смотреть ток =)


Здорово. И что вы увидете?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 15:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01529 секунд с 7
ELECTRONIX ©2004-2016