Отключение DDC
Немного KVM-переключатели (клавиатура-видео-мышь) и видеорасширители обрабатывают трафик DDC некорректно, из-за чего возникает необходимость отключить в операционной системе функции plug and play монитора и, возможно, даже физически удалить контакт 12 (контакт последовательных данных) из аналоговых кабелей VGA которые подключают такое устройство к нескольким ПК.
Microsoft Windows имеет стандартный драйвер «Plug and Play Monitor», который использует информацию EDID дисплея для создания списка поддерживаемых режимов монитора. Апплет панели управления «Разрешение экрана» позволяет пользователю отключить функции Plug and Play этого драйвера и вручную выбрать любое разрешение или частоту обновления, поддерживаемые видеокартой. Многие производители видеокарт и третьи стороны предоставляют управляющие приложения, которые позволяют пользователю выбирать пользовательский режим отображения, который не соответствует информации EDID или файлу .INF монитора.
Реализация в Python
В этой части мы напишем программу Python для обнаружения объектов и понимания его реализации. Мы будем использовать следующее изображение в нашей программе Python, чтобы выполнить обнаружение объекта на нем:
Открытие изображения
Сначала мы откроем изображение, приведенное выше, и создадим среду изображения, чтобы показать его на выходе. Давайте сначала рассмотрим пример программы, чтобы понять ее реализацию, а затем рассмотрим пояснительную часть.
Пример 1: Открытие изображения с помощью OpenCV и библиотеки matplotlib в программе Python
# Import OpenCV module import cv2 # Import pyplot from matplotlib as pltd from matplotlib import pyplot as pltd # Opening the image from files imaging = cv2.imread("opencv-od.png") # Altering properties of image with cv2 img_gray = cv2.cvtColor(imaging, cv2.COLOR_BGR2GRAY) imaging_rgb = cv2.cvtColor(imaging, cv2.COLOR_BGR2RGB) # Plotting image with subplot() from plt pltd.subplot(1, 1, 1) # Displaying image in the output pltd.imshow(imaging_rgb) pltd.show()
Выход:
Объяснение:
Во-первых, мы импортировали библиотеки OpenCV(как cv2) и matplotlib(как plt) в программу, чтобы использовать их функции в коде. После этого мы открыли файл изображения с помощью функции imread() cv2.
Затем мы определили свойства изображения, которое мы открыли в программе, с помощью функций cv2. Затем мы строим подзаголовок изображения, используя функцию subplot() plt и задавая в ней параметры. Наконец, мы использовали функции imshow() и show() модуля plt, чтобы показать изображение на выходе.
Как мы видим на выходе, изображение отображается в результате работы программы, а его границы были нанесены на вспомогательные черты.
Распознавание или обнаружение объекта на изображении
Теперь мы будем использовать функцию detectMultiScale() в программе для обнаружения объекта, присутствующего на изображении. Ниже приведен синтаксис использования в коде функции detectMultiScale():
found = xml_data.detectMultiScale(img_gray, minSize =(30, 30))
Мы будем использовать оператор условия с этой функцией в программе, чтобы проверить, обнаружен ли какой-либо объект на изображении или нет, и выделить обнаруженную часть. Давайте разберемся с реализацией обнаружения объектов на изображении на примере программы.
Пример 2: Обнаружение объекта на изображении с помощью метода detectMultiScale()
# Import OpenCV module import cv2 # Import pyplot from matplotlib as plt from matplotlib import pyplot as pltd # Opening the image from files imaging = cv2.imread("opencv-od.png") # Altering properties of image with cv2 imaging_gray = cv2.cvtColor(imaging, cv2.COLOR_BGR2GRAY) imaging_rgb = cv2.cvtColor(imaging, cv2.COLOR_BGR2RGB) # Importing Haar cascade classifier xml data xml_data = cv2.CascadeClassifier('XML-data.xml') # Detecting object in the image with Haar cascade classifier detecting = xml_data.detectMultiScale(imaging_gray, minSize =(30, 30)) # Amount of object detected amountDetecting = len(detecting) # Using if condition to highlight the object detected if amountDetecting != 0: for(a, b, width, height) in detecting: cv2.rectangle(imaging_rgb,(a, b), # Highlighting detected object with rectangle (a + height, b + width), (0, 275, 0), 9) # Plotting image with subplot() from plt pltd.subplot(1, 1, 1) # Displaying image in the output pltd.imshow(imaging_rgb) pltd.show()
Выход:
Объяснение:
После открытия изображения мы импортировали в программу XML-файл каскадного классификатора. Затем мы использовали функцию detectMultiScale() с импортированным каскадным файлом, чтобы определить, присутствует ли объект на изображении или нет.
Мы использовали условие if в программе, чтобы проверить, обнаружен ли объект или нет, и если объект обнаружен, мы выделили часть обнаруженного объекта, используя цикл for с функциями cv2. Выделив на изображении часть обнаруженного объекта, мы отобразили обработанное изображение с помощью функций plt show() и imshow().
Как мы видим в выводе, изображение с выделенной частью обнаруженного объекта показывается нам, когда мы запускаем программу.
Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.
Код PyTorch ↑
import cv2 import matplotlib.pyplot as plt from utils import * from darknet import Darknet # Установить порог NMS nms_threshold = 0.6 # Установить порог IoU iou_threshold = 0.4 cfg_file = "cfg/yolov3.cfg" weight_file = "weights/yolov3.weights" namesfile = "data/coco.names" m = Darknet(cfg_file) m.load_weights(weight_file) class_names = load_class_names(namesfile) # m.print_network() original_image = cv2.imread("images/city_scene.jpg") original_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB) img = cv2.resize(original_image, (m.width, m.height)) # обнаруживаем объекты boxes = detect_objects(m, img, iou_threshold, nms_threshold) # вычерчиваем изображение с ограничивающими рамками и соответствующими метками классов объектов plot_boxes(original_image, boxes, class_names, plot_labels=True)
Расчет матрицы ошибок с помощью Scikit-Learn
В популярной Python-библиотеке Scikit-learn есть модуль , который можно использовать для вычисления метрик в матрице ошибок.
Для задач с двумя классами используется функция . Мы передадим в функцию следующие параметры:
- : эталонные метки.
- : предсказанные метки.
Следующий код вычисляет матрицу ошибок для примера двоичной классификации, который мы обсуждали ранее.
Копировать
Обратите внимание, что порядок метрик отличается от описанного выше. Например, показатель True Positive находится в правом нижнем углу, а True Negative — в верхнем левом углу
Чтобы исправить это, мы можем перевернуть матрицу.
Копировать
Чтобы вычислить матрицу ошибок для задачи с большим числом классов, используется функция , как показано ниже. В дополнение к параметрам и третий параметр принимает список классовых меток.
Копировать
Функция вычисляет матрицу ошибок для каждого класса и возвращает все матрицы. Их порядок соответствует порядку меток в параметре . Чтобы изменить последовательность метрик в матрицах, мы будем снова использовать функцию .
Копировать
В оставшейся части этого текста мы сосредоточимся только на двух классах. В следующем разделе обсуждаются три ключевых показателя, которые рассчитываются на основе матрицы ошибок.
Как пользоваться DDC/CI
Для использования DDC/CI сначала проверьте, что монитор поддерживает этот стандарт. Обычно эта функция есть в моделях не старше 3-4 лет.
Некоторые производители разрабатывают собственное программное обеспечение, которое работает в этом стандарте, например Samsung MagicTune. Но, очевидно, что ПО Samsung не будет работать с моделями другой марки.
Если ищите универсальную программу, которая позволяет использовать DDC/CI независимо от производителя, то лучшей считается ClickMonitorDDC. Она подходит для случаев, когда используются несколько мониторов (разных марок) и позволит получить управление над всеми активными дисплеями.
ClickMonitorDDC — это портативное бесплатное приложение, с помощью которого можно регулировать яркость и контрастность любого монитора, путем простой регулировки набора ползунков. Таким образом, получаем легкий доступ к элементам управления дисплея через иконку приложения на панели задач.
Краткая инструкция по включению, установке и настройке DDC/CI с помощью ClickMonitorDDC:
Нажмите кнопку Настройки на мониторе, проверьте включен ли DDC/CI.
В большинстве моделей DDC/CI включен по умолчанию, но перед переходом к следующим шагам убедитесь, что этот параметр включен.
Скачайте последнюю версию ClickMonitorDDC.
После завершения загрузки дважды кликните файл установки ClickMonitorDDC, нажмите кнопку «Yes» в приглашении UAC (Контроль учетных записей пользователей), чтобы предоставить приложению права администратора.
Следуйте инструкциям на экране до завершения установки. Ничего не меняйте, оставьте настройки по умолчанию, нажмите кнопку «Install» для установки приложения.
Как установить смарт карту в телевизор
Перед установкой убедитесь, что модель вашего телевизора поддерживает подобное оборудование. Установка смарт карты не представляет сложности.
- Адаптер карты, куда она и вставляется, продается в большинстве случаев вместе с картой. Чип при установке должен быть сверху. Модуль при этом расположен лицевой стороной к пользователю.
- Затем адаптер вставляется в слот на телеприемнике. Некоторые компании приклеивают на свое изделие пленку с маркировкой продукции. Ее нужно отклеить перед установкой.
- Многие модели телевизоров, например, Samsung или LG, имеют особенность: разъем для CAM модуля у них укорочен. Поэтому не нужно пытаться вставить его поглубже, иначе можно сломать устройство.
- Модуль располагается лицевой стороной вверх. Неправильно установленный адаптер работать не будет.
Внимание! Все эти действия производятся при выключенном из сети телевизоре.
После установки телевизор можно включить. На его мониторе появится надпись о появлении нового оборудования. Некоторые программы придется настраивать вручную, но большинство каналов у любых производителей включаются автоматически.
Если в телевизоре нет специального разъема для установки смарт карты, необходимо приобрести ресивер (ТВ приставку). Установка карты в ресивер производится аналогичным образом, как и в телевизионный адаптер.
Что такое DDC/CI?
Display Data Channel (DDC) / Command Interface (CI) — это тип связи между компьютером и монитором. Он содержит набор протоколов, используемых для передачи информации о модели дисплея и поддерживаемых видеорежимах.
DDC по существу разрешает монитору уведомлять компьютер о поддерживаемых видеорежимах
Но что более важно, канал обмена данными позволяет пользователю контролировать и изменять параметры дисплея, такие как яркость, контрастность, цветовую гамму непосредственно с компьютера
На базовом уровне этот стандарт предоставляет функционал «Plug and Play». Многие модели имеют менее интуитивный интерфейс, поэтому понятно, почему некоторые пользователи ищут способы избежать использования «неуклюжих» кнопок, которые есть у многих дисплеев.
Командный интерфейс (CI) — это канал, используемый двумя участвующими сторонами (компьютером и монитором) для отправки и получения команд в одну и другую сторону. Некоторые мониторы могут даже поддерживать технологию auto-pivot – датчик вращения. Эта технология, удерживает экран горизонтально, при наклоне монитора в разные стороны.
Физическая ссылка
До DDC VGA стандарт зарезервировал четыре контакта в аналоговом Разъем VGA, известные как ID0, ID1, ID2 и ID3 (контакты 11, 12, 4 и 15) для идентификации типа монитора. Эти идентификационные штырьки, прикрепленные к резисторам для заземления одного или нескольких из них (GND), позволяют определить тип монитора, при этом все разомкнутые (н / п, не подключены) означают «нет монитора».
В наиболее часто документированной схеме вывод ID3 не использовался, и были определены только 3 оставшихся контакта. Цветные мониторы подтягивают ID0 к GND, а монохромные мониторы подтягивают ID1 к GND. Наконец, ID2, подключенный к GND, сигнализировал о мониторе, поддерживающем разрешение 1024 × 768, например IBM 8514. В этой схеме входные состояния контактов ID будут кодировать тип монитора следующим образом:
ID2 (вывод 4) | ID0 (вывод 11) | ID1 (вывод 12) | тип монитора |
---|---|---|---|
н / п | н / п | н / п | монитор не подключен |
н / п | н / п | GND | |
н / п | GND | н / п | |
GND | GND | н / п | ≥ 1024 × 768, цветной |
Существовали также более сложные схемы, в которых использовались все 4 контакта ID при манипулировании сигналами HSync и VSync для извлечения 16 битов (значения 4 контактов ID для каждой из 4 комбинаций состояний HSync и VSync) идентификации монитора.
DDC изменил назначение контактов идентификатора, чтобы включить последовательный интерфейс. Однако во время перехода изменение не было обратно совместимым, и видеокарты, использующие старую схему, могли иметь проблемы, если был подключен монитор с поддержкой DDC. Сигнал DDC может быть отправлен на или от монитора видеографического массива (VGA) с помощью I2Протокол C, использующий последовательные часы ведущего устройства и выводы последовательных данных.
DDC1
DDC1 — это простой, низкоскоростной, однонаправленный последовательная ссылка протокол. Контакт 12, ID1 функционирует как линия данных, которая непрерывно передает 128-байтовый блок EDID, а часы данных синхронизируются с вертикальная синхронизация, обеспечивая типичную тактовую частоту от 60 до 100 Гц.
Очень немногие устройства отображения реализуют этот протокол.
DDC2
Самая распространенная версия, называемая DDC2B, основан на I²C, а последовательная шина. Контакт 12, ID1 разъема VGA теперь используется как контакт данных шины I²C, а ранее неиспользуемый контакт 15 стал тактовым сигналом I²C; контакт 9, ранее использовавшийся в качестве механического ключа, подавал питание +5 В постоянного тока до 50 мА для управления EEPROM, это позволяет хосту считывать EDID, даже если монитор выключен. Хотя I²C полностью двунаправленный и поддерживает несколько автобусные мастера, DDC2B является однонаправленным и допускает только один автобусный мастер — графический адаптер. Монитор действует как ведомое устройство по 7-битному адресу I²C 50h и предоставляет 128–256 байтов только для чтения. EDID. Поскольку этот доступ всегда является чтением, первым октетом I²C всегда будет A1h.
DDC2Ab представляет собой реализацию на базе I²C 100 кбит / с ACCESS.bus интерфейс, который позволил производителям мониторов поддерживать внешние периферийные устройства ACCESS.bus, такие как мышь или клавиатура, практически без дополнительных усилий; такие устройства и мониторы были кратковременно доступны в середине 1990-х годов, но исчезли с появлением USB.
DDC2B + и DDC2Bi являются уменьшенными версиями DDC2Ab, которые поддерживают только устройства с мониторами и видеокартами, но по-прежнему допускают двунаправленную связь между ними.
DDC2 не является эксклюзивным разъемом VGA, поскольку оба DVI и HDMI разъемы оснащены специальными проводами DDC2B.
Постановка задачи
Различие между задачами классификации изображения, классификации с локализацией, детекции объектов и сегментации экземпляров
Задача нахождения объектов на изображении может быть поставлена различным образом и включает в себя класс других задач, помогающих определить, какие объекты находятся на изображении и где они расположены в сетке пикселей исходного изображения.
Задача семантической сегментации (англ. semantic segmentation) — задача, в которой на вход модели подаётся изображение, а на выходе для каждого пикселя является метка принадлежности этого пикселя к определённой категории. Например, если в исходном изображении человек переходит дорогу, то для каждого пикселя необходимо вывести, является ли этот пиксель частью человеческого тела, профиля дороги, знака дорожного движения, неба, или какого-то другого типа. Существенный недостаток применения одной лишь семантической сегментации относительно задач, связанных с распознаванием объектов — маркировка пикселей по принадлежности только к типу объекта, что не создаёт различия между объектами как таковыми. Например, если назвать «объектом» связную область пикселей, характеризующих одинаковый тип, то два объекта, перегораживающих друг друга на исходном изображении, будут определены как один объект, что в корне неверно. Задача семантической сегментации изображения с дифференцированием объектов называется задачей сегментации экземпляров (англ. instance segmentation). Модели, решающие задачу сегментации экземпляров, применяются, в том числе, для подсчёта людей в массовых скоплениях, для автомобилей с автоматическим управлением.
Задача классификации с локализацией (англ. classification and localization) — задача, в которой в дополнение к предсказанию метки категории класса определяется рамка, ограничивающая местоположение экземпляра одиночного объекта на картинке. Как правило, рамка имеет прямоугольную форму, её стороны ориентированы параллельно осям исходного изображения, а площадь является минимальной при условии полного нахождения экземпляра объекта внутри этой рамки. Такую прямоугольную рамку называют термином «ограничивающая рамка» (англ. bounding box). Ограничивающую рамку можно задать как при помощи центра, ширины и высоты, так и при помощи четырёх сторон. Модель в данном случается одновременно обучается как верной классификации, так и максимально точному определению границ рамки.
Задача детекции объектов (англ. object detection) — задача, в рамках которой необходимо выделить несколько объектов на изображении посредством нахождения координат их ограничивающих рамок и классификации этих ограничивающих рамок из множества заранее известных классов. В отличие от классификации с локализацией, число объектов, которые находятся на изображении, заведомо неизвестно.
Метрики
В задачах классификации с локализацией и детекции объектов для определения достоверности местоположения ограничивающей рамки в качестве метрики чаще всего используется отношение площадей ограничивающих рамок (англ. Intersection over Union):
$IoU = \frac{S(A \cap B)}{S(A \cup B)}$,
где $A$ и $B$ — предсказанная ограничивающая рамка и настоящиая ограничивающая рамка соответственно. $IoU$ равно нулю в случае непересекающихся ограничивающих рамок и равно единице в случае идеального наложения.
|
В задачах детекции объектов в качестве метрики зачастую используется $mAP$ (англ. mean average precision) — усреднённая по всем категориям величина средней точности (англ. average precision, AP)
$AP = \int_{0}^{1} p(r) dr$,
где $p$ — точность, $r$ — полнота из предположения, что ограничивающая рамка определена верно, если $IoU \geq 0.5$. Поскольку точность и полнота находятся в промежутке от $0$ до $1$, то $AP$, а следовательно, и $mAP$ также находится в пределах от $0$ до $1$. На практике, $AP$ часто считают по точкам, значения полноты которых равномерно распределены в промежутке $$:
$AP_c = \frac{1}{11} \cdot (AP_c(0) + AP_c(0.1) + \ldots + AP_c(1))$
$mAP = \overline{AP_c}$
|
Что такое DDC/CI в настройках монитора: как использовать функцию?
Большинство мониторов поддерживают функцию DDC/CI, но мало кто слышал о ней, не говоря уже о том, для чего предназначена и как ее использовать.
Отчасти это объясняется тем, что большинство производителей не намерены разрабатывать для них собственные программы.
Что такое DDC/CI?
Display Data Channel (DDC) / Command Interface (CI) — это тип связи между компьютером и монитором. Он содержит набор протоколов, используемых для передачи информации о модели дисплея и поддерживаемых видеорежимах.
DDC по существу разрешает монитору уведомлять компьютер о поддерживаемых видеорежимах
Но что более важно, канал обмена данными позволяет пользователю контролировать и изменять параметры дисплея, такие как яркость, контрастность, цветовую гамму непосредственно с компьютера
На базовом уровне этот стандарт предоставляет функционал «Plug and Play». Многие модели имеют менее интуитивный интерфейс, поэтому понятно, почему некоторые пользователи ищут способы избежать использования «неуклюжих» кнопок, которые есть у многих дисплеев.
Командный интерфейс (CI) — это канал, используемый двумя участвующими сторонами (компьютером и монитором) для отправки и получения команд в одну и другую сторону. Некоторые мониторы могут даже поддерживать технологию auto-pivot – датчик вращения. Эта технология, удерживает экран горизонтально, при наклоне монитора в разные стороны.
Как пользоваться DDC/CI
Для использования DDC/CI сначала проверьте, что монитор поддерживает этот стандарт. Обычно эта функция есть в моделях не старше 3-4 лет.
Некоторые производители разрабатывают собственное программное обеспечение, которое работает в этом стандарте, например Samsung MagicTune. Но, очевидно, что ПО Samsung не будет работать с моделями другой марки.
Если ищите универсальную программу, которая позволяет использовать DDC/CI независимо от производителя, то лучшей считается ClickMonitorDDC. Она подходит для случаев, когда используются несколько мониторов (разных марок) и позволит получить управление над всеми активными дисплеями.
Краткая инструкция по включению, установке и настройке DDC/CI с помощью ClickMonitorDDC:
Нажмите кнопку Настройки на мониторе, проверьте включен ли DDC/CI.
В большинстве моделей DDC/CI включен по умолчанию, но перед переходом к следующим шагам убедитесь, что этот параметр включен.
Скачайте последнюю версию ClickMonitorDDC.
Примечание: Можно скачать портативную версию, но тестирование показало, что установка стандартной под Windows работает более стабильно.
После завершения загрузки дважды кликните файл установки ClickMonitorDDC, нажмите кнопку «Yes» в приглашении UAC (Контроль учетных записей пользователей), чтобы предоставить приложению права администратора.
Примечание: Поскольку установщик не подписан цифровым сертификатом, может потребоваться нажать «Show more details» и кнопку «Yes» в приглашении UAC.
Следуйте инструкциям на экране до завершения установки. Ничего не меняйте, оставьте настройки по умолчанию, нажмите кнопку «Install» для установки приложения.
Использование ClickMonitorDDC для управления двумя дисплеями
При первом запуске приложение автоматически обнаружит все мониторы, подключенные к компьютеру. При тестировании двух моделей Asus и Acer, функция работает безупречно. Все подключенные мониторы отображаются в верхней части, ними можно управлять по отдельности.
Помимо регулировки яркости, контрастности и громкости встроенных динамиков, можно переключать источники входного сигнала или выключать дисплей без физического нажатия кнопки питания.
В настройках ClickMonitorDDC можно присвоить имена мониторам, чтобы легче было ими управлять.
Примечание: Нужно учитывать, что не все мониторы позволяют изменять контрастность.
Если не подходит интерфейс ClickMonitorDDC, есть несколько других бесплатных альтернатив:
- Display Tuner (32 битная версия);
- softMCCS;
- MagicTune (только для Samsung).
Но имейте в виду, эти программы либо подходят для конкретного производителя, либо требуют навыки для первоначальной настройки. Поэтому, если ищете простую программу, которую можно настроить за несколько минут, то лучше использовать ClickMonitorDDC.
Начало без проблем ↑
Прежде чем мы погрузимся в код, давайте установим необходимые библиотеки для наших упражнений (если вы хотите использовать код PyTorch, ознакомьтесь с ):
pip3 install opencv-python numpy matplotlib
Довольно сложно строить всю систему YOLO v3 (модель и используемые методы) с нуля. Библиотеки с открытым исходным кодом, такие как Darknet или OpenCV значительно упрощают этот процесс и уже многое сделали для вас. Так, что даже некоторые простые человеки уже реализовали свои проекты для YOLO v3 (посмотрите, как сделано для TensorFlow. 2 реализация)
Импорт необходимых модулей:
import cv2 import numpy as np import time import sys import os
Давайте определим некоторые переменные и параметры, которые нам понадобятся:
CONFIDENCE = 0.5 SCORE_THRESHOLD = 0.5 IOU_THRESHOLD = 0.5 # конфигурация нейронной сети config_path = "cfg/yolov3.cfg" # файл весов сети YOLO weights_path = "weights/yolov3.weights" # weights_path = "weights/yolov3-tiny.weights" # загрузка всех меток классов (объектов) labels = open("data/coco.names").read().strip().split("\n") # генерируем цвета для каждого объекта и последующего построения colors = np.random.randint(0, 255, size=(len(LABELS), 3), dtype="uint8")
Мы инициализировали наши параметры, но поговорим о них позже. и представляют собой соответственно конфигурацию модели (это YOLO v3) и соответствующие предварительно обученные веса модели. — это список всех меток классов для различных объектов. Каждый класс объекта при обнаружении нарисуем уникальным цветом, для чего генерируем случайные цвета.
За необходимыми файлами, пожалуйста, обратитесь к этому , а поскольку файл весов очень большой (около 240 МБ) и в репозитории его нет, загрузите его .
Приведенный ниже код загружает модель:
# загружаем сеть YOLO net = cv2.dnn.readNetFromDarknet(config_path, weights_path)
Страница 9
Внимание! Текст в этом документе был распознан автоматически. Для просмотра оригинальной страницы Вы можете воспользоваться режимом «Оригинал»
Настройки DDC/CI Вкл/Выкл
протокол связи при взаимодействии компьютера и монитора.
функции на компьютере, а не в экранном меню монитора.
связь между компьютером и монитором разорвана и
монитор нельзя отрегулировать с компьютера.
В частности, программа Forte Manager должна работать, когда
функция DDC/CI включена, иначе она работает некорректно.
Настройки 00С/С1 Вкл/Выкл
Дисплей включается при нажатии кнопки
питания, а функция DDC/CI
включается/выключается, когда кнопка
питания нажата в течение нескольких
* Исходная установка — 00С/С1 ВКЛ.
■ Однако функция DDC/CI включается только при работающем дисплее и
не работает, когда дисплей отключен кнопкой питания.
Существуют несколько основных разновидностей: DDC 1, DDC 2B и DDC2A/B.
Линейная фильтрация изображений
Важный класс преобразования изображений — это линейные фильтры. С их помощью решаются задачи поиска границ, уголков, удаления шумов.
Скользящее среднее — свертка
Проще всего объяснить, что такое линейная фильтрация, на примере. Пусть требуется подсчитать среднее в окне 3 × 3 для каждого пикселя. Вычисление среднего можно записать так:
Переписав формулу в следующем виде, можно получить выражение для свертки:
где f — это изображение (двухмерная функция, характеризующая картинку), k, l — координаты пикселя, f — яркость пикселя, h — ядро свертки (матрица 3 × 3, состоящая из единиц).
Если ядро свертки — матрица, то свертка — это скользящее среднее. В OpenCV произвести такую свертку можно следующим образом:
Картинка при этом становится более размытой. Также размытие изображения можно получать при помощи свертки с гауссовской функцией.
Фото до применения скользящего среднего, после и после применения гауссовского размытия
Детекция границ
Свертки также можно применять для детекции границ. С помощью сверток, как на картинке ниже, можно получить вертикальные и горизонтальные границы изображения. Если объединить результаты этих двух сверток, можно получить все границы.
Свертки для получения границ: слева — горизонтальных, справа — вертикальныхГраницы изображения, полученные с помощью применения свертки. Слева — горизонтальные, в середине — вертикальные, справа — все границы, полученные объединением результатов двух сверток
Такие ядра являются частью преобразования Превитта, их использование — это самый простой способ найти границы изображения.
На самом деле существует много способов определения границ. Каждый из них применяется в разных условиях, и, в зависимости от задачи, необходимо использовать тот или иной способ.
Корреляция
Другой пример линейного преобразования — это корреляция. Она очень похожа на свертку, но записывается немного в другом виде:
В отличие от свертки корреляция используется, чтобы показать меру похожести двух изображений. Это может быть использовано для поиска объектов. Например, требуется найти лицо футболиста.
На рисунке слева показан результат применения корреляции для поиска лица. Белое пятно — это место, где оно найдено. Корреляцию можно использовать с различными параметрами: нормировать, применять ее различные вариации.
Получается, что корреляция — это очень простой способ поиска объектов на изображении, если имеется их точные копии.