Динамический блок AutoCAD с зонами обзора видеокамеры (бета)

С помощью специализированного программного обеспечения VideoCAD (CCTVCAD Software) и IP Video System Design Tool (JVSG) есть возможность рассчитывать зоны обзора, причем стоит оно вполне вменяемо. Однако, большинство чертежей я выполняю в AutoCAD, и “перенос” из одной программы в другую занимает много времени.

Поэтому “засучив рукава”, вспомнив математику 8 класса и попутно осваивая новые для меня динамические блоки AutoCAD, я приступил к созданию блока.

“Примитивная” схема зоны обзора (без учета дисторсии) базируется на зоне обзора в виде пирамиды, несложных графических построениях и “мега”-формулах:

\[ \frac{f}{x} = \frac{S}{H}, \: \alpha = 2\cdot arctg \frac{x}{2f}, \\ \frac{f}{y} = \frac{S}{V}, \: \beta = 2\cdot arctg \frac{у}{2f}, \]

где \( f \) – фокусное расстояние объектива, ​
\( x \)​ – размер матрицы видеокамеры по горизонтали,
\( y \)​ – размер матрицы видеокамеры по вертикали,
\( S \)​ – расстояние до зоны наблюдения,
\( H \)​ – ширина поля наблюдения,
\( V \)​ – высота поля наблюдения,
\( \alpha \)​ – горизонтальный угол обзора,
\( \beta \)​ – вертикальный угол обзора.

Размеры матриц лучше смотреть в data-sheet от производителя или, если это невозможно, воспользоваться ниже таблицей (взято из статьи на сайте Бевард):

Важно:

  • размеры (диагоналей) матриц указываются в “видиконовых” дюймах, которые уже потихоньку превратились в инструмент маркетологов, поэтому с данным значением нужно быть предельно аккуратным;
  • данные в таблице немного расходятся с размерами матриц, принятых в специализированном ПО.

Таким образом, “конфигурация пирамиды” определяется тривиально. Однако, камера устанавливается на какой-либо высоте (h), а высота расположения “цели” задается двумя отметками – нижней (h1) и верхней (h2).

В окне свойств блока выставляются следующие параметры (при наведении на переменную появляется подсказка):

  • f – фокусное расстояние;
  • AR – соотношение сторон матрицы видеокамеры (от aspect ratio);
  • y – высота матрицы в видеокамеры в мм (ширина матрицы по горизонтали x рассчитывается с помощью AR);
  • y_res – разрешение матрицы по вертикали (разрешение по горизонтали x_res рассчитывается с помощью AR);
  • cor: “0” – обычная ориентация, “1” – коридорный формат;
  • Dn – длина зоны обзора, мм (можно задать в свойствах или с помощью “ручки”).

Зоны (zone_1_… – zone_5_…) раскрашены в цвета по типу решаемых задач (можно самостоятельно установить значение пкс/м, по умолчанию приняты, как в IP Video System Design Tool):

  • красный – идентификация (250 пкс/м);
  • охра – распознавания (125 пкс/м);
  • зеленый – обзора (62 пкс/м);
  • голубой – детекции (25 пкс/м);
  • синий – мониторинг (12 пкс/м).

Блок не производит расчет, если видеокамера направлена “вниз” в силу схемы построения.

Динамический блок AutoCAD с зонами обзора видеокамеры (скачать)


Для тех, кто хочет изучить блок (не так страшно, как может показаться)

Кратко о переменных:

  • в блоке приведено описание каждой переменной (все используемые переменные можно увидеть при редактировании блока в “Диспетчере параметров”);
  • D1-D5 – длина зон на плане;
  • S1-S5 – удаленность плоскости “задачи” от объектива камеры;
  • k_сonv – вспомогательный коэффициент, который используется для определения расстояния S1-S5 до соответствующей зоны.

Методика расчета

1. Углы α и β рассчитываются согласно приведенным в начале статьи формулам (зависят только от размеров матрицы и фокусного расстояния).

2. Угол наклона видеокамеры γ:

