Типы данных OpenCV

depth Pixel depth in bits. The supported depths are:

IPL_DEPTH_8U Unsigned 8-bit integer
IPL_DEPTH_8S Signed 8-bit integer
IPL_DEPTH_16U Unsigned 16-bit integer
IPL_DEPTH_16S Signed 16-bit integer
IPL_DEPTH_32S Signed 32-bit integer
IPL_DEPTH_32F Single-precision floating point
IPL_DEPTH_64F Double-precision floating point
  1. Что на самом деле означают эти значения?

  2. Сколько бит представляет каждый из них?

  3. В чем разница между:

    8-битное целое число без знака и 8-битное целое число со знаком?

    16-битное целое число без знака и 16-битное целое число со знаком?

    Если они требуют 8 и 16 бит соответственно?

  4. Какой смысл использовать типы данных с плавающей запятой?


person user230752    schedule 13.12.2009    source источник


Ответы (1)


8 бит без знака имеют значения от 0 до 255, а 8 бит со знаком имеют значения от -127 до 127. Большинство цифровых камер используют данные без знака. Подписанные данные в основном являются результатом операции с изображением, такой как обнаружение границ Канни.

Причина изображений с более высокой битовой глубиной, таких как 16 бит, заключается в большей детализации изображения. Это позволяет выполнять больше операций, таких как балансировка белого или повышение яркости изображения, без создания артефактов на изображении. Например, темное изображение, которое было сильно освещено, имеет отчетливые полосы на изображении. 16-битное изображение позволит сделать изображение более ярким, чем 8-битное, потому что для начала имеется больше информации.

Некоторые операции лучше работают с данными с плавающей запятой. Например, БПФ (быстрое преобразование Фурье). Если над изображением выполняется слишком много операций, то ошибка от округления значений пикселей до целого числа каждый раз начинает накапливаться. Использование числа с плавающей запятой смягчает это, но не устраняет.

person Ed_S    schedule 14.12.2009
comment
Я написал код, который должен загружать изображение в Emgu.CV.UI.ImageBox. Но какую бы глубину изображения я ни использовал (Byte или Int32), отображаемое изображение остается прежним. Насколько я знаю, с 8bit должно быть 256 цветов и 16 миллионов с Int32. И все же эти картины точно похожи друг на друга. - person user230752; 15.12.2009