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

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

update 26.11.2020. Если нет возможности/необходимости приобретать вышеуказанное ПО, то можно использовать графический онлайн калькулятор SURVy, который к тому же абсолютно бесплатный.

Большинство чертежей я выполняю в 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), статья исправлена.

15 Comments

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

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

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

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

  3. Григорий

    Добрый день!
    Хороший блок, крутая работа. Не хватает ручки поворота в блоке. Подбирать угол в свойствах неудобно.

  4. Артем

    Отличный блок

    Объектив 2.8 мм округляется до 3х

    1. admin (Автор записи)

      Странно, у меня не округляется. Можно уточнить при каких параметрах (действиях) происходит округление?

      1. Артем

        при переносе на свой чертеж…

        1. admin (Автор записи)

          Хм, у меня не удалось повторить. Я как правило копирую блок в проект и потом уже с ним работаю

          1. Артем

            а на каком автокаде проверяли?

            у меня на 2018 при изменении зоны идентификации на 500 начинаются глюки

          2. admin (Автор записи)

            В 2018 и проверял. Если не сложно пришлите на почту a-mart@ya.ru «глюкавое» состояние.
            Небольшое замечание: кол-во пикселей по границам должно быть последовательно zone1 < zone2 < zone3 < zone4 < zone5, т.е. например 12-25-100-250-500. Если выставляете 12-500-100-250-500, то и получится не пойми чего.

    2. Дмитрий

      Возможно автокад округляет именно ОТОБРАЖАЕМОЕ в свойствах значение

  5. Анфиса

    Добрый день!
    Ссылка — Динамический блок AutoCAD с зонами обзора видеокамеры (скачать) — не работает у меня, не могу скачать.

    1. admin (Автор записи)

      Попробуйте сейчас, если не получится — отправлю по почте. По всей видимости проблема в новых политиках браузеров по работе с http/https.

  6. Александр

    Здравствуйте, написал на почту вопрос по поводу смотрящих камер друга на друга. Посмотрите пожалуйста

  7. Дмитрий

    Добрый день!
    Подскажите, пожалуйста, для какой версии Автокада разрабатывался блок? В версии 2022 настройка свойств блока не появляется.

    1. admin (Автор записи)

      У меня 2018. Но сейчас я бы очень аккуратно им пользовался, так как если раньше дисторсия была только на объективах 3,6 мм и меньше, то сейчас уже на 8 и 12 мм встречается, а это сильно изменяет зону обзора (пиксельную плотность).

Оставить комментарий

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

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