\[ \Delta AA’Dn:\tan{(\gamma-\frac{\beta}{2})} = \frac{|AA’|}{|A’Dn|}=\frac{h-h2}{Dn}\]

Здесь и далее тангенс обозначается “tan”, а не “tg”, как принято в России. Это связано с особенностями модуля для набора формул на сайте.

3. Длина мертвой зоны D0:

\[ \Delta ABB’: \tan{(\gamma+\frac{\beta}{2})} = \frac{|BB’|}{|AB’|}=\frac{h-h1}{D0} \Rightarrow D0=\frac{h-h1}{\tan{(\gamma+\frac{\beta}{2})}} \]

4. Ширина “мертвой” зоны в точке С (равна ширине в точке С’):

\[ \Delta ABB’: |AB|=\sqrt{D0^2+(h-h1)^2}, \\ \Delta ABE: \cos{\frac{\beta}{2}}=\frac{|AE|}{|AB|} \Rightarrow |AE|=|AB|\cos{\frac{\beta}{2}}=\sqrt{D0^2+(h-h1)^2}\cos{\frac{\beta}{2}}, \\ \Delta BCE’: \sin{\gamma}=\frac{|CE’|}{|BC|}=\frac{|CE’|}{h2-h1} \Rightarrow |CE’|=(h2-h1)\sin{\gamma},\\ |AC’|=|AE|-|C’E|=|AE|-|CE’|=\sqrt{D0^2+(h-h1)^2}\cos{\frac{\beta}{2}}-(h2-h1)\sin{\gamma}, \\ H_{c’}=H_c=2\cdot \tan{\frac{\alpha}{2}}\cdot |AC’|=2\cdot \tan{\frac{\alpha}{2}} \cdot(\sqrt{D0^2+(h-h1)^2}\cos{\frac{\beta}{2}}-(h2-h1)\sin{\gamma)} \]

5. Ширина зоны обзора в точке Dn (равна ширине в точке Dn’):

\[ \Delta AA’Dn: \cos {(\gamma-\frac{\beta}{2})}=\frac{|A’Dn|}{|ADn|}\Rightarrow |ADn|=\frac{Dn}{\cos {(\gamma-\frac{\beta}{2})}}, \\ \Delta ADnDn’: \cos{\frac{\beta}{2}}=\frac{|ADn’|}{|ADn|} \Rightarrow |ADn’|=|ADn|\cos{\frac{\beta}{2}}=Dn\cdot\frac{\cos{\frac{\beta}{2}}}{\cos {(\gamma-\frac{\beta}{2})}}, \\ H_{Dn’}=H_{Dn}=2\cdot \tan{\frac{\alpha}{2}}\cdot |ADn’|=2\cdot \tan{\frac{\alpha}{2}}\cdot Dn\cdot\frac{\cos{\frac{\beta}{2}}}{\cos{(\gamma-\frac{\beta}{2})}} \]

6. Расстояния до секущих плоскостей S1-S5 привязано к количеству точек (1000 из-за перевода м в мм):

\[ S_i=\frac{y_{res}\cdot\frac{f}{y}*1000}{количество \: точек \: на \: метр} \]

7. Рассчитывается D1-D5 (переменная Di_calc). Ширина зон 1-5 не рассчитывается, а строится привязками в блоке. Привожу расчет на примере зоны D1:

\[ \Delta ADF’: \sin{\gamma}=\frac{|DF’|}{|AD|}=\frac{|DF’|}{S1} \Rightarrow |DF’|=S1*{\sin{\gamma}}, \\ |DF|=h-|DF’|-h1=h-h1-S1*{\sin{\gamma}}, \\ \Delta DD1’F: \tan{\gamma}=\frac{|D1’F|}{|DF|} \Rightarrow |D1’F|=\tan{\gamma}\cdot |DF|=\tan{\gamma}\cdot (h-h1-S1*{\sin{\gamma}}), \\ D1’=|AF’|-|D1’F|=S1*\cos{\gamma}-\tan{\gamma}\cdot (h-h1-S1*{\sin{\gamma}}) \]

Для случая, когда точка D1′ оказывается ниже уровня h1, формулы те же самые (вывод аналогичен). Также получаем аналогичную формулу для D1″ (только вместо h1, будет h2).

