Содержание:
-
Плохо понимаете, как решать задания на кодирование графической информации?
-
Условие задачи
-
Решение задачи
-
Выводы
-
Примеры условий реальных задач, встречающихся на ЕГЭ по информатике
-
Хотите разбираться в задачах графического содержания? Тогда жду вас на уроке
Плохо понимаете, как решать задания на кодирование графической информации?
Всем привет! Меня зовут Александр и я профессиональный репетитор по информатике, программированию, математике и базам данных.
Скоро экзамен ЕГЭ по информатике и ИКТ, а у вас не получается правильно решать задания, ориентированные на кодирование графической информации? Не понимаете, как найти максимальное количество цветов в палитре? Если, да, то записывайтесь ко мне на частные занятия, ну, или внимательно читайте данный материал.
Мои индивидуальные занятия проходят в различных территориальных форматах, а именно:
Настоятельно рекомендую остановить свой выбор на дистанционной форме обучения. Это удобно, недорого и крайне эффективно.
Условие задачи
Автоматическая камера производит растровые изображения размером $200 × 256$ пикселей. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Объём файла с изображением не может превышать $65$ Кбайт без учёта размера заголовка файла.
Какое максимальное количество цветов можно использовать в палитре?
Решение задачи
В первую очередь нужно выяснить, о каком типе графики идет речь! Напомню, что школьная программа подготовки к ЕГЭ по информатике предполагает знакомство учащихся с $3$-мя видами компьютерной графики:
В условии прямо говорится о растровой графике: «производит растровые изображения«. И это замечательно! Потому что этот вид компьютерной графики самый простой в анализе и расчетах.
Напомню, чем больше количество бит отводится на кодирование $1$-го пиксела, то есть, чем больше глубина цвета, тем большим количеством различных цветов этот пиксель можно раскрасить.
Значит, наша первостепенная задача — определить глубину цвета данного растрового изображения, а затем воспользоваться формулой Хартли для получения окончательного ответа.
Из постановки задачи нам известны:
-
габариты растрового изображения, выраженные в пикселях ($200 • 256$);
-
общий информационный вес изображения, выраженный в Кбайт ($65$ Кбайт).
Внимательный читатель обратит внимание на следующий фрагмент текста: «не может превышать $65$ Кбайт«. Т е в условии не говорится о том, что размер файла строго равен $65$ Кбайт, а лишь о том, что он не превышает этой величины.
Но, как было замечено ранее, нужно стремиться к тому, чтобы каждый пиксель кодировался как можно большим целым числом бит, следовательно, размер исходного графического файла в последующих расчетах будем принимать наибольшим, т е равным $65$ Кбайт.
$<Память на $1$ пиксель> = frac{<Общий размер памяти>}{<Общее количество пикселей>}$, [бит]
Для упрощения последующих математических выкладок сделаем следующее:
-
Разложим все заданные натуральные числа на простые множители (факторизация числа).
-
Переведем единицы измерения информации из [Кбайт] в [бит].
$200 = 2 · 2 · 2 · 5 · 5 = 2^3 · 5^2$
$256 = 2 · 2 · 2 · 2 · 2 · 2 · 2 · 2 = 2^8$
$65 [Кбайт] = 5 · 13 [Кбайт] = 5 * 13 * 2^{13} [бит]$
Не забывайте, что в $1$-ом Кбайте $8 192$ или $2^{13}$ бит. Подставляем разложенные величины в формулу:
$I = frac{5 · 13 · 2^{13} [бит]}{2^3 · 5^2 · 2^8} = frac{5 · 13 · 2^{13} [бит]}{2^{11} · 5^2} = frac{4 · 13}{5} = frac{52}{5} = 10.4$, [бит]
Но, глубина цвета должна выражаться целым числом бит, поэтому округляем «вниз» до ближайшего целого: $10.4 approx 10$ [бит].
Вывод: на кодирование каждого пикселя заданного растрового изображения отводится ровно $10$ бит информации.
Двигаемся дальше! В условии задачи нам сообщили, что «Для кодирования цвета каждого пикселя используется одинаковое количество бит«, т е в данном случае для кодирования графической информации применяют равномерный код.
А сейчас пришла пора обратиться к формуле Хартли, т к именно благодаря ей мы сможешь получить различное количество цветов.
В общем виде эта формула имеет вид: $I = K · log_2 N$, где:
$N$ — мощность алфавита | $K$ — длина сообщения | $I$ — количество информации в сообщении в битах |
Сразу обратимся к вопросу в постановке задачи: «Какое максимальное количество цветов можно использовать в палитре?». Этот вопрос можно переформулировать так: «Какое максимальное количество цветов можно использовать в изображении?«..
А лучше переформулируем еще точнее и понятнее: «Какое максимальное количество цветов может принимать каждый пиксель заданного изображения?«. Т к все пиксели растровой картинки структурно идентичны друг другу, т е имеют одинаковую глубину цвета, то нам достаточно разобрать $1$ конкретный пиксель.
Поэтому в формуле Хартли величина $K$ будет равна $1$ и формула примет сокращенную форму: $I = log_2 N$.
$I$ — глубина цвета, и мы уже ее посчитали ранее: $I$ = 10 [бит].
$N$ — мощность алфавита, но при кодировании графической информации мощностью выступает именно все разнообразие цветов, в которые можно закрасить пиксель, т е по факту, $N$ — та величина, которую нам нужно отыскать.
Выражаем из сокращенной формулы Хартли величину $N$, используя свойства логарифма: $N = 2^I = 2^{10} = 1 024$, различных цвета.
Именно это значение нам следует выписать в бланк ответов официального экзамена ЕГЭ по информатике. Выписывается только число без указаний каких-либо единиц измерения информации.
Ответ: $1 024$.
Выводы
Во-первых, внимательно несколько раз прочитайте условие задачи. Во-вторых, определите вид компьютерной графики, т е кодирования какого типа изображения происходит. В $99.99%$ случаев речь идет о растровых картинках.
В-третьих, в обязательном порядке научитесь пользоваться формулой Хартли. Да, эта формула достаточно скользкая и с $1$-го раза мало, кто понимает, о чем она в принципе. Для этого придется вникать в тему «Измерение количества информации«.
В-четвертых, знайте наизусть большинство степеней двоек. Желательно на интервале от $2^0$ до $2^{20}$. В-пятых, умейте варьировать единицы измерения информации, т е заменять [Кбайты] на [байты] или [Мбайты], а [байты] переводить в [биты] и т.п.
Примеры условий реальных задач, встречающихся на ЕГЭ по информатике
чуть позже!
Хотите разбираться в задачах графического содержания? Тогда жду вас на уроке
Если после прочтения данного материала у вас остались какие-либо вопросы, недопонимание, то смело задавайте их в комментариях или пишите мне на электронный адрес.
Также можете кидать условия задач графической тематики в мою группу в вк. Обязательно я их рассмотрю, напишу соответствующее решение, а также отсниму видео на свой Youtube-канал. Кстати, можете подписаться на мой канал прямо сейчас!
Ну, и напоследок, познакомьтесь с отзывами клиентов, прошедших подготовку под моим началом. Все они добились поставленных целей и значительно окрепли в информационных технологиях.
На мой экспертный взгляд, задание из ЕГЭ по информатике, ориентированное на кодирование графической информации в общем и на нахождение максимального количества цветов в частности, является проходным. Оценивается оно всего в $1$ первичный балл, и этот балл вы должны в обязательном порядке получить!
Для описания цветовых оттенков, которые могут быть воспроизведены на экране компьютера и на принтере, разработаны специальные средства — цветовые модели (системы цветов).
Цветовые модели — это способ описания цвета с помощью количественных характеристик.
Цвет может получиться в процессе излучения и в процессе отражения. Поэтому цветовые модели можно классифицировать по их целевой направленности:
- Аддитивные модели (RGB). Служат для получения цвета на мониторе.
- Полиграфические модели (CMYK). Служат для получения цвета при использовании разных систем красок и полиграфического оборудования.
- Математические модели, полезные для каких-либо способов цветокоррекции, но не связанные с оборудованием, например HSВ.
Цветовая модель RGB
С экрана монитора человек воспринимает цвет как сумму излучения трёх базовых цветов: красного (Red), зелёного (Green), синего (Blue).
Такая цветовая модель называется RGB (по первым буквам).
Она служит основой при создании и обработке компьютерной графики, предназначенной для электронного воспроизведения (на мониторе, телевизоре).
Цвет на экране получается при суммировании лучей трёх основных цветов — красного, зелёного и синего. Если интенсивность каждого из них достигает (100), то получается белый цвет. Минимальная интенсивность трёх базовых цветов даёт чёрный цвет.
Для описания каждого составляющего цвета требуется (1) байт ((8) бит) памяти, а чтобы описать один цвет, требуется (3) байта, т.е. (24) бита, памяти.
Для кодирования одного цвета пикселя определяется длина двоичного кода, которая называется глубиной цвета.
Рассчитать глубину цвета можно по формуле:
N=2i
, где N —количество цветов в палитре, i — глубина цвета.
Интенсивность каждого из трёх цветов — это один байт (т.е. число в диапазоне от (0) до (255)), т.е. каждая составляющая может принимать (256) значений.
Таким образом, с использованием трёх составляющих можно описать (256⋅256⋅256 = 16777216) различных цветовых оттенков, а, значит, модель RGB имеет приблизительно (16,7) миллионов различных цветов.
Таким количеством цветов определяется, в основном, палитра современного монитора.
При печати изображений на принтерах используется цветовая модель, основными красками в которой являются голубая (Cyan), пурпурная (Magenta) и жёлтая (Yellow).
Чтобы получить чёрный цвет, в цветовую модель был включен компонент чистого чёрного цвета (BlacK). Так получается четырёхцветная модель, называемая CMYK.
Область применения цветовой модели CMYK — полноцветная печать. Именно с этой моделью работает большинство устройств печати.
Из-за несоответствия цветовых моделей часто возникает ситуация, когда цвет, который нужно напечатать, не может быть воспроизведен с помощью модели CMYK (например, золотой или серебряный). В этом случае применяются краски Pantone.
Все файлы, предназначенные для вывода в типографии, должны быть конвертированы в CMYK. Этот процесс называется цветоделением.
При просмотре CMYK-изображения на экране монитора одни и те же цвета могут восприниматься немного иначе, чем при просмотре RGB-изображения.
В модели CMYK невозможно отобразить очень яркие цвета модели RGB, модель RGB, в свою очередь, не способна передать тёмные густые оттенки модели CMYK, поскольку природа цвета разная.
Отображение цвета на экране монитора часто меняется и зависит от особенностей освещения, температуры монитора и цвета окружающих предметов. Кроме того, многие цвета, видимые в реальной жизни, не могут быть выведены при печати, не все цвета, отображаемые на экране, могут быть напечатаны, а некоторые цвета печати не видны на экране монитора.
Модель HSB
HSB — это цветовая трёхканальная модель, которая характеризует параметры цвета. Цветовой тон (Hue), насыщенность (Saturation), яркость (Brightness).
Содержание
- — Как найти максимально возможное количество цветов в палитре изображения?
- — Как найти количество цветов в палитре информатика?
- — Какое количество цветов в палитре при глубине 3 бита?
- — Чему равно количество цветов в палитре при глубине цвета равной 4 бита?
- — Сколько цветов используется для создания изображения Если один пиксель изображения в памяти компьютера занимает 4 бита?
- — Как найти объем изображения?
- — Какое количество цветов в палитре если глубина кодирования 8 бит?
- — Как узнать размер палитры?
- — Какое количество цветов в палитре если глубина цвета 1?
- — Какое количество цветов должно быть в букете?
- — В чем измеряется глубина цвета?
- — Сколько в палитре цветов Если глубина цвета равна 16 бит?
- — Сколько цветов n n насчитывается в палитре если глубина цвета i i равна 3 3?
Как найти максимально возможное количество цветов в палитре изображения?
Максимальное количество цветов в палитре графического изображения (N) зависит от глубины цвета, (количества бит, отведенных на кодирование цветовых характеристик каждой точки) и определяется по формуле Хартли N=2 i Информационный объем изображения (Q), состоящего из k точек, определяется по формуле Q=k*i.
Как найти количество цветов в палитре информатика?
- Количество цвета N=2^i, где i — глубина цвета N=2^4 N=16. …
- Объем видеопамяти 1 страницы = количество пикселей*глубину цвета …
- Информационный объем изображения = количество пикселей*глубину цвета …
- Информационный объем изображения = количество пикселей*глубину цвета
Какое количество цветов в палитре при глубине 3 бита?
Задание 133.
Глубина цвета (i) | Количество цветов в палитре (N) |
---|---|
3 | 8 |
4 | 16 |
8 | 256 |
16 | 65536 |
Чему равно количество цветов в палитре при глубине цвета равной 4 бита?
Ответы. 16, 256, 65536, 16777216, 4294967296 цветов.
Сколько цветов используется для создания изображения Если один пиксель изображения в памяти компьютера занимает 4 бита?
256 *1024*8 бит = X*Y*4 бит, (так как используется 16 цветов, то глубина цвета равна 4 бит.)
Как найти объем изображения?
Итак, для расчёта информационного объёма растрового графического изображения используется формула V=K*i, где V – это информационный объём растрового графического изображения, измеряющийся в байтах, килобайтах, мегабайтах; K – количество пикселей (точек) в изображении, определяющееся разрешающей способностью носителя …
Какое количество цветов в палитре если глубина кодирования 8 бит?
8-би́тный цвет в компьютерной графике — это метод хранения информации изображения в памяти компьютера либо в файле изображения, при этом каждый пиксель кодируется одним 8-битным байтом (октетом). Соответственно максимальное количество цветов, которые могут быть отображены одновременно,— 256 (28).
Как узнать размер палитры?
Для того, чтобы узнать размер изображения, надо открыть палитру информации, делать это можно, нажав клавишу F8, затем клик по иконке слоя при зажатой клавише Ctrl, всё изображение на слое выделится, а палитра инфо покажет размер выделения.
Какое количество цветов в палитре если глубина цвета 1?
Например, если цветовая глубина равна 1 бит, то пиксел может представлять только один из двух возможных цветов – белый или черный.
Какое количество цветов должно быть в букете?
3–5 цветов — оптимальное количество для букета артисту. Более шикарные букеты символизируют любовь, высшую точку обожания. Это 7–9 цветков. Или большой букет 25 или 29 цветов — символ вечной любви до гроба.
В чем измеряется глубина цвета?
Глубина́ цве́та (ка́чество цветопереда́чи, би́тность изображе́ния, цветовое разреше́ние) — термин компьютерной графики, означающий количество бит (объём памяти), используемое для хранения и представления цвета при кодировании, либо одного пикселя растровой графики или видеоизображения (выражается единицей бит на пиксел …
Сколько в палитре цветов Если глубина цвета равна 16 бит?
В 8-битном цвете один пиксель может иметь любой из 256 возможных цветов (28), в то время как один пиксель в 16-битном цвете может быть любой из 65 536 возможных комбинаций цветов (216).
Сколько цветов n n насчитывается в палитре если глубина цвета i i равна 3 3?
№1. Сколько цветов(N) насчитывается в палитре, если глубина цвета(i) равна 3? Выделите цветом правильный ответ. Ответ: в палитре 8 цветов, вариант ответа 3.
Интересные материалы:
Как хранить капусту в пакетах?
Как хранить Кейл?
Как хранить лисички в холодильнике?
Как хранить лук севок до посадки?
Как хранить луковицы тюльпанов до осени?
Как хранить морковь в холодильнике на зиму?
Как хранить морковь в пакетах в погребе?
Как хранить морковку в подвале?
Как хранить очищенную морковь?
Как хранить пекинскую капусту в домашних?
Определить количество цветов в палитре
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Найти максимально количество цветов в палитре
Рисунок размером 736 на 128 пикселей, занимает в памяти 69 Кбайт. Найти максимально возможное.
Графическое изображение содержит в своей палитре 1024 цветов
Помогите пожалуйста Графическое изображение содержит в своей палитре 1024 цветов, при этом его.
Вывести количество цветов в палитре в графическом режиме
Доброе время суток, мне нужно по заданию вывести количество цветов в палитре в графическом режиме.
Сколько цветов в палитре?
Хочу узнать ответ на такой вопрос: в Паскале используется только 16 цветов или есть ище какие-то.
Изменить цвет символов на следующий в палитре цветов при нажатии левой кнопки мыши
Всем привет! Задание: Изменить цвет символов на следующий в палитре цветов при нажатии левой.
Есть н цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов. Количество цветов и их названия вводит пользователь
Есть n цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов.
Как определить количество цветов в изображении?
Нужно определить количество цветов в изображении. Как это можно сделать с помощью фотошопа или.
Определить количество кубиков каждого из цветов и их суммарный объем
В файле записаны сведения о кубиках: 1)размер кубика(длина ребра в см).
Источник
Решение задач на кодирование графической информации. (10 класс)
Решение задач на кодирование графической информации.
Данное электронное пособие содержит группу задач по теме «Кодирование графической информации». Сборник задач разбит на типы задач исходя из указанной темы. Каждый тип задач рассматривается с учетом дифференцированного подхода, т. е. рассматриваются задачи минимального уровня (оценка «3»), общего уровня (оценка «4»), продвинутого уровня (оценка «5»). Приведенные задачи взяты из различных учебников (список прилагается). Подробно рассмотрены решения всех задач, даны методические рекомендации для каждого типа задач, приведен краткий теоретический материал. Для удобства пользования пособие содержит ссылки на закладки.
Нахождение объема видеопамяти
В задачах такого типа используются понятия:
разрешающая способность экрана,
Во всех подобных задачах требуется найти ту или иную величину.
Объем видеопамяти рассчитывается по формуле: V = I * X * Y , где I – глубина цвета отдельной точки, X , Y –размеры экрана по горизонтали и по вертикали (произведение х на у – разрешающая способность экрана).
Экран дисплея может работать в двух основных режимах: текстовом и графическом.
В графическом режиме экран разделяется на отдельные светящиеся точки, количество которых зависит от типа дисплея, например 640 по горизонтали и 480 по вертикали. Светящиеся точки на экране обычно называют пикселями, их цвет и яркость может меняться. Именно в графическом режиме появляются на экране компьютера все сложные графические изображения, создаваемыми специальными программами, которые управляют параметрами каждого пикселя экрана. Графические режимы характеризуются такими показателями как:
Кроме перечисленных выше знаний учащийся должен иметь представление о палитре:
1. Определить требуемый объем видеопамяти для различных графических режимов экрана монитора, если известна глубина цвета на одну точку.(2.76 [3])
Глубина цвета (бит на точку)
Глубина цвета (бит на точку)
2. Черно-белое (без градаций серого) растровое графическое изображение имеет размер 10 ´ 10 точек. Какой объем памяти займет это изображение?( 2.6 8 [3])
Так как всего 2 цвета черный и белый. то глубина цвета равна 1 ( 2 1 =2)
Объем видеопамяти равен 100*1=100 бит
Аналогично решается задаа 2.69[3]
3. Для хранения растрового изображения размером 128 x 128 пикселей отвели 4 КБ памяти. Каково максимально возможное число цветов в палитре изображения. (ЕГЭ_2005, демо, уровень А). (См. также задачу 2.73 [ 3 ])
Определим количество точек изображения. 128*128=16384 точек или пикселей.
Объем памяти на изображение 4 Кб выразим в битах, так как V = I * X * Y вычисляется в битах. 4 Кб=4*1024=4 096 байт = 4096*8 бит =32768 бит
Найдем глубину цвета I = V /( X * Y )=32768:16384=2
4. Сколько бит видеопамяти занимает информация об одном пикселе на ч/б экране (без полутонов)?([6], C . 143, пример 1)
Если изображение Ч/Б без полутонов, то используется всего два цвета –черный и белый, т.е. К=2, 2 i =2, I = 1 бит на пиксель.
5. Какой объем видеопамяти необходим для хранения четырех страниц изображения, если битовая глубина равна 24, а разрешающая способность дисплея- 800 х 600 пикселей? ([6], №63)
Найдем объем видеопамяти для одной страницы: 800*600*24=11520000 бит =1440000 байт =1406,25 Кб ≈1, 37 Мб
1,37*4 =5,48 Мб ≈5.5 Мб для хранения 4 страниц.
6.Определить объем видеопамяти компьютера, который необходим для реализации графического режима монитора High Color с разрешающей способностью 1024 х 768 точек и палитрой цветов из 65536 цветов. (2.48 [3])
Если ученик помнит, что режим High Color – это 16 бит на точку, то объем памяти можно найти, определив число точек на экране и умножив на глубину цвета, т.е. 16. Иначе ученик может рассуждать так:
Глубина цвета составляет: I = log 265 536 = 16 бит (вычисляем с помощью программы Wise Calculator )
2.. Количество точек изображения равно: 1024 ´ 768 = 786 432
3. Требуемый объем видеопамяти равен: 16 бит ´ 786 432 = 12 582 912 бит = 1572864 байт = 1536 Кб =1,5 Мб ( » 1,2 Мбайта. Ответ дан в практикуме Угринович). Приучаем учеников, переводя в другие единицы, делить на 1024, а не на 1000.
7. В процессе преобразования растрового графического изображения количество цветов уменьшилось с 65536 до 16. Во сколько раз уменьшится объем занимаемой им памяти? (2.70, [3])
Чтобы закодировать 65536 различных цветов для каждой точки, необходимо 16 бит. Чтобы закодировать 16 цветов, необходимо всего 4 бита. Следовательно, объем занимаемой памяти уменьшился в 16:4=4 раза.
8. Достаточно ли видеопамяти объемом 256 Кбайт для работы монитора в режиме 640 ´ 480 и палитрой из 16 цветов? (2.77 [3])
Узнаем объем видеопамяти, которая потребуется для работы монитора в режиме 640х480 и палитрой в 16 цветов. V = I*X*Y =640*480*4 (2 4 =16, глубина цвета равна 4),
V = 1228800 бит = 153600 байт =150 Кб.
9. Укажите минимальный объем памяти (в килобайтах), достаточный для хранения любого растрового изображения размером 256 х 256 пикселей, если известно, что в изображении используется палитра из 2 16 цветов. Саму палитру хранить не нужно.
Найдем минимальный объем памяти, необходимый для хранения одного пикселя. В изображении используется палитра из 2 16 цветов, следовательно, одному пикселю может быть сопоставлен любой из 2 16 возможных номеров цвета в палитре. Поэтому, минимальный объем памяти, для одного пикселя будет равен log 2 2 16 =16 битам. Минимальный объем памяти, достаточный для хранения всего изображения будет равен 16*256*256 =2 4 * 2 8 * 2 8 =2 20 бит=2 20 : 2 3 =2 17 байт = 2 17 : 2 10 =2 7 Кбайт =128 Кбайт, что соответствует пункту под номером 1.
10. Используются графические режимы с глубинами цвета 8, 16. 24, 32 бита. Вычислить объем видеопамяти, необходимые для реализации данных глубин цвета при различных разрешающих способностях экрана.
Примечание: задача сводится в конечном итоге к решению задачи №1 (уровень «3», но ученику самому необходимо вспомнить стандартные режимы экрана.
11. Сколько секунд потребуется модему, передающему сообщения со скоростью 28800 бит/с, чтобы передать цветное растровое изображение размером 640 х 480 пикселей, при условии, что цвет каждого пикселя кодируется тремя байтами? (ЕГЭ_2005, уровень В)
Определим объем изображения в битах:
3 байт = 3*8 = 24 бит,
V = I * X * Y =640*480*24 бит =7372800 бит
Найдем число секунд на передачу изображения: 7372800 : 28800=256 секунд
12. Сколько секунд потребуется модему, передающему сообщения со скоростью 14400 бит/сек, чтобы передать цветное растровое изображение размером 800 х 600 пикселей, при условии, что в палитре 16 миллионов цветов? ( ЕГЭ_2005, уровень В)
Для кодирования 16 млн. цветов требуется 3 байта или 24 бита (Графический режим True Color ). Общее количество пикселей в изображении 800 х 600 =480000. Так как на 1 пиксель приходится 3 байта, то на 480000 пикселей приходится 480000*3=1 440 000 байт или 11520000 бит. 11520000 : 14400 = 800 секунд.
13. Современный монитор позволяет получать на экране 16777216 различных цветов. Сколько бит памяти занимает 1 пиксель? ([6] , с.143, пример 2)
Один пиксель кодируется комбинацией двух знаков «0» и «1». Надо узнать длину кода пикселя.
2 х =16777216, log 2 16777216 =24 бит
14. Каков минимальный объем памяти ( в байтах), достаточный для хранения черно-белого растрового изображения размером 32 х 32 пикселя, если известно, что в изображении используется не более 16 градаций серого цвета.(ЕГЭ_2005, уровень А)
Глубина цвета равна 4, т.к. 16 градаций цвета используется.
32*32*4=4096 бит памяти для хранения черно-белого изображения
15. Монитор работает с 16 цветной палитрой в режиме 640*400 пикселей. Для кодирования изображения требуется 1250 Кбайт. Сколько страниц видеопамяти оно занимает? (Задание 2,Тест I -6)
1. Т.к. страница –раздел видеопамяти, вмещающий информацию об одном образе экрана одной «картинки» на экране, т.е. в видеопамяти могут размещаться одновременно несколько страниц, то, чтобы узнать число страниц надо поделить объем видеопамяти для всего изображения на объем памяти на 1 страницу. К-число страниц, К= V изобр/ V 1 стр
V изобр =1250 Кб по условию
Для этого вычислим объем видеопамяти для одной страницы изображения с 16 цветовой палитрой и разрешающей способностью 640*400.
V 1 стр = 1024000 бит = 128000 байт =125 Кб
3. К=1250 : 125 =10 страниц
16. Страница видеопамяти составляет 16000 байтов. Дисплей работает в режиме 320*400 пикселей. Сколько цветов в палитре? (Задание 3,Тест I -6)
I = 128000 / (320*400)=1.
2. Определим теперь, сколько цветов в палитре. K =2 I , где K – количество цветов, I – глубина цвета. K =2
17. Сканируется цветное изображение размером 10 ´ 10 см. Разрешающая способность сканера 600 dpi и глубина цвета 32 бита. Какой информационный объем будет иметь полученный графический файл. (2.44, [3] , аналогично решается задача 2.81 [3])
1. Разрешающая способность сканера 600 dpi (dot per inch — точек на дюйм) означает, что на отрезке длиной 1 дюйм сканер способен различить 600 точек. Переведем разрешающую способность сканера из точек на дюйм в точки на сантиметр:
600 dpi : 2,54 » 236 точек/см (1 дюйм = 2.54 см.)
2. Следовательно, размер изображения в точках составит 2360 ´ 2360 точек. (умножили на 10 см.)
3. Общее количество точек изображения равно:
2360 ´ 2360 = 5 569 600
4. Информационный объем файла равен:
32 бит ´ 5569600 = 178 227 200 бит » 21 Мбайт
Если число страниц равно 1, то формулу V = I * X * Y можно выразить как
256 *1024*8 бит = X * Y *4 бит, (так как используется 16 цветов, то глубина цвета равна 4 бит.)
Вариантом разрешающей способности может быть 630 х 830.
2. Если число страниц равно 2, то одна страница объемом 256:2=128 Кбайт, т.е
Решаем систему уравнений:
Х=262144/ Y ; Y 2 =262144*3/4=196608; Y =440, Х=600
Вариантом разрешающей способности может быть 600 х 440.
4. Если число страниц равно 4, то 256:4 =64; 64*1024*2= X * Y ; 131072= X * Y ; решаем систему
X =131072/ Y ; Y 2 =131072*3/4=98304; Y ≈310, X ≈420
три страницы – 420 х 310
19. Часть страниц многотомной энциклопедии является цветными изображениями в шестнадцати цветовой палитре и в формате 320 ´ 640 точек. Страницы, содержащие текст, имеют формат — 32 строки по 64 символа в строке. Сколько страниц книги можно сохранить на жестком магнитном диске объемом 20 Мб, если каждая девятая страница энциклопедии — цветное изображение? (2.89, [3])
Так как палитра 16 цветная, то глубина цвета равна 4 (2 4 =16)
4 ´ 320 ´ 640 = 819200 бит = 102400 байт =100 Кбайт – информации содержит каждая графическая страница.
32 ´ 64 = 2048 символов = 2048 байт = 2 Кбайт – содержит каждая текстовая страница.
Пусть Х — число страниц с графикой, тогда так как каждая 9 страница – графическая, следует, что страниц с текстом в 8 раз больше, т.е. 8Х — число страниц с текстом. Тогда все страницы с графикой будут иметь объем 110Х, а все страницы с текстом – объем 2* 8Х=16Х.
Известно, что диск составляет 20 Мб = 20480 Кб. Составим уравнение:
100Х + 16Х = 20480. Решив уравнение, получим Х ≈ 176, 5. Учитывая, что Х –целое число, берем число 176 –страниц с графикой.
176*8 =1408 страниц с текстом. 1408+176 = 1584 страниц энциклопедии.
Ответ: таким образом, на жестком магнитном диске объемом 20 Мб можно разместить 1584 страницы энциклопедии (176 графических и 1408 текстовых).
Определение разрешающей способности экрана и установка графического режима экрана.
20. Установить графический режим экрана монитора, исходя из объема установленной видеопамяти и параметров монитора. (2.50 [3])
Установка графического режима экрана монитора
На появившейся диалоговой панели Свойства: экран выбрать вкладку Настройка.
С помощью раскрывающегося списка Цветовая палитра выбрать глубину цвета. С помощью ползунка Область экрана выбрать разрешение экрана
21. Определить марку монитора, разрешение экрана, глубину цвета собственного компьютера, объем видеопамяти. (Аналогично, см. задачу 1, а так же используя кнопку Дополнительно, выбрать вкладку Адаптер для определения объема видеопамяти.)
Для решения задач этого уровня учащиеся также должны знать о ещё одной характеристике экрана, такой как Частота обновления экрана. Эта величина обозначает, сколько раз меняется за секунду изображение на экране. Чем чаще меняется изображение, тем меньше заметно мерцание и тем меньше устают глаза. При длительной работе за компьютером рекомендуется обеспечить частоту не менее 85 Гц. Кроме этого учащиеся должны уметь подбирать оптимальную разрешающую способность экрана, определять для конкретного объема видеопамяти оптимальный графический режим.
22. Установить различные графические режимы экрана монитора вашего компьютера:
а) режим с максимально возможной глубиной цвета;
б) режим с максимально возможной разрешающей способностью;
а) Выбрать контекстное меню Рабочего стола, Свойства, (можно вызвать меню и двойным щелчком на панели управления по значку экрана). В появившемся диалоговом окне Свойства: Экран выбрать вкладку Настойка или Параметры. Максимально возможную глубину цвета можно выбрать из списка Цветовая палитра (или Качество цветопередачи), где выбрать пункт Самое высокое 32 бита (True color24, или 32 бита) Эта операция может требовать перезагрузки компьютера.
б) Чтобы установить режим с максимально возможной разрешающей способностью надо на этой же вкладке Свойства:Экран переместить движок на панели Область экрана (Разрешение экрана) слева направо и выбрать например 1280 х 1024. В зависимости от видеокарты при изменении разрешения экрана может потребоваться перезагрузка компьютера. Но чаще всего выдается диалоговое окно, предупреждающее о том, что сейчас произойдет пробное изменение разрешения экрана. Для подтверждения щелкнуть на кнопке Ок.
При попытке изменить разрешение экрана выдается диалоговое окно с запросом о подтверждении изменений. Если не предпринимать никаких действий, то через 15 секунд восстанавливается прежнее разрешение. Это предусмотрено на случай сбоя изображения. Если экран выглядит нормально, следует щелкнуть на кнопке ДА и сохранить новое разрешение.
в) Для установки оптимального графического режима экрана надо исходить из объема видеопамяти, частоты обновления экрана и учитывать здоровье сберегающие факторы.
Для настройки частоты обновления экрана надо всё в той же вкладке Свойства:Экран щелкнуть по вкладке Дополнительно. В диалоговом окне свойств видеоадаптера выбрать вкладку Адаптер. Выбрать в списке Частота обновления и выбрать пункт Оптимальный –максимально возможная частота обновления экрана, доступная при текущем разрешении экрана для данной видеокарты и монитора.
Так чем меньше разрешение экрана, тем больше размеры значков на рабочем столе. Так оптимальным разрешением экрана может быть размеры экрана 800 х 600 точек при глубине цвета 32 бит и частотой обновления 85 Гц.
Так как глубина цвета равна 4 (2 4 =16), то имеем V =4* X * Y
В формуле объема видеопамяти объем выражен в битах, а в условии задачи дан в Кбайтах, поэтому обе части равенства надо представить в байтах:
3. Далее решаем уравнение: 4* X * Y = 125*1024 * 8
4. Наиболее часто в паре разрешающей способности экрана встречается число 640, например 640*200, 640*400, 640*800. Попробуем разделить полученное число на 640
Ответ: Разрешающая способность экрана равна 640*400
24. Какие графические режимы работы монитора может обеспечить видеопамять объемом в 1 МБ? (2.78 [3])
Задача опирается на решение задачи №2.76 [3] (решение см. задачу №1 данного электронного пособия), а затем проводится анализ и делаем вывод. Видеопамять объемом 1 МБ может обеспечить следующие графические режимы:
640 х 480 (при глубине цвета 4, 8, 16, 24 бит)
800 х 600 (при глубине цвета 4, 8, 16 бит)
1024 х 768 (при глубине цвета 4, 8 бит)
1280 х 1024 (при глубине цвета 4 бита)
Ответ: 640 х 480 (4, 8, 16, 24 бит), 800 х 600 (4, 8, 16 бит), 1024 х 768 (4, 8 бит), 1280 х 1024 (4 бита)
25. Определить максимально возможную разрешающую способность экрана для монитора с диагональю 15″ и размером точки экрана 0,28 мм. (2.49 [3])
Решение:
h : L =0,75, тогда h = 0,75L.
По теореме Пифагора имеем:
L 2 + (0,75L) 2 = 38,1 2
1,5625 L 2 = 1451,61
L 2 ≈ 929
L ≈ 30,5 см.
4. Количество точек по ширине экрана равно:
305 мм : 0,28 мм = 1089.
Следовательно, максимально возможным разрешением экрана монитора является 1024х768.
26. Определить соотношение между высотой и шириной экрана монитора для различных графических режимов. Различается ли это соотношение для различных режимов? а)640х480; б)800х600; в)1024х768; а)1152х864; а)1280х1024. Определить максимально возможную разрешающую способность экрана для монитора с диагональю 17″ и размером точки экрана 0,25 мм. (2.74 [3])
1. Определим соотношение между высотой и шириной экрана для перечисленных режимов, они почти не различаются между собой:
2. Выразим размер диагонали в сантиметрах:
2,54 см • 17 = 43,18 см.
3. Определим ширину экрана. Пусть ширина экрана равна L, тогда высота равна 0,75L (для первых четырех случаев) и 0,8L для последнего случая.
По теореме Пифагора имеем:
L 2 + (0,75L) 2 = 43,18 2
1,5625 L 2 = 1864,5124
L 2 ≈ 1193,2879
L ≈ 34,5 см
L 2 + (0,8L) 2 = 43,18 2
1,64 L 2 = 1864,5124
L 2 ≈ 1136,8978
L ≈ 33,7 см.
4. Количество точек по ширине экрана равно:
345 мм : 0,25 мм = 1380
337 мм: 0,25 мм = 1348
Следовательно, максимально возможным разрешением экрана монитора является. 1280х1024
Кодировка цвета и изображения.
Учащиеся пользуются знаниями, полученными ранее Системы счисления, перевод чисел из одной системы в другую.
Используется и теоретический материал темы:
27. Запишите код красного цвета в двоичном, шестнадцатеричном и десятичном представлении. (2.51 [3])
Красный цвет соответствует максимальному значению интенсивности красного цвета и минимальным значениям интенсивностей зеленого и синего базовых цветов , что соответствует следующим данным:
Источник
Определение доминирующих тонов на изображении [v 1.1]
После публикации прошлой статьи, я полностью забил на попытку выполнить алгоритм при помощи HSV или Lab координат. Забил на использовании библиотек цветов и вообще на сам скрипт забил.
Но что-то стало скучно и опять зачесались руки поработать с изображениями и одновременно захотелось исправить уже имеющийся алгоритм.
Скрипт: link
Решение
Больным местом алгоритма было определение похожих тонов. Больным оно являлось из-за не учета яркости похожих цветов. На момент написания я прекрасно представлял проблему, с которой мне бы предстояло столкнуться при определении яркости и я решил не учитывать ее. Это обернулось тем, что черно-белые изображения не обрабатывались. Также довольно насыщенные цветами и контрастные изображения выдавали странные тона, которых как бы и не было на картинке.
Собственно решение оказалось крайне простым, но не без нюанса. Я для начала определил яркость цвета. Это простейшее среднее арифметическое, только приведенное к целочисленной шкале от 0 до n, где n в данном случае — количество интервалов яркости. Собственно тут и возникает большая проблема, на границе интервалов будут находится на самом деле похожие цвета, но они будут обрабатываться уже отдельно и каждый отдельно будет выведен. Но это будет заметно только на изображениях, где как раз попадутся цвета располагающиеся по разные стороны от границы. В идеале, такие границы должны быть разбиты не строго, т.е. в зависимости от текущей палитры смещены в одну или другую сторону.
Также из-за разбиения тонов на интервалы яркости, пришлось увеличить количество обрабатываемых цветов. Теперь вместо 60000, алгоритм обрабатывает 500000 цветов и шаг проверки уменьшился с 20px до 10px. Так что возможно замедление работы.
Результат
В результате, картина очень сильно изменилась в лучшую сторону! Скрипт выдает более менее адекватные цвета на большинство изображений. Также работают и ч/б изображения, хотя с ними возможны баги.
Ниже несколько примеров работы:
Дополнительно
Не стал публиковать в блог «Алгоритмы», т.к. это всего лишь небольшое изменение в работу предыдущей версии.
Многие спрашивали скрипт для определения цветов на изображении. Собственно вот. Внутри есть описание.
UPD_1 По просьбе некоторых пользователей, добавил вывод цветов в hex формате после обработки изображения. RGB нужен?
UPD_2 Добавил поддержку PNG.
UPD_3 Автор фотографии рыжей девушки: Елена Серебрякова.
UPD_4 Пересчет яркости по формуле 0.299*R + 0.587*G + 0.114*B. Изменена погрешность. Добавлена возможность перевода цвета из HEX в RGB формат.
UPD_5 Уменьшил пороговую погрешность. Добавил возможность определения цветов на загруженной фотографии. Просто кликните в нужном месте на изображении.
Источник
Представление информации в компьютере Любой компьютер предназначен для обработки, хранения, преобразования данных. Для выполнения этих функций компьютер должен обладать некоторыми свойствами представления
Графическая информация — презентация онлайн
1. Графическая информация
Графическая информация может быть представлена в
виде аналоговой и дискретной формах. Примером
аналогового (непрерывного) изображения может
служить живописное полотно, в котором цвет
меняется непрерывно; в качестве дискретного
можно рассматривать картинку, распечатанную на
принтере и состоящее из отдельных точек.
живописное полотно
картинка
Преобразование изображения из аналоговой (непрерывной) в
цифровую (дискретную) форму, называется
пространственной дискретизацией. Пространственную
дискретизацию изображения можно сравнить с
построением мозаики. Изображение разбивается на
отдельные фрагменты, точки (пиксели).
Пиксель — это минимальный участок изображения, для которого
независимым образом можно задать цвет.
В результате пространственной дискретизации графическая
информация представляется в виде растрового изображения.
Качество изображения зависит от разрешающей способности.
Разрешающая способность растрового изображения
определяется количеством точек по горизонтали и
количеством точек по вертикали на единицу длины
изображения.
Чем меньше размер точки, тем больше разрешающая
способность, а значит, выше качество изображения.
Величина разрешающей способности выражается в dpi (dot per
inch – точек на дюйм), т.е. количество точек в полоске
изображения длиной один дюйм (1 дюйм=2,54 см.)
Количество информации, которое используется
для кодирования цвета точки изображения,
называется глубиной цвета.
В процессе дискретизации используются
различные палитры цветов (наборы цветов,
которые могут принять точки изображения).
Количество цветов N в палитре и количество
информации I, необходимое для кодирования
цвета каждой точки, могут быть вычислены по
формуле: N=2I.
Пример 1. Для кодирования изображения используется
простейшая палитра из двух цветов: чёрного и белого.
Для кодирования изображения, согласно формуле 2=2I ,
достаточно 1 бита информации для кодирования 1 точки
изображения.
6. Глубина цвета и количество цветов в палитре
Глубина цвета
Количество цветов в палитре
8
28 = 256
16
216 = 65 536
24
224 = 16 777 216
Задачи
1. Черно-белое изображение размером 10х10 пикселей.
Каков информационный объем?
Решение:
2 = 21 ; 10*10*1 = 100 бит
2. 256-цветный рисунок содержит 100 байт
информации. Из скольких точек он состоит?
Решение:
108 байт = 100*8 бит; 256 = 28 (8 бит – 1 точка).
100*8/8 = 100 точек
Пространственное разрешение монитора
Изображение на экране монитора формируется из отдельных
точек — пикселей, образующих строки; всё изображение состоит
из определённого количества таких строк.
Пространственное разрешение монитора — это количество
пикселей, из которых складывается изображение на его экране.
Оно определяется как произведение количества строк
изображения на количество точек в строке.
Разрешение монитора 1280 1024 означает, что изображение
на его экране будет состоять из 1024 строк, каждая из которых
содержит 1280 пикселей.
Палитра цветов в системе цветопередачи RGB
В системе цветопередачи RGB палитра цветов формируется
путём сложения красного,
зеленого и синего цветов.
Цвет палитры Color можно определить с
помощью формулы:
Color = R + G + В
При этом надо учитывать глубину цвета —
количество битов, отводимое в компьютере
для кодирования цвета.
Для глубины цвета 24 бита (8 бит на каждый
цвет):
0 ≤ R ≤ 255, 0 ≤ G ≤ 255, 0 ≤ B ≤ 255
Формирование цветов в системе цветопередачи RGB
Цвет
Черный
Белый
Формирование цвета
Black = 0 + 0 + 0
While = Rmax+ Gmax+ Bmax
Красный
Зеленый
Синий
Red = Rmax+ 0 +0
Green = 0 + Gmax+ 0
Blue = 0 + 0 + Bmax
Голубой
Пурпурный
Желтый
Cyan = 0+ Gmax+ Bmax
Magenta = Rmax+ 0 + Bmax
Yellow = Rmax+ Gmax+ 0
Цвета в палитре RGB формируются путём сложения базовых цветов,
каждый из которых может иметь различную интенсивность.
Видеосистема персонального компьютера
Качество изображения на экране компьютера зависит как от
пространственного разрешения монитора, так и от
характеристик видеокарты (видеоадаптера), состоящей из
видеопамяти и видеопроцессора.
Видеосистема
Монитор
Видеоадаптер
Видеопамять
Видеопроцессор
Размер 256, 512 Мб
и более
Частота обновления
экрана не менее 75 Гц
Видеосистема персонального компьютера
Пространственное разрешение монитора, глубина цвета
и частота обновления экрана – основные параметры,
определяющие качество компьютерного изображения. В
операционных системах предусмотрена возможность
выбора необходимого пользователю и технически
возможного графического режима
Задача.
Рассчитайте объем видеопамяти, необходимой
для хранения 2 страниц изображения, с
разрешением монитора 640 х 480 и палитрой из
256 цветов.
Решение
N = 2i, I = K x i
256 = 2i , i = 8,
I =2 х 640 x 480 x 8 (битов) = 4915200 : 8 (байт) =
= 614400:1024(Кбайт) = 600 (Кбайт).
Глубина цвета
— Graphics Mill
В то время как цветовое пространство определяет, как создать цвет из его компонентов, глубина цвета указывает, как эти компоненты хранятся в памяти компьютера. Обычно глубина цвета измеряется в количестве битов, используемых для представления одного значения цвета (пикселя) — бит на пиксель (бит / пиксель). Чем больше бит занимает пиксель, тем больше разных цветов может быть представлен этим пикселем. Например, 1-битные пиксели могут представлять только 2 цвета, 8-битные пиксели — 256 цветов, 24-битные пиксели — 16 777 216 цветов (так называемый true color ; исследования доказали, что человеческий глаз не может распознать больше цвета).С другой стороны, большая глубина цвета означает, что изображение требует больше памяти. Иногда истинный цвет не требуется (например, для хранения документов или изображений, содержащих всего несколько цветов), поэтому мы можем значительно сэкономить память, уменьшив глубину цвета.
Graphics Mill поддерживает изображения со следующей глубиной цвета:
- 1-битные индексированные (палитры) изображения.
- 4-битные и 8-битные индексированные (палитры) изображения.
- 8 бит на канал изображений (8, 16, 24, 32 или 40 бит на пиксель, в зависимости от количества каналов в пикселе).
- 16 бит на канал изображения (16, 48, 64 или 80 бит на пиксель, в зависимости от количества каналов в пикселе). Растровые изображения с такой большой глубиной цвета также называются расширенным .
Как вы видите, цвета различаются не только количеством бит на пиксель, но и методом хранения: индексом в палитре (т. Е. индексированных растровых изображений ) или прямым значением цвета.
Проиндексированные изображения всегда содержат палитру — специальную таблицу цветов.Каждый пиксель является индексом в этой таблице. Обычно палитра содержит 256 или меньше записей. Вот почему максимальная глубина индексированного пикселя составляет 8 бит на пиксель. Использование палитр — обычная практика при работе с небольшой глубиной цвета.
В отличие от индексированных изображений, пиксели из неиндексированных непрерывных изображений хранят фактические значения цвета вместо индекса палитры. Каждый пиксель состоит из компонентов (также известных как каналов ). Каналы можно интерпретировать по-разному, в зависимости от цветового пространства пикселя.Например, изображения в градациях серого имеют только один канал яркости. Изображения RGB имеют три канала — красный, зеленый и синий. Изображения CMYK имеют четыре канала — голубой, пурпурный, желтый и черный. Кроме того, пиксели могут содержать дополнительный компонент, называемый альфа-каналом. Альфа-канал не содержит информации о цвете или яркости, а указывает степень непрозрачности пикселя при наложении на другое изображение. Чем меньше значение альфа, тем прозрачнее пиксель.
Давайте рассмотрим все возможные глубины цвета, поддерживаемые Graphics Mill, более подробно.
1-битные индексированные изображения (палитра)
1-битных изображений (также известных как bitonal ) могут состоять только из двух цветов. Обычно это черный и белый цвета (однако, поскольку есть палитра, вы можете указать любые другие два цвета). Основное преимущество битональных изображений — чрезвычайно компактный размер, однако обычно двух цветов недостаточно. Но, тем не менее, есть такие изображения, где широко используется 1-битная глубина цвета: документы, документы, факсы и другие подобные изображения.
В Graphics Mill такие изображения имеют формат пикселей Format1bppIndexed. Графическая мельница
позволяет выполнять некоторые базовые преобразования таких изображений (изменение размера, отражение, поворот, обрезка). При масштабировании битонального изображения вы можете использовать специальную технику изменения размера, которая сохраняет детали и дает высококачественные (известные как масштабирование до серого) изображения.
4-битные и 8-битные индексированные изображения (палитра)
Максимальное количество 4-битных цветов — 16, а максимальное количество 8-битных цветов — 256.Эта глубина цвета используется, когда необходимо сохранить изображение с небольшим количеством цветов. Типичный пример — веб-изображения — кнопки, баннеры, логотипы и т. Д. Их относительно небольшой размер делает такие изображения идеальными для Интернета.
В Graphics Mill такие изображения имеют форматы пикселей Format4bppIndexed и Format8bppIndexed соответственно. Для этих форматов Graphics Mill поддерживает только базовые преобразования и эффекты (поворот, изменение размера, кадрирование и некоторые другие).
8 бит на канал изображений
Эти изображения являются наиболее популярными в магазинах фотографий и аналогичных изображений.Этот уровень глубины цвета позволяет отображать столько цветовых оттенков, сколько может распознать человеческий глаз. В Graphics Mill поддерживаются следующие виды форматов пикселей с 8 битами на канал:
16 бит на канал изображений
Это может показаться странным. Зачем нам нужно больше 8 бит на канал, если наш глаз не заметит разницы? Проблема в том, что когда мы применяем некоторые операции к изображению с 8 битами на канал (например, регулировка тона или улучшение цвета), некоторая информация о цвете может быть потеряна или искажена из-за ошибок округления.Особенно это заметно, когда мы применяем эти операции несколько раз. Чтобы избежать этой проблемы, мы должны увеличить глубину цвета. Вот почему большинство сканеров выдают изображения со скоростью 48 бит на пиксель вместо 24 бит на пиксель. В Graphics Mill поддерживаются следующие форматы пикселей с 16 битами на канал:
Учебное пособие по цифровой визуализации — базовая терминология
1. Базовая терминология Ключ Концепты цифровой изображения дополнительный |
ГЛУБИНА БИТА А А Пример:
В 2-битном изображении возможны четыре комбинации: 00, 01, 10, и 11. Если «00» представляет черный цвет, а «11» представляет белый цвет, тогда «01» соответствует темно-серому, а «10» — светло-серому. Разрядность составляет два, но количество тонов, которые могут быть представлены, равно 2 2 или 4. При 8 битах 256 (2 8 А 24 Бит
двоичный
© |
Что такое битовая глубина цвета?
Многие крупнобюджетные шоу и фильмы, такие как «Субботняя ночь в прямом эфире», «Дом» и «Капитан Америка», уже много лет используют 8-битные кадры из серии Canon 5D и находят ее сильные стороны более убедительными, чем ее недостатки. Если у вас есть разумные ожидания относительно оценки отснятого материала при постобработке, 8-битное видео может быть вполне жизнеспособным вариантом.
Битовая глубина — это технический жаргон, пришедший к нам в эпоху цифрового кино. Это часть того облака технических характеристик, которые на бумаге кажутся очень важными и которые обсуждаются в каждом пресс-релизе — «Теперь с 10-битной внутренней записью!» Весь этот маркетинг действительно исказил и затуманил наше понимание этого слова. Что жаль, потому что по своей сути битовая глубина не должна быть ужасно сложной или пугающей.
Итак, всем вам, кинорежиссерам, видеооператорам и любопытным посторонним, ломающим головы над всем этим, знайте, что вы не одиноки.8 уникальных цветов на канал, что в сумме составляет 256. 256 оттенков зеленого, 256 оттенков синего и 256 оттенков красного смешались вместе, чтобы сформировать изображение.
Важно отметить, что каждый пиксель выбирает все три цвета. Датчик по-прежнему получает полный видимый спектр, но процессор пытается эффективно сжать этот избыток информации в пригодный для использования формат изображения, который по-прежнему сохраняет детали изображения — задача не из легких. 10-битное изображение дает 1024 уникальных цвета на канал, а 12-битное — 4096.Вы можете иметь гораздо больше тонкости и нюансов при работе в 10 или 12 битах, но сложность кодирования растет в геометрической прогрессии. Есть причина, по которой меньшие по размеру камеры, ориентированные на потребителя, снимают только 8-битные изображения.
Это не совсем верно, но вы можете представить себе набор цветных карандашей. 8-битный цвет был бы подобен здоровому 64-битному пакету: у вас более чем достаточно вариантов на первый взгляд, но время от времени вы обнаруживаете потребность, которую просто не можете удовлетворить. Может быть, просто нет правильного оттенка синего, или вы обнаружите, что по какой-то причине есть только два пурпурных.10-битный цвет — это как 120 пакет. На данный момент вы достаточно хорошо подготовлены ко всем своим повседневным потребностям. Редкая ситуация, когда вам понадобится больше цветов, чем у вас есть. 12, 14 или даже 16-битный цвет — это как машина для плавления мелков, которая позволяет создавать бесконечное количество цветовых смесей.
AVS Forum
8-битное видео — это наименьшая битовая глубина, от которой можно разумно ожидать, что она будет выглядеть «реалистично» и не будет заметно искажать цвета странным образом. Он не выдержит строгого процесса цветокоррекции, оставляет меньше возможностей для коррекции и не отражает богатство полного цветового спектра, а также 10- или 12-битного.Из-за этого это далеко не идеальный кандидат для съемки журнала, и он лучше всего работает, когда окончательный вид может быть запечатлен в камере. Это настолько урезано, насколько может быть видеосигнал, при этом оставаясь жизнеспособным.
Хотя сегодня мы думаем об этом как о низкокачественном формате, стоит помнить, что ранние художественные фильмы, захваченные цифровым способом, были 8-битными. Джордж Лукас сделал цифровое кино популярным благодаря своей трилогии-приквелу «Звездных войн», снятой на HDCAM с 8-битным сигналом 1080p.Во многих крупнобюджетных шоу и фильмах, таких как «Субботняя ночь в прямом эфире», «Дом» и «Капитан Америка», уже много лет используются 8-битные кадры из серии Canon 5D, и их сильные стороны убедительнее, чем недостатки. Если у вас есть разумные ожидания относительно оценки отснятого материала при постобработке, 8-битное видео может быть вполне жизнеспособным вариантом.
• Камеры MiniDV / HDV
• Все зеркальные фотокамеры Canon
• Canon C100 MK II
• Sony A7s, A7r, A6500
.264
• AVCHD
В последние несколько лет 10-битное видео находит свое применение в более дешевых и дешевых камерах, совсем недавно — в Panasonic Lumix GH5. Это, несомненно, «более сильное» изображение, которое более точно передает цвета и гораздо более восприимчиво к изменениям в публикации. Это стандартная битовая глубина в профессиональных камерах начального уровня, таких как Sony FS7, Canon C300 Mark II и Panasonic EVA-1. Но это не означает, что высококачественные кинокамеры, такие как ARRI или RED, не поддерживают 10-битную запись, только они способны на гораздо большее.
10-битная запись является стандартом вещания во многих экосистемах и является обязательным минимумом для многих продюсерских компаний, таких как Netflix. Это необходимо как для удовлетворения требований HDR-дисплеев, так и для перспективных снимков.
Sony FS7 от Spekulor
• Panasonic GH5
• Canon C300 Mark II
• Sony FS7
• ProRes 422 HQ
• 12202 • DN -бит или выше Используется?
Камера, способная снимать 12-, 14- или 16-битное видео, действительно редкость.Эти цветовые пространства делают упор на гибкость постпроизводства и насыщенные и точные цвета. Они гарантируют заметно более качественное движущееся изображение, которое будет гораздо более гибким в вашем рабочем процессе постпроизводства. Чтобы максимизировать преимущества этих высоких битовых глубин, они часто записываются в форматах RAW, которые в значительной степени сохраняют информацию, передаваемую датчиком, практически без сжатия или потери. Огромные требования к хранению этих форматов делают их намного более доступными для больших студийных фильмов, но камеры, такие как Canon C200 с кодеком RAW-Light, начинают предлагать даже 12-битный RAW в ценовом диапазоне, доступном для независимых владельцев-операторов. и режиссеры.
Непрерывная или даже последовательная съемка в этих больших форматах требует определенной инфраструктуры, места для хранения и вычислительной мощности, что, естественно, ограничивает доступность для «среднего» пользователя. Подобные рабочие процессы в основном предназначены для студийных фильмов и, в последнее время, для очень крупных создателей YouTube.
Стоит отметить, что даже эти чрезвычайно высококачественные форматы постепенно доходят до потребительского уровня. Blackmagic произвела фурор, представив 12-битный RAW до смехотворно доступного ценового диапазона со своей Pocket Cinema Camera, а теперь Canon представила более сжатый 12-битный RAW вариант с C200.Возможно, пройдет не так уж много времени, прежде чем 12-битный станет новым стандартом вещания, а 10-битный станет просто приемлемым.
• Sony F55 / Venice
• ARRI Alexa Mini / Amira
• Canon C200 / C700
• КРАСНОЕ Оружие Helium 8K
Alexa Mini от Citiz2en
• RED Raw
• Cinema DNG
Битовая глубина, с которой вы записываете, не определяет вашу производственную ценность.Хорошо освещенная, хорошо снятая сцена будет выглядеть великолепно независимо от формата записи. Но мы живем в мире, где оценка становится все более доступной и популярной, поэтому ваша камера будет лучше. 8-битные камеры справятся со своей задачей, но все, что снимается в 10-битном режиме, будет работать намного лучше, если вы возьмете это в студию пост-продакшн. И если вам повезло, не говоря уже об объеме памяти, чтобы снимать с большей битовой глубиной, тогда ваши горизонты откроются намного больше.
Глубина цвета — Videocide
Глубина цвета относится либо к количеству битов, используемых для обозначения цвета одного пикселя, либо к количеству битов, используемых для каждого цветового компонента одного пикселя.
Для стандартов потребительского видео, таких как высокоэффективное кодирование видео (H.265), битовая глубина определяет количество бит, используемых для каждого цветового компонента. При ссылке на пиксель понятие может быть определено как бит на пиксель (bpp), который определяет количество используемых битов. При ссылке на компонент цвета понятие может быть определено как биты на компонент, биты на канал, биты на цвет (все три сокращенно BPC), а также биты на компонент пикселя, биты на канал цвета или биты на выборку (бит / с).Глубина цвета — это только один аспект представления цвета, выражающий точность, с которой могут быть выражены цвета; другой аспект — насколько широкий диапазон цветов может быть выражен (гамма). Определение как точности цвета, так и гаммы достигается с помощью спецификации кодирования цвета, которая присваивает значение цифрового кода местоположению в цветовом пространстве.
При относительно низкой глубине цвета сохраненное значение обычно представляет собой число, представляющее индекс цветовой карты или палитры (форма векторного квантования).Цвета, доступные в самой палитре, могут быть зафиксированы аппаратно или изменены программным обеспечением. Изменяемые палитры иногда называют палитрами псевдоцветов.
- 1-битный цвет (21 = 2 цвета): монохромный, часто черно-белый, компактные Macintosh, Atari ST.
- 2-битный цвет (22 = 4 цвета): CGA, ранняя NeXTstation в оттенках серого, цветные Macintosh, Atari ST.
- 3-битный цвет (23 = 8 цветов): многие ранние домашние компьютеры с телевизионными дисплеями, включая ZX Spectrum и BBC Micro
- 4-битный цвет (24 = 16 цветов): используется EGA и стандартом VGA с наименьшим общим знаменателем при более высоком разрешении, цветные Macintosh, Atari ST, Commodore 64, Amstrad CPC.
- 5-битный цвет (25 = 32 цвета): оригинальный чипсет Amiga
- 6-битный цвет (26 = 64 цвета): оригинальный чипсет Amiga
- 8-битный цвет (28 = 256 цветов): самые ранние цветные рабочие станции Unix, VGA с низким разрешением, Super VGA, цветные Macintosh, Atari TT, набор микросхем Amiga AGA, Falcon030, Acorn Archimedes.
- 12-битный цвет (212 = 4096 цветов): некоторые кремниевые графические системы, системы Color NeXTstation и системы Amiga в режиме HAM.
Старые графические чипы, особенно те, которые используются в домашних компьютерах и игровых консолях, часто имеют возможность использовать другую палитру для спрайтов и плиток, чтобы увеличить максимальное количество одновременно отображаемых цветов, сводя к минимуму использование дорогостоящих в то время память (и пропускная способность).Например, в ZX Spectrum изображение хранится в двухцветном формате, но эти два цвета могут быть определены отдельно для каждого прямоугольного блока размером 8×8 пикселей.
Сама палитра имеет глубину цвета (количество бит на запись). В то время как лучшие системы VGA предлагали только 18-битную (262 144 цвета) палитру, из которой можно было выбирать цвета, все цветное видеооборудование Macintosh предлагало 24-битную (16 миллионов цветов) палитру. 24-битные палитры в значительной степени универсальны для любого современного оборудования или файлового формата, использующего их.
Распутывание | Понимание битовой глубины
ПОНИМАНИЕ ГЛУБИНЫ БИТА / ЦВЕТА
Битовая глубина или глубина цвета является важным показателем качества видео. Читайте дальше, чтобы узнать, что такое битовая глубина и почему это важно при работе с фильмами и видео.
Бит / глубина цвета:
Если цветовое пространство определяет диапазон доступных значений интенсивности цвета (гаммы), то битовая глубина определяет, насколько точными мы можем быть с этими характеристиками.Другими словами, битовая глубина определяет, насколько точно можно указать разницу между одним цветом и другим. К счастью, это одна из тех тем, которые имеют гораздо больше смысла в сочетании с изображениями, так что давайте сразу погрузимся в нее и посмотрим, не сможем ли мы найти какой-то смысл в этой теме.
В чем разница между низкой и высокой битовой глубиной?
Как видно выше, низкая битовая глубина ограничивает возможные значения, которые можно использовать при представлении изображения. В случае 3-битного изображения в оттенках серого существует только 8 возможных значений.Это потому, что 3-битный — это еще один способ сказать 2x2x2 = 8. С другой стороны, если нам разрешено использовать 8-бит, у нас есть до 256 значений, которые мы можем использовать для воспроизведения одного и того же изображения (2 = 256). Это приводит к более гладкому изображению, потому что мы можем более точно определять тонкие различия между оттенками.
Изображение RGB
Теперь, когда у нас есть идея с изображениями в оттенках серого, давайте применим эти знания к цветным изображениям. Цветные изображения создаются путем смешивания трех каналов цвета, а именно красного, зеленого и синего — RGB.
Поскольку у нас 3 канала, это означает, что теперь у нас в 3 раза больше данных.
При рассмотрении 8-битного сигнала RGB на канал у нас есть 256 возможных значений для каждого из каналов / цветов. В сочетании это означает, что возможны 16,7 миллиона цветовых комбинаций (256 x 256 x 256). Это может показаться огромным, но на самом деле это то, что почти каждый экран, который мы смотрим ежедневно, способен воспроизводить, и есть много вариантов использования, которые требуют еще более высокой битовой глубины, чтобы избежать заметных проблем с качеством изображения.
RGB + Alpha
Помимо трех цветовых каналов, изображения иногда могут иметь четвертый канал, называемый альфа-каналом. Альфа-канал содержит информацию о прозрачности и обычно имеет ту же битовую глубину, что и другие цветовые каналы.
Это означает, что для цветного изображения в компьютерной системе будет назначено 8 бит для каждого цветового канала, а иногда еще 8 бит для альфа-канала, что дает нам в общей сложности 32 бита на пиксель (4×8 бит).
Битовая глубина на пиксель по сравнению с битовой глубиной на канал
Одной из проблемных областей для меня в течение долгого времени на раннем этапе были, казалось бы, непоследовательные способы определения битовой глубины. Например, если вы когда-либо использовали Adobe After Effects, вы можете знать, что можете переключить приложение на работу в 8-битном, 16-битном или 32-битном цвете. По умолчанию используется 8 бит, но, как мы только что видели в предыдущем примере, разве стандартное изображение не использует 32 бита на пиксель? Почему 8-битный вариант вообще может быть вариантом?
Путаница заключается в том, что After Effects ссылается на то, как биты назначаются для каждого цветового канала, а 32-битное измерение указывает, сколько битов требуется, когда все каналы объединены вместе.Технически это различие подтверждается аббревиатурой «bpc» (бит на канал), но чаще при случайном преобразовании люди предполагают, что вы знаете, на что они ссылаются, исходя из контекста.
Например, если кто-то сказал, что рендеринг был выполнен в 12-битном цвете, весьма вероятно, они имели в виду, что он был экспортирован с 12-битным цветом на канал. Это потому, что альтернатива означала бы, что у них было только 4 бита на канал (12 бит разделены на красно-зеленый и синий каналы), что намного ниже профессиональных стандартов.
Для справки приведена разбивка битов на канал при вычислении битов на пиксель.
В приведенных выше таблицах вычисляется битовая глубина на канал на выходе из количества битов, требуемых на пиксель.
Зачем нужна высокая битовая глубина?
Существует несколько причин и вариантов использования, которые требуют перехода на более высокую битовую глубину. Среди них — отказ от цветных полос + постеризация, изображения с широким динамическим диапазоном, а также сохранение качества при манипулировании ими во время постобработки.
Полосы
Полосы появляются, когда битовая глубина слишком мала, и глаз может видеть, где происходят изменения цвета, а не видеть плавное постепенное изменение между оттенками. Часто эти различия выглядят как полосы, проходящие через изображение — отсюда и название. Вот пример фотографии, которая воспроизводится с битовой глубиной, слишком низкой для точной передачи градиента оттенков синего на небе:
На изображении выше видны полосы на небе из-за недостаточной битовой глубины, используемой для рендеринга.
Полоса пропускания — это проблема, которая может регулярно появляться для изображений с 8 битами на канал или меньше, и по этой причине высококачественные камеры захватывают с более высокой битовой глубиной, а мастер-файлы также создаются с более высокой битовой глубиной. Например, в цифровом кино используется проецирование 12 бит на канал (бит на канал), что позволяет отображать до 68,3 миллиарда различных цветовых комбинаций и точно отображать даже самые незначительные различия в цветах и оттенках.
Постеризация
Постеризация — это, по сути, та же проблема, что и полосатость, но у нее другое название, потому что некоторые изображения не имеют больших градиентов, которые в конечном итоге разбиваются на аккуратные «полосы».Вместо этого некоторые образы распадутся на более абстрактные узоры. Проблема все та же — вместо приятных смешанных оттенков цвета глаз может заметить, где заканчивается один цвет и начинается следующий.
Пример постеризации, когда на фоне листвы видна разбивка цветов.
На изображении выше хорошо видна постеризация в области фона, где фокус падает. Одно интересное явление в постеризации заключается в том, что области с высокой детализацией и контрастом (высокая пространственная частота) воспринимаются не так сильно.Возьмем, к примеру, дерево в правой трети, которое находится в фокусе — без фона было бы трудно сказать, что низкая битовая глубина отрицательно влияет на это изображение. Это связано с тем, что в областях с высокой пространственной частотой используемые ограниченные цвета чередуются и распадаются намного быстрее, что означает, что наш глаз не может определить области, которые выглядят так, как будто они должны иметь более плавные градиенты.
С другой стороны, области с низкой пространственной частотой (например, области вне фокуса или сцены с низким контрастом) с гораздо большей вероятностью будут демонстрировать артефакты постеризации.Это потому, что гораздо более вероятно, что большие пятна будут уменьшены до одного цвета, что, в свою очередь, значительно облегчит их распознавание нашим глазом.
HDR (расширенный динамический диапазон) + широкие цветовые гаммы
Еще одна область, которая потребовала перехода на высокую битовую глубину, — это появление расширенного динамического диапазона и более широких цветовых гамм, которые теперь появляются на потребительском рынке. И HDR, и широкая цветовая гамма потенциально могут усугубить проблемы с полосами и постеризацией, поскольку они требуют битовой глубины, чтобы отображать как больше цветов, так и гораздо более яркий диапазон цветов и оттенков.По сути, это означает, что битовая глубина должна быть растянута дальше, чем это было бы в противном случае, и начнется создание полос в областях, где она, возможно, не была видна в стандартном динамическом диапазоне.
Соответственно, телевизоры сверхвысокой четкости, которые перешли на поддержку HDR, должны иметь возможность воспроизводить не менее 10 бит на канал, чтобы избежать появления полос в содержимом. Dolby Vision (стандарт Dolby HDR) идет еще дальше и требует, чтобы контент Dolby Vision был кодирован с точностью до 12 бит на канал, чтобы обеспечить соответствие требованиям будущего и уменьшить любые потенциальные проблемы.
Процессы постпродакшена
Так зачем нам вообще может понадобиться более 12 бит на канал, если он способен без проблем обрабатывать контент с расширенным динамическим диапазоном и широкой цветовой гаммой? Хотя это правда, что этот уровень глубины цвета близок к превышению человеческого зрения для наблюдения, более высокая битовая глубина очень часто требуется при пост-обработке. Это связано с тем, что постпродакшн часто включает в себя сильное выталкивание и вытягивание цветов, что эквивалентно увеличению глубины цвета, закодированной в изображении.Когда вы начинаете видеть полосы или постеризацию, значит, вы достигли предела глубины цвета, который, в свою очередь, ограничивает свободу творчества, которую имеют цветоводители, композиторы и специалисты по визуальным эффектам.
Еще одно применение высокой битовой глубины — это кодирование дополнительной информации об экспозиции, которую можно получить позже. Например, работа с визуальными эффектами (VFX) часто визуализируется с 32-битным разрешением на канал с использованием значений линейного освещения. Это позволяет сохранять сверхъяркие белые цвета (значения белого за пределами нормальной точки кодирования) и затем манипулировать ими в дальнейшем.Например, композитор, объединяющий взрывы, визуализированные в 32-битном формате, может начать регулировать экспозицию, чтобы она соответствовала их кадру, и начать восстанавливать детали из белых, которые ранее казались обрезанными и утерянными.
Заключение:
В этой статье мы исследуем, что такое битовая / цветовая глубина, а именно это мера точности, с которой можно указать различия в оттенках цвета. Чем выше битовая глубина, тем больше возможных цветовых оттенков. Мы рассмотрели, как рассчитывается битовая глубина и разница между количеством бит, требуемым на пиксель, и количеством бит, требуемым на канал в изображении.Наконец, мы рассмотрели, что такое полосатость и постеризация, почему они возникают и почему чрезвычайно высокая битовая глубина может использоваться в некоторых областях постпродакшна.
Нужна дополнительная помощь?
Unravel создает и обрабатывает контент, который просматривается на различных устройствах. Нам нравится мастеринг контента для кино, телевидения и Интернета. Мы имеем дело с разной битовой глубиной ежедневно, поэтому, если вам понадобится помощь или совет по поводу вашего следующего проекта, не стесняйтесь обращаться к нам.
Что такое глубина цвета для моей видеокарты или монитора?
Этот контент был заархивирован и больше не поддерживается Университетом Индианы. Информация здесь может быть неточной, а ссылки могут быть недоступны или надежны.
Для видеокарты или монитора глубина цвета — это количество оттенков, которые
может быть сгенерирован или отображен на пиксель. Для более низких уровней цвета
глубины, цифра обычно приводится в максимально возможном количестве
цвета (например, 16 цветов или 256 цветов), тогда как более высокий цвет
глубина обычно указывается как количество бит в пикселе
цвет принимает (напр.г., 16 бит, 24 бит, 32 бит). Таким образом, 32-битный цвет — это
настройка видеокарты, где описывается цвет каждого отдельного пикселя
используя 32 бита информации. Это один из возможных цветов
установка глубины на многих видеокартах.
16-, 24- и 32-битная глубина цвета преобразуется в это количество цветов:
Глубина цвета | Количество возможных цветов |
---|---|
16 бит | 65 536 |
24-бит | 16.7 миллионов |
32-бит | 16,7 млн. |
Эти цифры рассчитываются возведением числа 2 в число
биты, описывающие цвет, следующим образом:
- 1 бит равен 2 1 (2 в первой степени) равен 2 цветам
- 2 бит равен 2 2 (2 в квадрате) равен 4
цвета - 8 бит равно 2 8 (от 2 до восьмого)
равно 256 цветов - 16 бит равно 2 16 (от 2 до шестнадцатого) равно 65 536 цветов
- 24 бит равно 2 24 (от 2 до двадцати четвертого) равно 16 777 216 цветов
Почему не 32-битный цвет равен 4294967296 цветов?
32-битный цвет — это небольшое отклонение от обычной схемы.Там
действительно 32 бита, которые описывают цвет каждого пикселя: 8 для красного, 8 для
зеленый и 8 для синего, но есть еще 8 дополнительных бит, которые могут быть
используется для описания «альфа-канала», который простыми словами может быть
мыслится как прозрачность пикселей. Вы видите такое же количество цветов в
32-битный, как вы видите в 24-битных режимах, но с 32-битным
потенциально дополнительная информация, которую некоторые программы могут использовать для различных
функций. Итак, в конце концов, вы больше не видите цветов
с 32-битным цветом, но ваша программа получает больше информации о цвете, чем
его можно использовать для таких вещей, как непрозрачность / прозрачность или, с движущимся видео
или 3D-анимация, более точное смешивание и более плавные преобразования
от цвета к цвету.
ЖК-дисплеи
и битовая глубина цвета
Цветовой диапазон компьютера определяется термином «глубина цвета», который представляет собой количество цветов, которые может отображать оборудование с учетом его аппаратного обеспечения. Чаще всего вы увидите 8-битную (256 цветов), 16-битную (65 536 цветов) и 24-битную (16,7 миллиона цветов) режимы. Истинный цвет (или 24-битный цвет) является наиболее часто используемым режимом, поскольку компьютеры достигли достаточного уровня для эффективной работы с такой глубиной цвета.
Некоторые профессиональные дизайнеры и фотографы используют 32-битную глубину цвета, но в основном для увеличения цвета, чтобы получить более четкие тона при рендеринге проекта до 24-битного уровня.
mikroman6 / Getty Images
Скорость и цвет
ЖК-мониторы борются с цветом и скоростью. Цвет на ЖК-дисплее состоит из трех слоев цветных точек, составляющих последний пиксель. Чтобы отобразить цвет, к каждому цветному слою применяется ток, чтобы создать желаемую интенсивность, которая приводит к окончательному цвету. Проблема в том, что для получения цветов ток должен перемещать кристаллы и выключать их до желаемых уровней интенсивности. Этот переход из включенного состояния в выключенное называется временем отклика.Для большинства экранов он составляет от 8 до 12 миллисекунд.
Проблема со временем отклика становится очевидной, когда ЖК-мониторы отображают движение или видео. Благодаря высокому времени отклика для переходов из выключенного состояния во включенное, пиксели, которые должны были перейти на новые уровни цвета, следуют за сигналом и приводят к эффекту, называемому размытием движения. Это явление не является проблемой, если на мониторе отображаются такие приложения, как программное обеспечение для повышения производительности. Однако с высокоскоростным видео и некоторыми видеоиграми это может раздражать.
Поскольку потребители требовали более быстрых экранов, многие производители уменьшили количество уровней, отображаемых каждым цветным пикселем. Такое снижение уровней интенсивности позволяет снизить время отклика и имеет недостаток, заключающийся в сокращении общего диапазона цветов, поддерживаемых экранами.
6-битный, 8-битный или 10-битный цвет
Глубина цвета ранее называлась общим количеством цветов, которые может отображать экран. При обращении к ЖК-панелям вместо этого используется количество уровней, которые может отображать каждый цвет.6 = 64 х 64 х 64 = 262 144
Это уменьшение заметно человеческому глазу. Чтобы обойти эту проблему, производители устройств используют технику, называемую дизерингом, когда соседние пиксели используют слегка изменяющиеся оттенки цвета, которые обманом заставляют человеческий глаз воспринимать желаемый цвет, даже если это не совсем тот цвет. Цветное газетное фото — хороший способ увидеть этот эффект на практике. В печати эффект называется полутонами. Используя эту технику, производители заявляют, что достигают глубины цвета, близкой к истинной цветности дисплеев.
Зачем умножать группы по три? Для компьютерных дисплеев преобладает цветовое пространство RGB. Это означает, что для 8-битного цвета окончательное изображение, которое вы видите на экране, представляет собой смесь одного из 256 оттенков красного, синего и зеленого.
Есть еще один уровень отображения, который используют профессионалы, называемый 10-битным дисплеем. Теоретически он отображает более миллиарда цветов, больше, чем может различить человеческий глаз.
У этих типов дисплеев есть некоторые недостатки:
- Объем данных, необходимых для такого высокого цвета, требует соединителя данных с очень высокой пропускной способностью.Обычно эти мониторы и видеокарты используют разъем DisplayPort.
- Даже несмотря на то, что графическая карта отображает более миллиарда цветов, цветовая гамма дисплея или диапазон цветов, которые он может отображать, значительно меньше. Даже дисплеи со сверхшироким цветовым охватом, поддерживающие 10-битный цвет, не могут отображать все цвета.
- Эти дисплеи, как правило, медленнее и дороже, поэтому они не подходят для домашних потребителей.
Как узнать, сколько бит использует дисплей
Профессиональные дисплеи часто рекламируют поддержку 10-битного цвета.Еще раз, вы должны посмотреть на реальную цветовую гамму этих дисплеев. Большинство потребительских дисплеев не говорят, сколько они используют. Вместо этого они обычно указывают количество поддерживаемых цветов.
- Если производитель указывает цвет как 16,7 миллиона цветов, предположите, что отображение 8-битного цвета.
- Если в списке указано 16,2 миллиона или 16 миллионов цветов, имейте в виду, что для каждого цвета используется 6-битная глубина.
- Если глубина цвета не указана, предположим, что мониторы с 2 мс или быстрее будут 6-битными, а большинство панелей с 8 мс и более медленными будут 8-битными.
Это действительно важно?
Количество цвета имеет значение для тех, кто профессионально работает с графикой. Для этих людей количество цвета, отображаемого на экране, имеет большое значение. Среднестатистическому потребителю такой уровень цветопередачи на мониторе не понадобится. В результате это, вероятно, не имеет значения.
Цветовые модели — урок. Информатика, 7 класс.
Для описания цветовых оттенков, которые могут быть воспроизведены на экране компьютера и на принтере, разработаны специальные средства — цветовые модели (системы цветов).
Цветовые модели — это способ описания цвета с помощью количественных характеристик.
Цвет может получиться в процессе излучения и в процессе отражения. Поэтому цветовые модели можно классифицировать по их целевой направленности:
- Аддитивные модели (RGB). Служат для получения цвета на мониторе.
- Полиграфические модели (CMYK). Служат для получения цвета при использовании разных систем красок и полиграфического оборудования.
- Математические модели, полезные для каких-либо способов цветокоррекции, но не связанные с оборудованием, например HSВ.
Цветовая модель RGB
С экрана монитора человек воспринимает цвет как сумму излучения трёх базовых цветов: красного (Red), зелёного (Green), синего (Blue).
Такая цветовая модель называется RGB (по первым буквам).
Она служит основой при создании и обработке компьютерной графики, предназначенной для электронного воспроизведения (на мониторе, телевизоре).
Цвет на экране получается при суммировании лучей трёх основных цветов — красного, зелёного и синего. Если интенсивность каждого из них достигает (100), то получается белый цвет. Минимальная интенсивность трёх базовых цветов даёт чёрный цвет.
Для описания каждого составляющего цвета требуется (1) байт ((8) бит) памяти, а чтобы описать один цвет, требуется (3) байта, т.е. (24) бита, памяти.
Для кодирования одного цвета пикселя определяется длина двоичного кода, которая называется глубиной цвета.
Рассчитать глубину цвета можно по формуле: N=2i, где N —количество цветов в палитре, i — глубина цвета.
Интенсивность каждого из трёх цветов — это один байт (т.е. число в диапазоне от (0) до (255)), т.е. каждая составляющая может принимать (256) значений.
Таким образом, с использованием трёх составляющих можно описать (256⋅256⋅256 = 16777216 )различных цветовых оттенков, а, значит, модель RGB имеет приблизительно (16,7) миллионов различных цветов.
Таким количеством цветов определяется, в основном, палитра современного монитора.
Цветовая модель CMYK
При печати изображений на принтерах используется цветовая модель, основными красками в которой являются голубая (Cyan), пурпурная (Magenta) и жёлтая (Yellow).
Чтобы получить чёрный цвет, в цветовую модель был включен компонент чистого чёрного цвета (BlacK). Так получается четырёхцветная модель, называемая CMYK.
Область применения цветовой модели CMYK — полноцветная печать. Именно с этой моделью работает большинство устройств печати.
Из-за несоответствия цветовых моделей часто возникает ситуация, когда цвет, который нужно напечатать, не может быть воспроизведен с помощью модели CMYK (например, золотой или серебряный). В этом случае применяются краски Pantone.
Все файлы, предназначенные для вывода в типографии, должны быть конвертированы в CMYK. Этот процесс называется цветоделением.
При просмотре CMYK-изображения на экране монитора одни и те же цвета могут восприниматься немного иначе, чем при просмотре RGB-изображения.
В модели CMYK невозможно отобразить очень яркие цвета модели RGB, модель RGB, в свою очередь, не способна передать тёмные густые оттенки модели CMYK, поскольку природа цвета разная.
Отображение цвета на экране монитора часто меняется и зависит от особенностей освещения, температуры монитора и цвета окружающих предметов. Кроме того, многие цвета, видимые в реальной жизни, не могут быть выведены при печати, не все цвета, отображаемые на экране, могут быть напечатаны, а некоторые цвета печати не видны на экране монитора.
Модель HSB
HSB — это цветовая трёхканальная модель, которая характеризует параметры цвета. Цветовой тон (Hue), насыщенность (Saturation), яркость (Brightness).
Глубина цвета — Кодирование изображений — GCSE Computer Science Revision
Глубина цвета изображения измеряется в битах. Количество битов указывает, сколько цветов доступно для каждого пикселя. В черно-белом изображении нужно всего два цвета. Это означает, что он имеет глубину цвета 1 бит.
2-битная глубина цвета допускает четыре разных значения: 00, 01, 10, 11. Это позволяет использовать диапазон цветов, например:
Двоичный код | Цвет |
---|---|
00 | Белый |
01 | Светло-серый |
10 | Темно-серый |
11 | Черный |
Чем больше глубина цвета (бит на пиксель), тем больше цветов доступно .
Глубина цвета | Доступные цвета |
---|---|
1-битный | 2 1 = 2 |
2-битный | 2 2 = 4 |
3-битный | 2 3 = 8 |
4-битный | 2 4 = 16 |
5-битный | 2 5 = 32 |
6-битный | 2 6 = 64 |
7-битный | 2 7 = 128 |
8-битный | 2 8 = 256 |
Различные версии изображения с разной глубиной цвета
A черно-белое изображение (глубина цвета 1 бит)
Различные версии изображения с разной глубиной цвета
Изображение в шкале серого (глубина цвета 2 бита)
Различные версии изображения с разной глубиной цвета
An i изображение с несколькими цветами (4 бита + глубина цвета)
Большинство компьютерных систем и цифровых камер используют 24-битные изображения.24 в двоичном формате — это 1111 1111 1111 1111 1111 1111. Это означает, что существует более 16 миллионов возможных цветов на пиксель.
Разрешение — это мера плотности пикселей , обычно измеряется в пикселей на дюйм (ppi) . Изображения на веб-сайтах обычно имеют разрешение 72 ppi. Это означает, что квадрат размером в 1 дюйм содержит сетку пикселей шириной 72 пикселя и высотой 72 пикселя. 72 x 72 = 5184 пикселя на квадратный дюйм.
Учебное пособие по цифровой визуализации — базовая терминология
1.Базовая терминология Ключ цифровой дополнительный |
ФАЙЛ Формула Если Формула Файл
© |
Формула разницы в цвете | 101 Вычислительная техника
Цветовые коды RGB
Знаете ли вы, что каждый цвет на экране может быть представлен с помощью кода RGB (красный, зеленый, синий).Этот код состоит из трех чисел от 0 до 255, указывающих, сколько красного, зеленого и синего цветов используется для воссоздания цвета. Например, код RGB для:
- Красный (255,0,0)
- Зеленый (0,255,0)
- Синий (0,0,255)
- Желтый (255,255,0)
- Оранжевый (255,165,0)
Графический дизайнер и программист иногда предпочитают использовать другую нотацию, основанную на шестнадцатеричном коде RGB, где каждое из трех десятичных значений преобразуется в двузначный шестнадцатеричный код, в результате чего получается шестизначный (3 × 2) шестнадцатеричный код.Например:
- Красный — это # FF000
- Зеленый # 00FF00
- Синий — это # 0000FF
- Желтый — # FFFF00
- Оранжевый — # FFA500
Проверьте следующее средство выбора цвета RGB, чтобы увидеть, как работают коды RGB:
Используя цветовой код RGB, мы можем представить 256 3 = 16 777 216 цветов.
Цветовой круг
Цветовой круг используется для представления некоторых из наиболее отличительных цветов. Например, на картинке выше представлено цветовое колесо, состоящее из 12 цветов:
КРАСНЫЙ (Hex: # FF0000 — RGB: 255, 0, 0) |
ОРАНЖЕВЫЙ (шестнадцатеричный: # FF7F00 — RGB: 255, 127, 0) |
ЖЕЛТЫЙ (Hex: # FFFF00 — RGB: 255, 255, 0) |
CHARTREUSE GREEN (Hex: # 7FFF00 — RGB: 127, 255, 0) |
ЗЕЛЕНЫЙ (шестнадцатеричный: # 00FF00 — RGB: 0, 255, 0) |
ПРУЖИНА ЗЕЛЕНАЯ (Hex: # 00FF7F — RGB: 0, 255, 127) |
CYAN (шестнадцатеричный: # 00FFFF — RGB: 0, 255, 255) |
AZURE (шестнадцатеричный: # 007FFF — RGB: 0, 127, 255) |
СИНИЙ (шестнадцатеричный: # 0000FF — RGB: 0, 0, 255) |
ФИОЛЕТОВЫЙ (Hex: # 7F00FF — RGB: 127, 0, 255) |
ПУРПУРНЫЙ (шестнадцатеричный: # FF00FF — RGB: 255, 0, 255) |
РОЗА (шестнадцатеричный: # FF007F — RGB: 255, 0, 127) |
Формула разницы в цвете
Формула цветового различия используется для определения «расстояния» между двумя цветами:
Мы можем использовать эту формулу, чтобы узнать, очень ли близки два цвета (небольшая разница).
Python Challenge
Для этой задачи ваша задача — написать скрипт Python, который:
- попросить пользователя ввести цветовой код RGB,
- вычислить разницу между этим цветом и каждым из 12 цветов указанного выше цветового круга,
- выводит имя ближайшего цвета из цветового круга. (Цвет с наименьшей разницей)
План испытаний
Когда ваш код будет готов, выполните следующие тесты, чтобы убедиться, что ваш код работает должным образом:
Тест № | Входные значения / Цветовой код | Ожидаемый результат | Фактический выпуск |
№ 1 | (222, 215, 21) | желтый | |
№ 2 | (201, 45, 139) | Роза | |
№ 3 | (124, 180, 48) | Шартёз Зеленый | |
# 4 | (36, 180, 225) | Лазурный | |
№ 5 | (100, 50, 150) | фиолетовый | |
№ 6 | (200, 100, 50) | оранжевый |
Как работает цветовая кодировка YUV?
ПЗС- или КМОП-сенсор сам по себе не может определять цвет падающего света.В действительности, каждая полость массива пикселей просто определяет интенсивность падающего света, пока активна экспозиция. Он не может различить, сколько в них света каждого конкретного цвета. Но когда к датчику применяется фильтр цветового рисунка, каждый пиксель становится чувствительным только к одному цвету — красному, зеленому или синему. Поскольку человеческий глаз более чувствителен к зеленому свету, чем к красному и синему свету, он имеет положительные эффекты, матрица имеет в два раза больше зеленых, чем красных или синих датчиков. На следующих изображениях показано цветовое распределение и расположение фильтра «Шаблон Байера» на датчике размером x * y (где x и y кратны 2).
Поскольку расположение цветов в фильтре шаблона Байера известно, приложение может использовать переданную необработанную информацию о пикселях для интерполяции полной информации о цвете RGB для каждого пикселя в датчике камеры. Вместо передачи необработанной информации о пикселях также часто используется группа цветового кодирования, известная как YUV. На приведенной ниже блок-схеме показан процесс преобразования в цветной камере Basler, которая поддерживает эту функцию. Для простоты мы предполагаем, что датчик собирает пиксельные данные с глубиной 8 бит.
В качестве первого шага алгоритм вычисляет полные значения RGB для каждого пикселя. Это означает, например, что даже если пиксель чувствителен только к зеленому свету, камера получает полную информацию RGB для пикселя путем интерполяции информации об интенсивности из соседних красных и синих пикселей. Это, конечно, лишь приближение к реальному миру. Существует множество алгоритмов для интерпретации RGB, и сложность и время вычисления каждого алгоритма будут определять качество приближения.Цветные камеры Basler имеют эффективный встроенный алгоритм преобразования RGB.
Недостатком преобразования RGB является завышение объема данных для каждого пикселя. Если один пиксель обычно имеет глубину 8 бит, после преобразования он будет иметь глубину 8 бит на цвет (красный, зеленый и синий) и, таким образом, будет иметь общую глубину 24 бита.
Кодирование YUV преобразует сигнал RGB в компонент интенсивности (Y), который находится в диапазоне от черного до белого, плюс два других компонента (U и V), которые кодируют цвет.Преобразование из RGB в YUV является линейным, происходит без потери информации и не зависит от конкретного оборудования, такого как камера. Стандартные уравнения для выполнения преобразования из RGB в YUV:
Y = 0,299 R + 0,587 G + 0,114 B
U = 0,493 * (B — Y)
V = 0,877 * (R — Y)
дюймов На практике коэффициенты в уравнениях могут немного отличаться из-за динамики датчика, используемого в конкретной камере. Если вы хотите узнать, как выполняется преобразование RGB в YUV в конкретной цветной камере Basler, обратитесь к руководству пользователя камеры, чтобы узнать правильные коэффициенты.Эта информация особенно полезна, если вы хотите преобразовать выходной сигнал цветной камеры Basler из YUV обратно в RGB.
На схеме ниже показано, как можно кодировать цвет с помощью компонентов U и V и как компонент Y кодирует интенсивность сигнала.
Этот тип преобразования также известен как выборка YUV 4: 4: 4. С YUV 4: 4: 4 каждый пиксель получает информацию о яркости и цвете, а «4: 4: 4» указывает соотношение компонентов Y, U и V в сигнале.
Чтобы уменьшить средний объем данных, передаваемых на пиксель, с 24 бит до 16 бит, чаще всего включают информацию о цвете только для каждого другого пикселя. Этот тип выборки также известен как выборка YUV 4: 2: 2. Поскольку человеческий глаз гораздо более чувствителен к интенсивности, чем к цвету, это уменьшение почти незаметно, даже если преобразование представляет собой реальную потерю информации. Цифровой выходной сигнал YUV 4: 2: 2 с цветной камеры Basler имеет глубину, которая варьируется от 24 бит на пиксель до 8 бит на пиксель (для средней битовой глубины 16 бит на пиксель).
Как показано в таблице ниже, когда камера Basler настроена на вывод YUV 4: 2: 2, каждый квадлет данных изображения, передаваемых камерой, будет содержать данные для двух пикселей. K представляет количество пикселей в кадре, а одна строка в таблице представляет квадлет данных, передаваемых камерой.
Для каждого другого пикселя передаются как информация об интенсивности, так и информация о цвете, что приводит к глубине 24 бита для этих пикселей. Для остальных пикселей сохраняется только информация об интенсивности, что дает для них 8-битную глубину.Как видите, средняя глубина на пиксель составляет 16 бит.
На всех цветных камерах Basler вы можете выбирать между режимом вывода, обеспечивающим необработанный выходной сигнал датчика для каждого пикселя, или высококачественным сигналом YUV 4: 2: 2. Некоторые камеры также предоставляют данные RGB / BGR.
Оценка глубины
: основы и интуиция | Дэрил Тан
Глубина важна для 3D Vision
Измерение расстояния относительно камеры остается трудным, но абсолютно важным для открытия таких захватывающих приложений, как автономное вождение, реконструкция 3D-сцены и дополненная реальность.В робототехнике глубина является ключевым условием для выполнения множества задач, таких как восприятие, навигация и планирование.
Создание 3D-карты было бы еще одним интересным приложением, вычисление глубины позволяет нам переносить изображения, снятые из нескольких видов, в 3D. Тогда регистрация и сопоставление всех точек может идеально реструктурировать сцену.
Источник: реконструированная сцена в 3D
Некоторые из сложных проблем, которые необходимо решить, включают сопоставление соответствий , , которое может быть затруднено из-за таких причин, как текстура, окклюзия, неламбертовские поверхности, разрешение неоднозначного решения, где многие 3D-сцены могут фактически дать одно и то же изображение на плоскости изображения i.е. прогнозируемая глубина не уникальна.
Получение информации о расстоянии с камеры очень заманчиво из-за ее относительно низкой стоимости производства и плотного отображения. Распространить эту технологию в массы так же просто, как приобрести уже имеющуюся камеру. На данный момент лучшей альтернативой для определения глубины было бы использование датчика активного диапазона, такого как лидар. Это, естественно, датчик высокой точности, обеспечивающий очень точную информацию о глубине.
После работы над оценкой глубины и, в частности, с применением автономного транспортного средства, это действительно сложно из-за различных причин, таких как окклюзия, динамический объект в сцене и несовершенное стерео соответствие.Для алгоритмов согласования стереозвука самым большим врагом является отражающая, прозрачная, зеркальная поверхность. Например. Лобовое стекло автомобилей часто ухудшает соответствие и, следовательно, оценку. Поэтому большинство компаний по-прежнему полагаются на лидар для надежного определения расстояния. Однако текущая тенденция в стеке восприятия автономных транспортных средств направлена на объединение датчиков, поскольку каждый датчик имеет свою силу в функциях, которые они извлекают. Тем не менее, с момента появления Deep Learning эта область приобрела большую популярность и достигла замечательных результатов.Решению этих вопросов посвящено множество исследований.
В компьютерном зрении глубина извлекается из двух распространенных методологий. А именно, глубина из монокулярных изображений (статических или последовательных) или глубина из стереоизображений с использованием эпиполярной геометрии. Этот пост будет посвящен ознакомлению читателей с глубокой оценкой и проблемами, связанными с ней. Требуется адекватное понимание проективной геометрии камеры.
Читая эту статью, я хотел бы, чтобы вы получили интуитивное понимание восприятия глубины в целом.Дополнительно представлен обзор тенденций и направлений исследований по оценке глубины. Затем мы обсудим некоторые (многие) связанные с этим проблемы.
В следующих постах будут подробно описаны различные алгоритмы оценки глубины, чтобы не утопить вас в деталях!
Рис. 2. Выступает на сетчатку (слева). Проецирование на плоскость изображения (справа)
Давайте начнем с того, как мы, люди, воспринимаем глубину в целом. Это даст нам некоторые ценные сведения об оценке глубины, поскольку многие из этих методов были заимствованы из нашей системы зрения человека.И машинное, и человеческое зрение имеют общие черты в способах формирования изображения (рис. 2). Теоретически, когда световые лучи от источника попадают на поверхность, они отражаются и направляются к задней части нашей сетчатки, проецируя их, и наш глаз обрабатывает их как 2D [1], точно так же, как изображение формируется на плоскости изображения.
Итак, как на самом деле измерить расстояние и понять нашу среду в 3D, когда проецируемая сцена находится в 2D? Например, предположим, что кто-то собирается нанести вам удар, вы инстинктивно знаете, когда вас собираются ударить, и уклоняйтесь от него, когда его кулак оказывается слишком близко! Или, когда вы ведете машину, вы каким-то образом можете определить, когда нажать на педаль акселератора или нажать на тормоз, чтобы сохранить безопасное расстояние вокруг многих других водителей и пешеходов.
Здесь работает механизм: наш мозг начинает рассуждать о входящих визуальных сигналах, распознавая такие закономерности, как размер, текстура и движение сцены, известные как Depth Cues . Информация о расстоянии об изображении отсутствует, но каким-то образом мы можем легко интерпретировать и восстанавливать информацию о глубине. Мы понимаем, какой аспект сцены находится ближе и дальше от нас. Кроме того, эти подсказки позволяют нам рассматривать объекты и поверхности, которые предположительно находятся на плоских изображениях, как трехмерные [1].
Как уничтожить глубину (не человеческое / компьютерное зрение)
Чтобы выделить интересный факт, интерпретация этих сигналов глубины начинается с того, как сцены проецируются на перспективный вид в человеческом зрении и зрении камеры. С другой стороны, ортогональная проекция на вид спереди или сбоку — это такая проекция, которая уничтожает всю информацию о глубине.
Рассмотрим рисунок 3, наблюдатель может определить, какая часть дома ближе к нему, как показано на левом изображении.Однако отличить относительные расстояния от правого изображения совершенно невозможно. Даже фон может лежать в одной плоскости с домом.
Рис. 3. Перспективная проекция (слева). Ортографическая проекция (справа)
В основном есть 4 категории сигналов глубины: статический монокуляр, глубина от движения, бинокулярные и физиологические сигналы [2]. Мы подсознательно пользуемся этими сигналами, чтобы замечательно воспринимать глубину.
Живописные метки глубины
Наша способность воспринимать глубину одиночного неподвижного изображения зависит от пространственного расположения предметов в сцене.Ниже я суммировал некоторые подсказки, которые позволяют нам судить о расстоянии до различных объектов. Вам уже может казаться естественным ежедневное общение с матерью-землей. Надеюсь, не вдаваясь в размышления о различных подсказках.
Фото Матеуса Кампоса Фелипе на Unsplash
Интересное исследование было проведено в Калифорнийском университете в Беркли, и они экспериментально показали, что когда горизонт виден, у нас есть подавляющая тенденция использовать это свойство для быстрого восприятия глубины.Верно ли это для вас, когда вы просматриваете изображение выше?
Признаки глубины от движения (Параллакс движения)
Рис. 5. Параллакс движения
Это не должно удивлять вас. Когда вы, как наблюдатель, находитесь в движении, вещи вокруг вас проходят быстрее, чем то, что находится дальше. Чем дальше что-то появляется, тем медленнее оно уходит от наблюдателя.
Признаки глубины от стереозрения (бинокулярный параллакс)
Неравномерность сетчатки : Еще один интересный случай, который дает нам возможность распознавать глубину, что можно интуитивно понять из простого эксперимента.
Рис. 6. Источник
Поместите указательный палец перед собой как можно ближе к лицу с одним закрытым глазом. Теперь несколько раз закройте один и откройте другой. Заметил, что твой палец двигается! Разница во взгляде, наблюдаемая вашим левым и правым глазом, известна как несоответствие сетчатки . Теперь протяните палец на расстоянии вытянутой руки и выполните то же действие. Вы должны заметить, что изменение положения ваших пальцев становится менее очевидным. Это должно дать вам некоторое представление о том, как работает стереозрение.
Это явление известно как стереопсис ; способность воспринимать глубину из-за 2-х разных точек зрения на мир.Сравнивая изображения сетчатки двух глаз, мозг вычисляет расстояние. Чем больше разница, тем ближе к вам объекты.
Цель оценки глубины — получить представление пространственной структуры сцены, восстанавливая трехмерную форму и внешний вид объектов на изображениях. Это также известно как обратная задача [3], в которой мы стремимся восстановить некоторые неизвестные, учитывая недостаточную информацию для полного определения решения. Это означает, что сопоставление между 2D-видом и 3D не является уникальным (рис. 12). В этом разделе я расскажу о классических методах стерео и методах глубокого обучения.
Так как же машины на самом деле воспринимают глубину? Можем ли мы как-то перенести некоторые из обсуждаемых выше идей? Самый ранний алгоритм с впечатляющим результатом начинается с оценки глубины с помощью стереозрения еще в 90-х годах. Большой прогресс был достигнут в алгоритмах плотного стереосоответствия [4] [5] [6]. Исследователи смогли использовать геометрию, чтобы ограничить и воспроизвести идею стереопсиса математически и в то же время в режиме реального времени. Все эти идеи были обобщены в данной статье [7].
Что касается оценки глубины с помощью монокуляра, то в последнее время она стала набирать популярность благодаря использованию нейронных сетей для изучения представления, которое напрямую определяет глубину [8]. Глубинные подсказки неявно изучаются с помощью градиентных методов. Помимо этого, был достигнут большой прогресс в самостоятельной оценке глубины [9] [10] [11]. что особенно интересно и новаторски! В этом методе модель обучается предсказывать глубину посредством оптимизации прокси-сигнала. В тренировочном процессе не требуется никаких ярлыков.Большинство исследований используют геометрические подсказки, такие как многовидовая геометрия или эпиполярная геометрия, для изучения глубины. Мы коснемся этого позже.
Оценка глубины со стереозрения
Рис. 7. Эпиполярная геометрия (слева). Исправленные изображения (справа)
Основная идея решения проблемы глубины с помощью стереокамеры включает концепцию триангуляции и совпадения стереофонического . Формальное решение зависит от хорошей калибровки и выпрямления , чтобы ограничить проблему, чтобы ее можно было моделировать на 2D-плоскости, известной как эпиполярная плоскость , , что значительно сокращает последнюю до поиска линии вдоль эпиполярной линии (рис. ) . Более подробная техническая информация об эпиполярной геометрии будет обсуждена в следующей публикации.
Аналогично бинокулярному параллаксу, как только мы сможем сопоставить пиксельные соответствия между двумя видами, следующая задача — получить представление, которое кодирует различия. Это представление известно как несоответствие , d. Чтобы получить глубину из несоответствия, формулу можно составить из похожих треугольников (рис. 8).
Рис. 8. Стереогеометрия.
Этапы следующие:
- Определите похожие точки из дескрипторов признаков.
- Сопоставление соответствия признаков с помощью функции сопоставления стоимости.
- Используя эпиполярную геометрию, найдите и сопоставьте соответствие в одном кадре изображения другому. Функция стоимости согласования [6] используется для измерения несходства пикселей
- Вычислить несоответствие на основе известного соответствия
d = x1 - x2
, как показано на рисунке 8. - Вычислить глубину на основе известного несоответствия
z = (f * b) / d
Рис. 9. Представление диспаратности от Китти
Возраст глубокого обучения
Глубокое обучение отлично справляется с задачами восприятия и познания высокого уровня, такими как распознавание, обнаружение и понимание сцены.Восприятие глубины попадает в эту категорию и также должно быть естественным путем вперед. В настоящее время существует 3 широких подхода к изучению глубины:
Обучение с учителем : основополагающая работа по оценке глубины непосредственно из монокулярного изображения началась с Саксены [8]. Они научились регрессировать глубину непосредственно из монокулярных сигналов в 2D-изображениях посредством обучения с учителем, минимизируя потери регрессии. С тех пор было предложено много разновидностей подходов для улучшения обучения представлению, предлагая новые архитектуры или функции потерь.
Самоконтрольная оценка глубины с использованием структуры SFM: Этот метод формулирует проблему как обучение для создания нового представления из видео. последовательность.Задача нейронной сети состоит в том, чтобы сгенерировать целевой ракурс I_t
из исходного ракурса, сделав изображение на другом временном шаге I_t-1, I_t + 1
и применив изученное преобразование из сети поз для выполнения деформации изображения. Обучение стало возможным благодаря тому, что синтез деформированного изображения стал рассматриваться как контроль дифференцированным образом с использованием пространственной трансформаторной сети [14]. Во время вывода CNN глубины предсказывает глубину на основе одного изображения RGB (рис. 10). Я бы порекомендовал вам прочитать эту статью, чтобы узнать больше.Обратите внимание, что у этого метода есть некоторые недостатки, такие как невозможность определения масштаба и моделирования движущихся объектов, описанных в следующем разделе.
рис. 10. Неконтролируемая оценка глубины монокуляра
Самоконтрольная оценка глубины монокуляра с использованием Stereo : Еще один интересный подход. Здесь (рис. 11), вместо того, чтобы использовать последовательность изображений в качестве входных данных, модель будет предсказывать диспропорции d_l, d_r
только от левого RGB, I_l
. Подобно описанному выше методу, сеть пространственного преобразователя искажает пару изображений RGB I_l, I_r
, используя диспаратность.Напомним, что x2 = x1 - d
. Таким образом, парное представление может быть синтезом, и потеря восстановления между восстановленными видами I_pred_l, I_pred_r
и целевыми видами I_l, I_r
используется для наблюдения за обучением.
Для того, чтобы этот метод работал, предполагается, что базовая линия должна быть горизонтальной и известной. Пара изображений должна быть исправлена, чтобы преобразование через несоответствие было точным. Таким образом, расчет d = x1 - x2
выполняется, как на рис. 8.
Рис. 11.Самоконтролируемая оценка глубины монокуляра с использованием стерео сигналов глубины
CNN и предвзятого изучения
Понимание и расшифровка черного ящика является постоянным исследованием в области интерпретируемого машинного обучения. В контексте оценки глубины в нескольких работах началось исследование, на какие сигналы глубины опирается нейронная сеть или на какие индуктивные смещения извлекаются из определенного набора данных.
В новаторской работе Тома и др., ICCV 2019, они проводят несколько простых тестов, чтобы экспериментально найти связь между предполагаемой глубиной и структурой сцены.Обратите внимание, что это сделано для набора данных Kitti, который представляет собой уличную дорожную сцену с фиксированным положением камеры и имеет несколько видимую точку схода и линию горизонта.
Источник
Положение объектов относительно точки контакта с землей предоставляет точную контекстную информацию. : Для объектов на дороге, увеличивая положение автомобиля в вертикальном направлении. Мы видим, что модель не может хорошо оценить глубину, когда она находится дальше от земли.
Источник: тень под объектом как важная особенность для оценки глубины
Форма не имеет значения, но тень имеет значение : В другом эксперименте, поместив произвольный объект с искусственно отбрасываемой тенью, модель могла бы разумно оценить глубину, даже если это не так. доступно во время обучения.
Интересная работа была проделана Рене и др., TPAMI 2020, где они обучили глубинную модель на относительно крупномасштабном наборе данных, состоящем из внутренних и наружных сцен. При наблюдении возникает естественная предвзятость, когда нижняя часть изображения всегда закрыта для камеры. Это можно увидеть как режим отказа в верхнем правом примере на изображении ниже. Вдобавок глубинная модель имеет тенденцию предсказывать контент, а не распознавать его как отражение в зеркале в нижнем левом корпусе. В статье можно найти много других интересных находок.
Источник
Проведенные исследования пока весьма ограничены. Чтобы получить более убедительные результаты, потребуется много работы.
Наконец, давайте попробуем разобраться в некоторых фундаментальных проблемах оценки глубины. Основная проблема заключается в проецировании трехмерных видов на двухмерные изображения, при которых теряется информация о глубине. Другая проблема зарождается, когда есть движущиеся и движущиеся объекты. Мы рассмотрим их в этом разделе.
Некорректная оценка глубины
Часто при проведении исследований по оценке глубины с помощью монокуляра многие авторы упоминают, что проблема оценки глубины по одному изображению RGB является некорректной обратной задачей.Это означает, что многие наблюдаемые в мире 3D-сцены действительно могут соответствовать одной и той же 2D-плоскости (рис. 11 и 12).
Рис. 12. Источник
Некорректно: неоднозначность масштаба для оценки глубины монокуляра
Напомним, что регулировка фокусного расстояния пропорционально масштабирует точки на плоскости изображения. Теперь предположим, что мы масштабируем всю сцену X с некоторым коэффициентом k
и в то же время масштабируем матрицы камеры P с коэффициентом 1 / k
, проекции точек сцены на изображении остаются точно тот же
x = PX = (1 / k) P * (kX) = x
То есть, мы никогда не сможем восстановить точный масштаб реальной сцены только по изображению!
Обратите внимание, что эта проблема существует для методов монокулярной базы, поскольку масштаб может быть восстановлен для стереосистемы с известной базовой линией.
Неправильная поза: неоднозначность проекции
Предположим, мы выполняем геометрическое преобразование сцены, возможно, что после преобразования эти точки будут отображаться в одно и то же место на плоскости. В очередной раз оставляя нас с такими же трудностями. См. Рисунок ниже
Как заменяемое компьютерное оборудование ускоряет науку
Майкл Райзер, как он выразился, «фанатичен в отношении выбора времени». Нейробиолог из исследовательского кампуса Джанелия при Медицинском институте Говарда Хьюза в Эшберне, Вирджиния, Рейзер изучает зрение мух.Некоторые из его экспериментов включают размещение мух на иммерсивной арене виртуальной реальности и плавное перерисовку сцены, отслеживая реакцию насекомых. Современные ПК с их сложными операционными системами и многозадачными центральными процессорами (ЦП) не могут гарантировать требуемую временную точность. Итак, Райзер вместе с инженерами Sciotex, технологической фирмы в Ньютаун-Сквер, штат Пенсильвания, нашел часть вычислительного оборудования, которая могла бы: ПЛИС.
ПЛИС, или программируемая вентильная матрица, по сути является «электронной грязью», — говорит Бруно Леви, ученый-компьютерщик и директор исследовательского центра Inria Nancy Grand-Est в Виллер-ле-Нанси, Франция.Это набор сотен или даже миллионов ненастроенных логических элементов на кремниевом чипе, который, как и глина, можно «формовать» — и даже повторно формовать — для ускорения приложений, начиная от геномного выравнивания и заканчивая обработкой изображений и глубоким обучением.
Предположим, что исследователь должен быстро обработать данные, передаваемые с камеры, фрагментами по 1000 бит. Большинство современных процессоров имеют 64-битные процессоры, и поэтому проблема должна быть разбита на более мелкие части. Но можно настроить FPGA для выполнения этих вычислений за один шаг, — говорит специалист по информатике Inria Nancy Сильвен Лефевр.Даже если каждый шаг FPGA медленнее, чем его аналог ЦП, «это на самом деле победа, вы работаете быстрее», — говорит он, потому что проблема не решена. Он добавляет, что FPGA превосходно подходят для приложений, требующих точного времени, алгоритмов, критичных к скорости или низкого энергопотребления.
Хавьер Серрано, менеджер по разработке электроники и низкоуровневого программного обеспечения в CERN, европейской лаборатории физики элементарных частиц недалеко от Женевы, Швейцария, и его коллеги использовали FPGA, а также White Rabbit — индивидуальное расширение сетевого протокола Ethernet — для создания системы который может улавливать нестабильности в пучке частиц Большого адронного коллайдера с точностью до наносекунды.
В университете Квинс в Белфасте, Великобритания, специалист по компьютерному оборудованию Роджер Вудс создает систему оптоволоконной камеры, которая использует FPGA для обработки мультиспектральных изображений коронарных артерий, достаточно быстрой для использования во время операции. А в Janelia старший научный сотрудник Чунтао Дан создал систему визуализации с обратной связью, которая может интерпретировать и реагировать на расположение крыльев мух, когда они бьют каждые 5 миллисекунд. По словам Дэн, в операционной системе Microsoft Windows временное дрожание составляет до 30 миллисекунд.Но с использованием ПЛИС «мы выполнили весь анализ за 145 микросекунд», что означает, что временное разрешение никогда не является проблемой, несмотря на ограничения обычного компьютера.
ПЛИС конфигурируются с использованием языка описания оборудования (HDL), такого как VHDL или Verilog, с помощью которого исследователи могут реализовать что угодно, от мигающих светодиодов до полноценного ЦП. Другой вариант — Silice, язык с синтаксисом типа Си, который Лефевр, который разработал, привязал к Verilog. Какой бы HDL ни использовался, инструмент синтеза преобразует его в список логических элементов, а инструмент размещения и маршрутизации сопоставляет их с физическим чипом.Результирующий поток битов затем записывается на FPGA.
Код конфигурации, или шлюз, как его называет Серрано, не обязательно сложно написать. Но это требует иного мышления, чем традиционное программирование, — говорит Улоф Киндгрен, директор и соучредитель британского фонда Free and Open Source Silicon Foundation. В то время как программный код носит процедурный характер, шлюз носит описательный характер. «Вы описываете, как данные перемещаются между регистрами в вашем проекте за каждый тактовый цикл, что не так, как думает большинство разработчиков программного обеспечения», — говорит Киндгрен.В результате даже опытные в вычислениях исследователи могут захотеть проконсультироваться со специалистом, чтобы выжать из своих проектов максимальную скорость.
Технология FPGA появилась в середине 1980-х годов, но улучшения в программном обеспечении для проектирования сделали ее все более доступной. Xilinx (принадлежит производителю микросхем AMD) и Altera (принадлежит производителю микросхем Intel) доминируют на рынке, и обе предлагают инструменты разработки и микросхемы различной сложности и стоимости. Также существует несколько инструментов с открытым исходным кодом, в том числе Yosys (инструмент синтеза) и nextpnr (место и маршрут), разработанные компьютерным ученым Клэр Вольф, главным техническим директором венской компании-разработчика программного обеспечения YosysHQ.Лефевр советует начать с готовой к использованию платы FPGA, которая включает в себя память и периферийные устройства, такие как порты USB и HDMI. Xilinx PYNQ, который можно программировать с использованием Python, а также открытое оборудование iCEBreaker и ULX3S — хорошие варианты.
Сотрудники Райзера из Sciotex использовали FPGA от National Instruments, базирующейся в Остине, Техас, которую они запрограммировали, используя графическую среду кодирования LabVIEW компании. По словам Райзера, оборудование, включая компоненты для сбора данных, стоит около 5 000 долларов США.Но с его помощью он получил свой ответ: мухи могут реагировать на движущиеся объекты в их поле зрения примерно в два раза быстрее, чем люди, как он обнаружил. Для доказательства этого предела требовалось отображение, на котором его команда могла обновляться в десять раз быстрее, чем реакции, которые они исследовали. «Нам нравится точность во времени», — говорит Райзер. «Это делает нашу жизнь намного проще».
4. Пиксели и изображения — практическое компьютерное зрение с помощью SimpleCV [Книга]
В предыдущих главах был представлен широкий обзор работы с
фреймворк SimpleCV, включая способы захвата изображений и их отображения.Пришло время погрузиться в полную картину рамок,
начиная с более глубокого изучения изображений, цвета, рисунка и введения
к функции обнаружения. В этой главе мы подробно расскажем об уровне работы.
с отдельными пикселями, а затем перейти на более высокий уровень базового изображения
манипуляции. Неудивительно, что изображения являются центральным объектом любого видения.
система. Они содержат все сырье, которое затем сегментируется,
извлечены, обработаны и проанализированы. Чтобы понять, как извлечь
информация из изображений, в первую очередь важно понять компоненты
компьютеризированного изображения.В частности, в этой главе подчеркивается:
Пиксели — это основные строительные блоки цифрового изображения. Пиксель — это то, что мы называем цветом
или значения освещенности, которые занимают определенное место на изображении. Думайте об изображении как о большой сетке,
с каждым квадратом в сетке, содержащим один цвет или пиксель. Эту сетку иногда называют
битовая карта. Изображение с разрешением 1024 × 768 представляет собой сетку с 1024 столбцами и 768 строками,
что, следовательно, содержит 1024 × 768 = 786 432 пикселя. Зная, сколько пикселей в изображении
не указывает физические размеры изображения.То есть один пиксель не
приравнивается к одному миллиметру, одному микрометру или одному нанометру. Вместо этого, насколько «большой» пиксель
будет зависеть от настройки пикселей на дюйм (PPI) для этого изображения.
Каждый пиксель представлен числом или набором чисел, а диапазон этих чисел
называется глубиной цвета или битовой глубиной. Другими словами, глубина цвета указывает на максимальную
количество потенциальных цветов, которые можно использовать в изображении. 8-битная глубина цвета использует числа
0–255 (или 8-битный байт) для каждого цветового канала в пикселе.Это означает изображение 1024 × 768 с
одноканальный (черный и белый) 8-битная глубина цвета создаст изображение размером 768 КБ. Большинство изображений
сегодня используют 24-битный цвет или выше, позволяя использовать три числа от 0 до 255 на канал. Это увеличило
объем данных о цвете каждого пикселя означает, что изображение 1024 × 768 займет 2,25 МБ. Как
в результате этих существенных требований к памяти большинство форматов файлов изображений не хранят
попиксельная информация о цвете. Файлы изображений, такие как GIF, PNG и JPEG, используют разные формы.
сжатия для более эффективного представления изображений.
Большинство пикселей бывает двух видов: оттенки серого и цветные. В оттенках серого
изображение, каждый пиксель имеет только одно значение, представляющее значение света,
где ноль — черный, а 255 — белый. Большинство цветных пикселей имеют три
значения, представляющие красный, зеленый и синий (RGB). Другое без RGB
схемы представления существуют, но наиболее популярным форматом является RGB. В
каждый из трех цветов представлен одним байтом или значением от 0 до 255,
который указывает количество данного цвета.Обычно они сочетаются
в триплет RGB в формате (красный, зеленый, синий)
. Например, (125, 0,
означает, что в пикселе есть красный, зеленый и синий,
125)
представляющий оттенок пурпурного. Вот некоторые другие распространенные примеры:
-
Красный: (255, 0, 0)
-
Зеленый: (0, 255, 0)
-
Синий: (0, 0, 255)
-
Желтый : (255, 255, 0)
-
Коричневый: (165, 42, 42)
-
Оранжевый: (255, 165, 0)
-
Черный: (0, 0, 0)
-
Белый: (255, 255, 255)
Запоминание этих кодов может быть трудным.Чтобы упростить это,
класс Color
включает в себя множество
предопределенные цвета. Например, чтобы использовать бирюзовый цвет вместо того, чтобы
чтобы знать, что это RGB (0, 128, 128), просто используйте:
из SimpleCV import Color # Простой способ получить значения триплета RGB для бирюзового цвета. myPixel = Color.TEAL
Аналогичным образом, чтобы найти значения RGB для известного цвета:
из SimpleCV import Color # Печать (0, 128, 128) print Color.TEAL
Обратите внимание на соглашение, согласно которому все названия цветов записываются во всех
КОЛПАЧКИ.Чтобы получить зеленый цвет, используйте Color.GREEN
. К
получить красный цвет, используйте цвет . КРАСНЫЙ
. Большинство из
доступны стандартные цвета. Для тех читателей, кто иначе не стал бы
угадайте, что Color.PUCE
— встроенный
цвет — это оттенок красного — просто введите help
в приглашении оболочки SimpleCV, и он перечислит все
Цвет
доступные цвета. Многие функции включают параметр цвета, а цвет
важный инструмент для сегментации изображений. Было бы целесообразно взять
момент и просмотрите предопределенные цветовые коды, предоставляемые SimpleCV
рамки.
После того, как эти предварительные этапы пройдены, пришло время погрузиться в
работа с самими изображениями. В этом разделе рассказывается, как выглядят цветные пиксели.
собраны в изображения и как работать с этими изображениями внутри
Фреймворк SimpleCV.
Под капотом изображение представляет собой двумерный массив
пикселей. Двумерный массив похож на лист миллиметровой бумаги: там
— заданное количество единиц по вертикали и заданное количество единиц по горизонтали.
единицы. Каждый квадрат проиндексирован набором из двух чисел: первое число
представляет горизонтальную строку для этого квадрата, а второе число —
вертикальный столбец.Возможно, неудивительно, что строка и столбцы
проиндексированы по их координатам x
и y
.
Этот подход, называемый декартовой системой координат, должен быть
интуитивно понятный, основанный на предыдущем опыте работы с графиками по математике в средней школе
курсы. Однако компьютерная графика сильно отличается от традиций.
важный путь. В обычных графических приложениях исходная точка
(0, 0)
находится в нижнем левом углу.
В приложениях компьютерной графики (0,
баллов находится в верхней части
0)
левый угол.
Поскольку пиксели изображения также находятся в сетке, это очень просто
для отображения пикселей в двумерный массив. Изображение с низким разрешением в
Рисунок 4-1
цветка демонстрирует индексацию пикселей. Обратите внимание, что пиксели
с нулевым индексом, что означает, что верхний левый угол находится на (0, 0)
, а не на (1,
.
1)
Информация для отдельного пикселя может быть извлечена из
изображение точно так же, как и отдельный элемент массива указывается в
Python.В следующих примерах показано, как извлечь пиксель (120, 150)
из изображения
Портрет алебардера картина, как показано
на Рисунке 4-2.
из SimpleCV import Image img = Изображение ('jacopo.png') # Получает информацию о пикселе, расположенном в # координата x = 120 и координата y = 150 пиксель = img [120, 150] пиксель печати
Рисунок 4-1. Пиксели и координаты. Обратите внимание, что (0, 0) находится в верхнем левом углу
угол
Рисунок 4-2.Портрет алебардщика — Якопо Понтормо
Значение пикселя станет
.
триплет RGB для пикселя (120,
. В итоге
150) отпечатков
возвращает
пиксель (242.0, 222.0,
.
204,0)
Следующий пример кода делает то же самое, но использует
функция getPixel ()
вместо
индекс массива. Это более объектно-ориентированное программирование
подход по сравнению с извлечением пикселя непосредственно из
множество.
из SimpleCV import Image img = Изображение ('jacopo.png') # Использует getPixel () для получения информации о найденном пикселе # при координате x = 120 и координате y = 150 пиксель = img.getPixel (120, 150) print pixel
Tip
Хотите, чтобы значение пикселя в оттенках серого было в цветном изображении? Скорее
чем преобразовать все изображение в оттенки серого, а затем вернуть
пиксель, используйте getGrayPixel (x,
.
у)
Доступ к пикселям по их индексу иногда может создавать проблемы.В приведенном выше примере
попытка использовать img [1000, 1000]
выдаст ошибку, и
img.getPixel (1000, 1000)
выдаст предупреждение, потому что
изображение всего 300 × 389. Поскольку индексы пикселей начинаются с нуля, а не с единицы, размеры
должен находиться в диапазоне от 0 до 299 по оси x и от 0 до 388 по оси y. Чтобы избежать таких проблем, как
для этого используйте свойства width
и height
изображения, чтобы найти его размеры. Например:
из SimpleCV import Image img = Изображение ('jacopo.png ') # Распечатать высоту изображения в пикселях # Напечатает 300 напечатать img.height # Распечатать ширину изображения в пикселях # Напечатает 389 print img.width
Помимо извлечения триплетов RGB из изображения, он также
возможно изменить изображение с помощью триплета RGB. Следующий пример
будет извлекать пиксель из изображения, обнуляя зеленый и синий
компоненты, сохраняя только красное значение, а затем верните его в
изображение.
из SimpleCV import Image img = Изображение ('jacopo.png ') # Получить триплет RGB из (120, 150) (красный, зеленый, синий) = img.getPixel (120, 150) # Меняем цвет пикселя + img [120, 150] = (красный, 0, 0) img.show ()
-
По умолчанию каждый пиксель возвращается как кортеж красного,
зеленый и синий компоненты. (Глава 5 охватывает
об этом подробнее.) Здесь удобно хранить каждое отдельное значение
в собственной переменной с соответствующим названиемкрасный
,зеленый
исиний
. -
Теперь вместо использования исходного значения зеленого и синего,
они установлены на ноль. Сохраняется только исходное значение красного.
Этот эффект продемонстрирован на Рисунке 4-3:
Рисунок 4-3. Слева — изображение с новым красным пикселем; справа — а
увеличенный вид измененного пикселя
Поскольку был изменен только один пиксель, трудно увидеть
разница, но теперь пиксель на уровне (120,
— темно-красный цвет.Чтобы было удобнее видеть, измените размер
150)
изображение до пятикратного его предыдущего размера с помощью функции resize ()
.
из SimpleCV import Image img = Изображение ('jacopo.png') # Получаем пиксель и меняем цвет (красный, зеленый, синий) = img.getPixel (120, 150) img [120, 150] = (красный, 0, 0) # Измените размер изображения, чтобы оно было в 5 раз больше исходного размера bigImg = img.resize (img.width * 5, img.height * 5) bigImg.show ()
Чем больше изображение, тем лучше видно только красное.
пиксель, который изменился.Обратите внимание, однако, что в процессе изменения размера
изображения, единственный красный пиксель интерполируется, что приводит к дополнительному красному цвету в
соседние пиксели, как показано на рисунке 4-4.
Рисунок 4-4. Исходный красный пиксель после изменения размера
Прямо сейчас это выглядит как случайное развлечение с пикселями без фактического
цель. Однако извлечение пикселей — важный инструмент при попытке
находить и извлекать предметы похожего цвета. Большинство этих уловок
рассматривается позже в книге, но для быстрого ознакомления с тем, как это
В следующем примере рассматривается цветовое расстояние других пикселей.
по сравнению с заданным пикселем, как показано на рисунке 4-5.
из SimpleCV import Image img = Изображение ('jacopo.png') # Получить цветовое расстояние всех пикселей по сравнению с (120, 150) расстояние = img.colorDistance (img.getPixel (120, 150)) # Показать полученные расстояния distance.show ()
Рисунок 4-5. Цветовое расстояние по сравнению с пикселем в (100, 50)
Блок кода выше показывает следующую важную концепцию с изображениями:
масштабирование. В приведенном выше примере ширина и высота были
поменял взяв img.height
и
изм.ширина
параметров и умножение
их на 5. В следующем случае вместо ввода новых размеров
функция scale ()
изменит размер
изображение с одним параметром: коэффициентом масштабирования. Например,
следующий код изменяет размер изображения в пять раз от его исходного размера.
из SimpleCV import Image img = Изображение ('jacopo.png') # Масштабировать изображение в 5 раз bigImg = img.scale (5) bigImg.show ()
Осторожно
Обратите внимание, что в предыдущем
Примеры.Функция resize ()
принимает два аргумента, представляющих новые измерения. Функция scale ()
принимает только один аргумент.
с коэффициентом масштабирования (во сколько раз больше или меньше, чтобы
изображение). При использовании параметра resize ()
функция и соотношение сторон (отношение ширины к высоте)
изменения, это может привести к забавным растягиваниям на картинке, так как
продемонстрировано в следующем примере.
из SimpleCV import Image img = Изображение ('jacopo.png ') # Измените размер изображения, сохранив исходную высоту, # но удвоение ширины bigImg = img.resize (img.width * 2, img.height) bigImg.show ()
В этом примере изображение растягивается по ширине,
но высота не изменяется, как показано на Рисунке 4-6. Чтобы решить эту проблему, используйте адаптивный
масштабирование с помощью адаптивной шкалы adaptiveScale ()
функция. Будет создано новое изображение с запрошенными размерами.
Однако вместо того, чтобы нарушить пропорции исходного изображения, он
добавит отступ.Например:
из SimpleCV import Image # Загрузить изображение img = Изображение ('jacopo.png') # Измените размер изображения, но используйте функцию + adaptiveScale () + для сохранения # пропорции исходного изображения AdaptiveImg = img.adaptiveScale ((img.width * 2, img.height)) AdaptorImg.show ()
Рисунок 4-6. Бедный алебардир прибавил в весе
Как вы можете видеть на Рисунке 4-7 в получившемся изображении, исходные пропорции сохранены,
с содержимым изображения, помещенным в центр изображения, а отступы
добавлены вверху и внизу изображения.
Рисунок 4-7. Размер изменен с помощью адаптивного масштабирования
Примечание
Функция adaptiveScale ()
принимает кортеж размеров изображения, а не отдельные x
и y
аргументы. Следовательно, двойные круглые скобки.
Адаптивное масштабирование особенно полезно при попытке установить стандартный размер изображения на
коллекция разнородных изображений. В этом примере создаются миниатюрные изображения размером 50 × 50 в
Каталог называется эскизов .
из SimpleCV import ImageSet из ОС импортировать mkdir # Создайте локальный каталог с именем миниатюры для хранения изображений mkdir ("эскизы") # Загружаем файлы в текущий каталог set = ImageSet (".") для img в наборе: print "Thumbnailing:" + img.filename # Масштабировать изображение до версии +50 x 50+ самого себя, # а затем сохраните его в папке эскизов img.adaptiveScale ((50, 50)). save ("эскизы /" + img.filename) print "Готово с эскизами. Показ слайд-шоу." # Создайте набор изображений из всех миниатюрных изображений thumbs = ImageSet ("./ эскизы /") # Показать пользователю набор миниатюрных изображений thumbs.show (3)
Функция adaptiveScale ()
имеет дополнительный параметр, соответствует
,
по умолчанию это правда. Когда подходит,
— это
true, функция пытается максимально масштабировать изображение, а
добавление отступов для обеспечения пропорциональности. Когда соответствует
ложно, вместо заполнения вокруг
изображение, чтобы соответствовать новым размерам, вместо этого оно масштабирует его таким образом
что наименьший размер изображения соответствует желаемому размеру.Затем это
обрежет больший размер, чтобы полученное изображение по-прежнему соответствовало
пропорциональный размер.
Последний вариант масштабирования — это функция embiggen ()
(см. Рис. 4-8). Этот
изменяет размер изображения, добавляя отступы по бокам, но делает
не изменять исходное изображение. В некоторых других программах для редактирования изображений это
эквивалентно изменению размера холста без изменения
изображение. Функция embiggen ()
принимает
три аргумента:
-
Кортеж с шириной и высотой
изображение. -
Цвет заполнения вокруг изображения. От
по умолчанию это черный цвет. -
Кортеж положения исходного изображения на большом
холст. По умолчанию изображение центрируется.
из SimpleCV import Image, Color img = Изображение ('jacopo.png') # Embiggen изображение, поместите его на зеленый фон, в правом верхнем углу emb = img.embiggen ((350, 400), Color.GREEN, (0, 0)) emb.show ()
Рисунок 4-8.Эмбигментированное изображение с измененным цветом и положением
Предупреждение
Функция embiggen ()
выдаст предупреждение, если
пытаясь встроить изображение в меньший набор размеров. Например, изображение 300x389
нельзя встроить в изображение размером 150 × 200
изображение.
Во многих приложениях для обработки изображений только часть изображения
действительно важно. Например, в приложении камеры видеонаблюдения
может случиться так, что только дверь — и идет ли кто-нибудь или уходит — из
интерес.Обрезка ускоряет программу, ограничивая обработку
«Область интереса», а не все изображение. SimpleCV
framework имеет два механизма обрезки: функция crop (),
и фрагмент Python.
обозначение.
Image.crop ()
занимает четыре
аргументы, представляющие обрезаемую область. Первые два — это
координаты x и y для верхнего левого угла области, которая будет
обрезаны, а последние два — ширина и высота области, которую нужно
обрезано.
Например, чтобы вырезать только бюст на картинке, вы можете использовать следующий код. Полученное изображение показано на рисунке 4-9:
из SimpleCV import Image img = Изображение ('jacopo.png') # Обрезка, начиная с + (50, 5) + для области шириной 200 пикселей и высотой 200 пикселей cropImg = img.crop (50, 5, 200, 200) CropImg.show ()
Рисунок 4-9. Обрезка до уровня груди на изображении
При выполнении кадрирования иногда удобнее указать
в центре интересующей области, а не в верхнем левом углу.Чтобы обрезать изображение от центра, добавьте еще один параметр, по центру = True
, и результат будет показан на
Рисунок 4-10.
из SimpleCV import Image img = Изображение ('jacopo.png') # Обрезать изображение, начиная с центра изображения cropImg = img.crop (img.width / 2, img.height / 2, 200, 200, по центру = True) CropImg.show ()
Рисунок 4-10. Изображение с кадрированием по центру
Области кадрирования также можно определить по характеристикам изображения. Многие из этих
функции будут рассмотрены позже в книге, но вкратце
введено в предыдущих главах.Как и другие функции, SimpleCV
рамки можно обрезать вокруг капли. Например, обнаружение больших двоичных объектов также может
найдите туловище на картинке.
из SimpleCV import Image img = Изображение ('jacopo.png') blobs = img.findBlobs () img.crop (blobs [-1]). show ()
-
Это позволит найти капли на изображении.
-
Функция
findBlobs ()
возвращает капли в порядке возрастания их размера. Это будет рассмотрено
более подробно в следующих главах.В этом примере это означает
бюст — самая большая капля.
После кадрирования изображение должно выглядеть, как на Рисунке 4-11.
Рисунок 4-11. Обрезанное изображение с использованием капель
Функция кадрирования также реализована для функций Blob
, поэтому приведенный выше код также может быть
написано следующим образом. Обратите внимание на то, что функция crop ()
вызывается непосредственно на
объект blob вместо объекта изображения.
из SimpleCV import Image img = Изображение ('jacopo.png ') blobs = img.findBlobs () # Функция кадрирования вызывается непосредственно для объекта blob blobs [-1] .crop (). show ()
Для поклонников Python также можно выполнить кадрирование с помощью
непосредственно манипулируя двумерным массивом изображения. Физическое лицо
пиксели могут быть извлечены, рассматривая изображение как массив и
указав координаты (x, y)
.
Python также может извлекать диапазоны пикселей. Например, img [start_x: end_x, start_y: end_y]
предоставляет
обрезанное изображение из (start_x, start_y)
на номер (end_x, end_y)
.Не включая
значение для одной или нескольких координат означает, что граница
изображение будет использоваться как начальная или конечная точка. Так что что-то вроде img [:, 300:]
работает. Это выберет все
значения x
и все значения y
, превышающие 300. В
По сути, любая функция Python для извлечения подмножеств массивов будет
также работают для извлечения частей изображения и, таким образом, возврата нового изображения.
Из-за этого изображения можно обрезать, используя нотацию фрагментов Python.
вместо функции кадрирования:
из SimpleCV import Image img = Изображение ('jacopo.png ') # Обрезанное изображение шириной 200 пикселей и высотой 200 пикселей, начиная с (50, 5). cropImg = img [50: 250,5: 205] CropImg.show ()
Примечание
При использовании нотации среза укажите начальное и конечное положения.
При использовании кадрирования укажите начальную координату, ширину и
высота.
При написании приложения технического зрения принято считать, что
камера расположена под прямым углом для просмотра изображения, а верхняя часть
изображение «вверх». Однако иногда камеру держат под углом к
объект или не ориентирован прямо на изображение.Это может усложнить
анализ изображений. К счастью, иногда это можно исправить поворотами,
ножницы и перекосы.
Самая простая операция — повернуть изображение так, чтобы оно
правильно ориентирован. Это достигается с помощью функции rotate ()
, для которой требуется только один
аргумент, угол
. Это значение является
угол в градусах, чтобы повернуть изображение. Отрицательные значения угла
повернуть изображение по часовой стрелке, положительные значения повернуть его
против часовой стрелки.Чтобы повернуть изображение на 45 градусов
против часовой стрелки:
из SimpleCV import Image img = Изображение ('jacopo.png') # Повернуть изображение против часовой стрелки на 45 градусов rot = img.rotate (45) rot.show ()
Полученное повернутое изображение показано на Рисунке 4-12.
Рисунок 4-12. Изображение повернуто на 45 градусов влево
Обычно поворот означает вращение вокруг центральной точки.
Однако можно выбрать другую ось вращения, пропустив
аргумент точка
параметр.Этот
параметр является кортежем (x, y)
координата новой точки вращения.
из SimpleCV import Image img = Изображение ('jacopo.png') # Повернуть изображение вокруг координат + (16, 16) + rot = img.rotate (45, точка = (16, 16)) rot.show ()
Повернутое изображение показано на Рисунке 4-13. Обратите внимание, что изображение было обрезано во время поворота.
Рисунок 4-13. Поворот вокруг (16, 16)
Обратите внимание, что при повороте изображения часть изображения падает
вне исходных размеров изображения, этот раздел обрезается.В
rotate ()
функция имеет параметр
называется , фиксированный
, чтобы контролировать это. Когда
фиксировано
установлено в false, алгоритм
вернет изображение с измененным размером, где размер изображения установлен на
включить все изображение после поворота.
Например, чтобы повернуть изображение без обрезки
углы:
из SimpleCV import Image img = Изображение ('jacopo.png') # Поверните изображение, а затем измените его размер, чтобы содержимое не обрезалось rot = img.повернуть (45, фиксированное = Ложь) rot.show ()
Изображение головокружительной алебарды показано на рис. 4-14.
Рисунок 4-14. Вращение с изменением размера холста по размеру всего
image
Примечание
Даже при определении точки поворота, если параметр fixed
имеет значение false, изображение будет
по-прежнему вращаться вокруг центра. Дополнительная обивка вокруг
изображение существенно компенсирует альтернативный поворот
точка.
Наконец, для удобства изображение можно одновременно масштабировать
что он повернут.Это делается с помощью параметра масштаба . Значение параметра
коэффициент масштабирования, аналогичный функции масштабирования.
из SimpleCV import Image img = Изображение ('jacopo.png') # Поверните изображение так, чтобы оно было вдвое меньше rot = img.rotate (90, масштаб = 0,5) rot.show ()
Подобно вращению, изображение также можно перевернуть
горизонтальная или вертикальная ось (рисунок 4-15). Это
сделано с помощью функции flipHorizontal ()
и
flipVertical ()
функций.Чтобы перевернуть
изображение по его горизонтальной оси:
из SimpleCV import Image img = Изображение ('jacopo.png') # Переворачиваем изображение по горизонтальной оси и затем отображаем результаты flip = img.flipHorizontal () flip.show ()
Рисунок 4-15. Зеркальное отображение картины Якопо Понтормо
В следующем примере применяется горизонтальный переворот для создания веб-камеры.
действовать как зеркало, возможно, чтобы вы могли проверить свои волосы или нанести
макияж с помощью ноутбука.
из SimpleCV import Camera, Display cam = Камера () # Захваченное изображение просто используется для согласования размера дисплея с размером камеры disp = Display ((cam.getProperty ('ширина'), cam.getProperty ('высота'))) пока disp.isNotDone (): cam.getImage (). flipHorizontal (). save (disp)
Обратите внимание, что переворот — это не то же самое, что поворот на 180 градусов.
Рисунок 4-16
демонстрирует разницу между переворотами и поворотами.
Рисунок 4-16. Слева: исходное изображение; В центре: изображение повернуто на 180 градусов;
Справа: изображение перевернуто по вертикали
Изображения или части изображения иногда искажаются, чтобы получилось
вписывается в другую форму.Типичный пример этого — наложение изображения
поверх квадратного объекта, рассматриваемого под углом. При просмотре
квадратный объект под углом, углы квадрата больше не кажутся
быть 90 градусов. Вместо этого, чтобы выровнять квадратный объект по размеру этого
угловое пространство, его края необходимо подогнать. Под капотом это
выполнение аффинного преобразования, хотя это чаще называется
ножницы.
Совет
Сложная часть при выполнении деформации — это нахождение всех координат (x, y)
.Используйте Camera.live ()
и щелкните изображение, чтобы помочь
найти координаты перекоса.
Для демонстрации стрижки можно использовать следующий блок кода.
установить Пизанскую башню (см. рис. 4-17). Конечно, это делает другое здание
на картинке кончик слишком левый, но некоторые люди никогда не
счастливый.
из SimpleCV import Image img = Изображение ('pisa.png') corners = [(0, 0), (450, 0), (500, 600), (50, 600)] прямо = img.сдвиг (углы) Straight.show ()
-
Это список угловых точек для срезанного изображения. Исходное изображение 450
х 600 пикселей. Чтобы закрепить башню, правые нижние углы смещены на 50 пикселей в сторону
правильно. Обратите внимание, что точки для новой формы передаются по часовой стрелке, начиная с
из верхнего левого угла. -
Затем просто вызовите функцию
shear ()
, передав список новых
угловые точки для изображения.
Рисунок 4-17. Слева: оригинальная падающая башня; Справа: отремонтированная версия
башня
Помимо обрезки изображения можно деформировать, используя
функция warp ()
. Искажение также требует
массив угловых точек как его параметры. Подобно стрижке, это
используется для растягивания изображения и размещения его в непрямоугольном пространстве.
Примечание
Сдвиг сохранит пропорции изображения. Как таковой,
иногда фактические угловые точки корректируются алгоритмом.Напротив, деформация может растянуть изображение так, чтобы оно вписалось в любой новый
форма.
Все хотят быть на телевидении, но в следующем примере:
теперь любой может иметь шанс быть на ТВ и идти
назад во времени. Дерзкие могут даже назвать это «искажением времени»…
из SimpleCV import Camera, Image, Display tv_original = Изображение ("family.png") tv_coordinates = [(285, 311), (367, 311), (368, 378), (286, 376)] tv_mask = Изображение (tv_original.size ()). invert (). warp (tv_coordinates) tv = tv_original - tv_mask cam = Камера () disp = Показать (tv.size ()) # Пока окно открыто, продолжайте обновлять обновления # телевизор с изображениями с камеры пока disp.isNotDone (): bwimage = cam.getImage (). grayscale (). resize (tv.width, tv.height) on_tv = tv + bwimage.warp (tv_coordinates) on_tv.save (disp)
-
Это изображение, которое мы будем использовать в качестве фона. Изображение
снятое с веб-камеры, будет помещено поверх телевизора. -
Это координаты углов
телевидение. -
Изображение (tv_original.size ())
создает новое изображение того же размера, что и исходное телевизионное изображение.
По умолчанию это полностью черное изображение. Функция инвертирования делает это
белый. Затем функция деформации создает белую искривленную область в
в середине, на основе координат, ранее определенных для телевизора.В
Результатом является Рисунок 4-18. -
Теперь телевизор удаляется с помощью вычитания изображения.
Этот трюк будет более подробно рассмотрен в следующей статье.
глава. -
Теперь сделайте снимок с камеры. Чтобы соответствовать
черно-белое фоновое изображение, преобразуйте его в оттенки серого. В
кроме того, поскольку это изображение будет добавлено к фоновому изображению, оно
необходимо изменить размер, чтобы он соответствовал фоновому изображению. -
Наконец, сделайте еще одну деформацию, чтобы изображение с камеры соответствовало
в телевизионную область изображения. Затем это добавляется к
фоновое изображение (Рисунок 4-19).
Рисунок 4-18. Маска для телевизионного изображения: белая там, где стоит телевизор, и черная.
в противном случае
Рисунок 4-19. Пример вывода из этого примера с нашим красивым автором книги
появляется на экране телевизора
Всегда предпочтительнее контролировать реальное освещение и
окружающая среда, чтобы добиться максимального качества изображения.Однако даже в
в лучшем случае изображение будет содержать шум на уровне пикселей. Тот
шум может затруднить обнаружение деталей на изображении, поэтому
важно очистить его. Это работа морфологии.
Многие морфологические функции работают с цветными изображениями, но их легче всего увидеть в действии
при работе с бинарным (2-х цветным) изображением. Бинарный буквально означает, что изображение черное и
белый, без оттенков серого. Чтобы создать двоичное изображение, используйте функцию binarize ()
:
из SimpleCV import Image img = Изображение ('jacopo.png ') imgBin = img.binarize () imgBin.show ()
Результат показан на рисунке 4-20. Обратите внимание, что он чисто черно-белый (без серого).
Рисунок 4-20. Картина Якопо, преобразованная в двоичную форму
Всякий раз, когда изображение преобразовано в двоичную форму, системе необходимо знать, какие
пиксели преобразуются в черный, а затем в белый. Это называется
«Порог» и любой пиксель, в котором значение оттенков серого попадает под
порог изменен на белый. Любой пиксель выше порога изменяется
в черный.По умолчанию платформа SimpleCV использует метод, называемый
Метод Оцу для динамического определения двоичных значений. Тем не мение,
функция binarize также принимает значение параметра от 0 до 255. В
В следующем примере кода показано использование бинаризации на нескольких
уровни:
из SimpleCV import Image img = Изображение ('деревья.png') # Использование метода Оцу otsu = img.binarize () # Укажите низкое значение низкий = img.binarize (75) # Укажите высокое значение высокий = img.binarize (125) img = img.изменить размер (img.width * .5, img.height * .5) otsu = otsu.resize (otsu.width * .5, otsu.height * .5) low = low.resize (low.width * .5, low.height * .5) high = высокий размер (высокая ширина * 0,5, высокая высота * 0,5) top = img.sideBySide (otsu) bottom = low.sideBySide (высокий) комбинированный = top.sideBySide (bottom, side = "bottom") Combined.show ()
Рисунок 4-21 демонстрирует выходные данные этих четырех различных пороговых значений.
Рисунок 4-21. Вверху слева: исходное изображение; e Вверху справа: бинаризовано с помощью Оцу.
метод; Внизу слева: нижнее пороговое значение; Внизу справа: высокий порог
значение
После преобразования изображения в двоичный формат четыре
общие морфологические операции: дилатация, эрозия, вскрытие и
закрытие.Дилатация и эрозия концептуально похожи. С расширением,
любые пиксели фона (черный), которые касаются пикселя объекта (белый)
превращаются в пиксель белого объекта. Это приводит к тому, что
объекты большего размера и объединение соседних объектов вместе. Эрозия делает
противоположный. Любые пиксели переднего плана (белые), которые касаются фона
пиксель (черный) преобразуется в пиксель черного фона. Это делает
объект меньше, потенциально разбивая большие объекты на более мелкие
единицы.
В качестве примеров в этом разделе рассмотрим случай перфорированной доски.
с инструментами. Небольшие отверстия в перфорированной доске могут затруднить обнаружение функций
алгоритмы. Такие уловки, как морфология, могут помочь очистить изображение. В
Первый пример показывает расширение изображения. В частности, обратите внимание, что после
бинаризация, некоторые части инструментов пропали там, где
был слепящий взгляд. Чтобы попытаться вернуть их, воспользуйтесь дилатацией, чтобы заполнить некоторые из
недостающие части.
из SimpleCV import Image img = Image ('pegboard.png ') # Сделайте бинаризованное изображение черно-белым. imgBin = img.binarize () # Показать эффекты dilate () на изображении imgBin.dilate (). show ()
Обратите внимание на рис. 4-22, что, хотя это заполнило некоторые пробелы в инструментах,
дырки в перфорированной доске росли. Это противоположно желаемому эффекту. К
Избавьтесь от дырок, используйте эрозию ()
функция.
Рисунок 4-22. Слева: исходное изображение В центре: бинаризованное изображение Справа: расширенное
изображение
из SimpleCV import Image img = Image ('pegboard.png ') imgBin = img.binarize () # Как в предыдущем примере, но erode () imgBin.erode (). show ()
Как вы можете видеть на рис. 4-23, это, по сути, имеет противоположный эффект. Это сделало некоторые из
пробелы в изображении хуже, например, с пильным полотном. С другой стороны,
он устранил большинство отверстий на доске для колышков.
Рисунок 4-23. Слева: исходное изображение; В центре: бинаризованное изображение; Справа: размытые
image
В то время как функция dilate ()
помогает заполнить пробелы, а также усиливает некоторый шум.В
напротив, функция erode ()
устраняет кучу шума, но за счет некоторых хороших данных. В
Решение состоит в том, чтобы объединить эти функции вместе. Фактически,
комбинации настолько распространены, что у них есть свои собственные именованные функции:
morphOpen ()
и morphClose ()
. Функция morphOpen ()
разрушает, а затем расширяет
изображение. Этап эрозии устраняет очень мелкие (шумовые) объекты,
затем следует расширение, которое более или менее восстанавливает исходный размер
предметы туда, где они были до эрозии.Это имеет эффект
удаление пятнышек с изображения. Напротив, morphClose ()
сначала расширяет, а затем разрушает
изображение. Расширение сначала заполняет небольшие промежутки между объектами. Если те
промежутки были достаточно малы, дилатация полностью заполняла их, так что
последующая эрозия не приводит к повторному открытию отверстия. Это имеет эффект
заполнение небольших отверстий. В обоих случаях цель — уменьшить количество
шума на изображении.
Например, рассмотрим использование morphOpen ()
на доске объявлений.Это устраняет
много отверстий в перфорированной доске, пока все еще пытаются восстановить некоторые из
повреждение инструментов в результате эрозии, как показано на Рисунке 4-24.
из SimpleCV import Image img = Изображение ('pegboard.png') imgBin = img.binarize () # + morphOpen () + размывает, а затем расширяет изображение imgBin.morphOpen (). show ()
Рисунок 4-24. Слева: исходное изображение; В центре: бинаризованное изображение; Справа: изображение
после morphOpen ()
Хотя это очень помогло, оно все еще оставляет много привязок в
перфорированная доска.Иногда уловка состоит в том, чтобы просто сделать несколько эрозий.
с последующим множественным расширением. Чтобы упростить этот процесс, каждая из функций dilate ()
и erode ()
принимает параметр
представляет количество раз, чтобы повторить функцию. Например,
dilate (5)
выполняет пятикратную дилатацию
раз, как показано на рисунке 4-25.
из SimpleCV import Image img = Изображение ('pegboard.png') # Увеличьте изображение в два раза, чтобы заполнить пробелы noPegs = img.расширять (2) # Затем дважды стереть изображение, чтобы убрать немного шума заполненный = noPegs.erode (2) allThree = img.sideBySide (noPegs.sideBySide (заполнено)) allThree.scale (.5) .show ()
Рисунок 4-25. Слева: исходное изображение; В центре: расширенное изображение; Справа: размытые
после расширения
Примеры в этом разделе демонстрируют как забавное приложение, так и
практическое применение. С другой стороны, он показывает, как делать спиннинг.
эффект с камерой, используя функцию rotate ()
.С практической стороны это
показывает, как срезать объект, рассматриваемый под углом, а затем использовать
исправленное изображение для выполнения основного измерения.
Это очень простой скрипт, который постоянно меняет вывод
камеры. Он непрерывно захватывает изображения с камеры. Это также
постепенно увеличивает угол поворота, отображая его как
хоть видео-поток крутится.
из камеры импорта SimpleCV cam = Камера () display = Display () # Эта переменная сохраняет последнее вращение и используется # в цикле while для увеличения вращения повернуть = 0 при отображении.isNotDone (): повернуть = повернуть + 5 cam.getImage (). rotate (поворот) .save (display)
-
Увеличивает угол поворота на пять градусов. Обратите внимание, что
когда вращение превышает 360 градусов, он автоматически возвращается назад
вокруг. -
Возьмите новое изображение и поверните его на величину, вычисленную в
предыдущий шаг. Затем отобразите изображение.
Второй пример немного практичнее.Объекты измерения описаны в более
подробности позже в этой книге, но этот пример представляет собой общее введение. Основная мысль
заключается в сравнении измеряемого объекта с объектом известного размера. Например, если
объект находится на листе бумаги размером 8,5 × 11 дюймов, относительный размер объектов
можно использовать для вычисления размера. Однако это сложно, если бумага не перпендикулярна
камера. В этом примере показано, как исправить это с помощью функции warp ()
.Изображение на рис. 4-26 используется для измерения
размер небольшого строительного блока на листе бумаги.
Рисунок 4-26. Исходное изображение строительного блока на бумаге
из SimpleCV import Image img = Изображение ('skew.png') # Деформируйте рисунок, чтобы распрямить бумагу corners = [(0, 0), (480, 0), (336, 237), (147, 237)] warped = img.warp (углы) # Найдите каплю, которая представляет бумагу bgcolor = warped.getPixel (240, 115) dist = warped.colorDistance (bgcolor) blobs = dist.инвертировать (). findBlobs () paper = blobs [-1] .crop () # Найдите каплю, которая представляет игрушку toyBlobs = paper.invert (). findBlobs () toy = toyBlobs [-1] .crop () # Используйте соотношение игрушечных блоков и бумаги, чтобы вычислить размер paperSize = paper.width toySize = toy.width print float (toySize) / float (paperSize) * 8,5
-
Это координаты четырех углов листа. А
хороший способ помочь определить угловые точки — использовать SimpleCV
shell для загрузки изображения, а затем используйте изображение.live ()
для его отображения. потом
щелкните левой кнопкой мыши по отображаемому изображению, чтобы найти координаты
бумажные уголки. -
Это деформирует изображение, чтобы края части
бумагу, как показано на Рисунке 4-27. -
Используйте трюк
image.live ()
, чтобы также найти цвет
бумаги. Это упрощает поиск той части изображения, которая является бумагой.
по сравнению с другими фоновыми объектами.На изображении ниже показан результат. Обратите внимание, что бумага
черный, тогда как остальная часть изображения представлена в различных оттенках серого. -
Сделав бумагу черной, ее легче вытащить из
изображение с помощью функции findBlobs ()
функция. -
Затем обрежьте исходное изображение до самого большого двоичного объекта.
(бумага), представленнаяblobs [-1]
. Это создает новый образ, который
это просто бумага. -
Теперь, глядя только на область бумаги, снова используйте функцию
findBlobs
, чтобы найти игрушку.
блокировать. Создайте изображение блока, обрезав его с
бумага. -
Используя соотношение ширины бумаги и игрушечного блока,
в сочетании с тем фактом, что ширина бумаги 8,5 дюймов, вычислить
размер блока, который составляет 1.87435897436, что соответствует
размер объектов 1.875 дюймов.
Обратите внимание, что этот пример лучше всего работает при измерении относительно плоской поверхности.