\[ D1″=S1*\cos{\gamma}-\tan{\gamma}\cdot (h-h2-S1*{\sin{\gamma}}) \]

Примем, что отображение края зоны (точка D1) будет находится посередине между D1′ и D1”. В итоге, после несложных преобразований получим формулу:

\[ D1=\frac{D1’+D1”}{2}=S1*\cos{\gamma}+\tan{\gamma}\cdot (S1*{\sin{\gamma}}-h+\frac{h1+h2}{2}) \]

8. Выполняется проверка расположения зоны Di “за” D0 (вычисление Di_check) и “внутри” Dn (переменная Di). “Хитрая” формула вида “D1_calc(1+(D1_calc-D0)/ABS(D0-D1_calc))/2 + (D0+1)(1-(D1_calc-D0)/ABS(D0-D1_calc))/2” на самом деле прописывает условие “если” (найдено на форуме dwg.ru пост #8 от Сысой ). Зоны при “несоответствующих” размерах “схлопываются” (при увеличении видно).

9. Возможно, где-то расчеты сделаны не самым коротким путем, но ведь работает 🙂 .

Зона обзора построена и остается маленький штрих – “обрезать” ненужное. Сделать это можно с помощью объекта “Маскировка”, который вызывается командой “МАСКИРОВКА” (_wipeout). Скрыть или показать контур маскировочной области можно командой _wipeoutframe (0 и 1 соответственно). Чтобы не “закрыть” планы, отправляем блоки “Порядок прорисовки” на задний план, а маскировку выносим перед указанной зоной.

Другим путем “подрезки” блока является команда “_CLIP”. Она в отличии от МАСКИРОВКИ, обрезает сам блок по заданному контуру. Стоит учитывать, что при вращении блока (например, “повернуть камеру на 5 градусов правее”) линия обрезки также повернется и ее необходимо будет доработать.

Таким образом, оба метода пока являются относительно трудоемкими, к тому же нужно быть аккуратными с перекрывающими обзор элементами. Я бы порекомендовал их применять только после “финальной” расстановки видеокамер, чтобы уменьшить трудозатраты.

При печати на забудьте включить прозрачность, чтобы все выглядело здорово.

Нюансы:

  • не пытайтесь редактировать блок с зоной обзора, если в чертеже уже “натыкали” много зон. При количестве блоков около 50 у меня компьютер “подвисал” и только после замены на более быстрый, он хоть как-то начал “пережевывать”;
  • проверял блок в ПО VideoCAD – все совпало (upd. 23/01/2019).

Как правило, объективы с дисторсией применяют в основном с фокусом до 4 мм или fisheye. Проверяйте углы обзора по блоку и то, что заявлены производителем – если вторые больше, то дисторсия у объектива камеры есть и блок будет давать некорректные результаты (при дисторсии центральная часть зоны обзора “уменьшается”).

Пользуйтесь блоком на здоровье, а если найдете в нем “косяки” и/или есть идеи по доработке – пишите!

При обновлении блок будет выкладываться в этой же статье (с описанием изменений).

В планах (если блок вызовет интерес):

  • разобраться с моделированием дисторсии (если кто-то поможет с математическим аппаратом – буду премного благодарен);
  • зону обзора строить по указанному контуру (чтобы не использовать маскировки);
  • сделать “калькулятор зоны” видеокамеры на сайт (это наверное самое простое).

UPD. 23/01/2019 Найдена неточность в определении дальности зоны (п. 7), которая незначительно увеличивала зону. Спасибо Виталию Поминову за наводку. Блок перезалит (текущая версия 03beta), статья исправлена.

2

  1. Денис Маркевич

    Отличный блок. Спасибо за проделанную работу! Если в процессе работы появятся замечания или предложения обязательно напишу.

  2. Евгений Озеров

    Спасибо! Отличный блок! Здорово что проектировщики перестают сидеть в своих норах и создают такие замечательные блоги и блоки)) Надо обновить свой каталог авторских блогов по слаботочке

Комментарии

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить