УДК 004.932OpenCV
ББК 32.972.13
К98
Кэлер А., Брэдски Г.
К98 Изучаем OpenCV 3 / пер. с анг. А. А. Слинкина. – М.: ДМК Пресс, 2017. – 826 с.:
ил.
ISBN 978-5-97060-471-7
В книге приведено описание всей библиотеки OpenCV в ее современном воплощении
на языке C++, включая средства машинного обучения в контексте компьютерного зрения.
OpenCV, насчитывающая свыше 500 функций, используется в самых разных коммерческих
приложениях: охрана, обработка медицинских изображений, распознавание образов
и лиц, робототехника, контроль качества продукции и др. Упражнения в конце каждой главы
помогут проконтролировать усвоение знаний.
Издание предназначено разработчикам, научным сотрудникам, инженерам-робототехникам
и энтузиастам-любителям.
УДК 004.932OpenCV
ББК 32.972.13
Authorized Russian translation of the English edition of Learning OpenCV 3, ISBN 9781491937990
© 2016 Adrian Kaehler, Gary Bradski
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls
all rights to publish and sell the same.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы
то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев
авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность
технических ошибок все равно существует, издательство не может гарантировать абсолютную точность
и правильность приводимых сведений. В связи с этим издательство не несет ответственности
за возможные ошибки, связанные с использованием книги.
ISBN 978-1-491-93799-0 (анг.)
ISBN 978-5-97060-471-7 (рус.)
© 2017 Adrian Kaehler, Gary Bradski
© Оформление, издание, ДМК Пресс, 2017
Стр.5
Содержание
Предисловие.................................................................................................................................16
Глава 1. Общие сведения ...................................................................................................25
Что такое OpenCV? ...........................................................................................................................25
Кто использует OpenCV? ................................................................................................................26
Что такое компьютерное зрение? ............................................................................................26
Истоки OpenCV..................................................................................................................................30
Архитектура OpenCV ..................................................................................................................32
Ускорение OpenCV с помощью IPP .......................................................................................32
Кто является владельцем OpenCV? .......................................................................................33
Скачивание и установка OpenCV ................................................................................................33
Установка .........................................................................................................................................33
Получение самой последней версии OpenCV из Git ............................................................36
Дополнительная документация по OpenCV ............................................................................36
Документация в комплекте поставки ....................................................................................36
Онлайновая документация и вики .........................................................................................36
Репозиторий предоставленного кода OpenCV ........................................................................39
Скачивание и сборка предоставленных модулей ..............................................................40
Переносимость ....................................................................................................................................40
Резюме ...................................................................................................................................................41
Упражнения .........................................................................................................................................41
Глава 2. Введение в OpenCV ............................................................................................42
Включаемые файлы ...........................................................................................................................42
Ресурсы .............................................................................................................................................43
Первая программа – вывод изображения на экран ................................................................43
Вторая программа – видео ..............................................................................................................46
Перемотка вперед и назад ...............................................................................................................47
Простое преобразование ..................................................................................................................51
Не столь простое преобразование ................................................................................................52
Ввод с камеры ......................................................................................................................................54
Запись в AVI-файл .............................................................................................................................55
Резюме ...................................................................................................................................................56
Упражнения .........................................................................................................................................57
Глава 3. Знакомство с типами данных OpenCV ...............................................58
Типы данных OpenCV ......................................................................................................................58
Обзор простых типов ...................................................................................................................59
Простые типы: а теперь детали ................................................................................................60
Вспомогательные типы ...............................................................................................................66
Служебные функции ...................................................................................................................73
Стр.6
6 Содержание
Шаблонные структуры ...............................................................................................................79
Резюме ...................................................................................................................................................80
Упражнения .........................................................................................................................................80
Глава 4. Типы изображений и больших массивов.........................................81
Динамические массивы переменного размера .........................................................................81
Класс cv::Mat: плотные N-мерные массивы .........................................................................81
Создание массива ..........................................................................................................................82
Доступ к отдельным элементам массива ..............................................................................86
N-арный итератор массива: NAryMatIterator .....................................................................89
Доступ к блоку элементов массива .........................................................................................91
Матричные выражения: cv::Mat и алгебра ...........................................................................92
Приведение с насыщением ........................................................................................................93
На что еще способны массивы .................................................................................................94
Класс разреженных массивов cv::SparseMat .......................................................................95
Доступ к элементам разреженного массива .........................................................................96
Функции, уникальные для разреженных массивов ..........................................................98
Шаблонные структуры для типов больших массивов .....................................................99
Резюме ................................................................................................................................................101
Упражнения ......................................................................................................................................101
Глава 5. Операции с массивами................................................................................103
Что еще можно делать с массивами ..........................................................................................103
cv::abs() ..........................................................................................................................................106
cv::absdiff() ....................................................................................................................................106
cv::add() ..........................................................................................................................................106
cv::addWeighted() .......................................................................................................................107
cv::bitwise_and() .........................................................................................................................108
cv::bitwise_not() ..........................................................................................................................109
cv::bitwise_or() ............................................................................................................................109
cv::bitwise_xor() ..........................................................................................................................109
cv::calcCovarMatrix() ................................................................................................................ 110
cv::cartToPolar() ...........................................................................................................................111
cv::checkRange() .......................................................................................................................... 112
cv::compare() ................................................................................................................................. 112
cv::completeSymm() ................................................................................................................... 113
cv::convertScaleAbs() ................................................................................................................. 113
cv::countNonZero() ..................................................................................................................... 114
cv::cvarrToMat() .......................................................................................................................... 114
cv::dct() .......................................................................................................................................... 115
cv::dft() ........................................................................................................................................... 116
cv::cvtColor() ................................................................................................................................ 117
cv::determinant() ......................................................................................................................... 119
cv::divide() .....................................................................................................................................120
cv::eigen().......................................................................................................................................120
Стр.7
Содержание 7
cv::exp() ..........................................................................................................................................121
cv::extractImageCOI() ...............................................................................................................121
cv::flip() ..........................................................................................................................................121
cv::gemm() .....................................................................................................................................121
cv::getConvertElem() и cv::getConvertScaleElem() .........................................................122
cv::idct() .........................................................................................................................................123
cv::idft() ..........................................................................................................................................123
cv::inRange() .................................................................................................................................124
cv::insertImageCOI() .................................................................................................................124
cv::invert() .....................................................................................................................................124
cv::log() ...........................................................................................................................................125
cv::LUT() .......................................................................................................................................125
cv::magnitude() ............................................................................................................................126
cv::Mahalanobis() ........................................................................................................................126
cv::max() .........................................................................................................................................127
cv::mean() ......................................................................................................................................128
cv::meanStdDev() ........................................................................................................................128
cv::merge() .....................................................................................................................................129
cv::min() .........................................................................................................................................129
cv::minMaxIdx() ..........................................................................................................................130
cv::minMaxLoc()..........................................................................................................................131
cv::mixChannels() ........................................................................................................................131
cv::mulSpectrums() .....................................................................................................................133
cv::multiply() ................................................................................................................................133
cv::mulTransposed() ....................................................................................................................133
cv::norm().......................................................................................................................................134
cv::normalize() ..............................................................................................................................135
cv::perspectiveTransform() ........................................................................................................136
cv::phase() ......................................................................................................................................137
cv::polarToCart() .........................................................................................................................137
cv::pow() .........................................................................................................................................138
cv::randu() .....................................................................................................................................138
cv::randn() .....................................................................................................................................139
cv::randShuffle() ..........................................................................................................................139
cv::reduce() ....................................................................................................................................139
cv::repeat() .....................................................................................................................................140
cv::scaleAdd() ...............................................................................................................................141
cv::setIdentity() ............................................................................................................................141
cv::solve() .......................................................................................................................................141
cv::solveCubic() ............................................................................................................................142
cv::solvePoly() ..............................................................................................................................143
cv::sort() .........................................................................................................................................143
cv::sortIdx() ...................................................................................................................................143
cv::split() ........................................................................................................................................144
cv::sqrt() .........................................................................................................................................144
Стр.8
8 Содержание
cv::subtract() .................................................................................................................................145
cv::sum() .........................................................................................................................................145
cv::trace() .......................................................................................................................................146
cv::transform() ..............................................................................................................................146
cv::transpose() ...............................................................................................................................146
Резюме ................................................................................................................................................147
Упражнения ......................................................................................................................................147
Глава 6. Рисование и аннотирование ...................................................................149
Рисование ..........................................................................................................................................149
Линии и залитые многоугольники ......................................................................................149
Шрифты и текст .........................................................................................................................156
Резюме ................................................................................................................................................157
Упражнения ......................................................................................................................................158
Глава 7. Функторы в OpenCV ........................................................................................159
Объекты-работяги ..........................................................................................................................159
Метод главных компонент (cv::PCA) .................................................................................159
Сингулярное разложение (cv::SVD) ...................................................................................162
Генератор случайных чисел (cv::RNG) ...............................................................................164
Резюме ................................................................................................................................................167
Упражнения ......................................................................................................................................167
Глава 8. Изображения, видео и файлы данных ............................................169
HighGUI: переносимый комплект графических инструментов .....................................169
Работа с файлами изображений .................................................................................................170
Загрузка и сохранение изображений ..................................................................................171
Замечание о кодеках ......................................................................................................................172
Сжатие и распаковка......................................................................................................................173
Работа с видео ..................................................................................................................................174
Чтение видео с помощью объекта cv::VideoCapture ......................................................174
Запись видео с помощью объекта cv::VideoWriter .........................................................179
Сохранение данных ........................................................................................................................180
Запись в cv::FileStorage ............................................................................................................180
Чтение из cv::FileStorage .........................................................................................................182
Класс cv::FileNode ......................................................................................................................183
Резюме ................................................................................................................................................185
Упражнения ......................................................................................................................................185
Глава 9. Платформенные и кросс-платформенные окна ....................188
Работа с окнами ...............................................................................................................................188
Платформенный графический интерфейс пользователя в HighGUI .....................189
Работа с библиотекой Qt .........................................................................................................199
Интеграция OpenCV с полнофункциональными библиотеками
для построения GUI ..................................................................................................................208
Стр.9
Содержание 9
Резюме ................................................................................................................................................220
Упражнения ......................................................................................................................................220
Глава 10. Фильтры и свертка .......................................................................................221
Вступление ........................................................................................................................................221
Прежде чем начать ..........................................................................................................................221
Фильтры, ядра и свертка .........................................................................................................221
Экстраполяция рамки и граничные условия ...................................................................222
Пороговые операции ......................................................................................................................225
Метод Оцу ....................................................................................................................................228
Адаптивный порог .....................................................................................................................228
Сглаживание .....................................................................................................................................231
Простое размытие и прямоугольный фильтр ..................................................................231
Медианный фильтр ...................................................................................................................233
Фильтр Гаусса ..............................................................................................................................234
Двусторонний фильтр ..............................................................................................................235
Производные и градиенты ...........................................................................................................237
Оператор Собеля ........................................................................................................................237
Фильтр Шарра ............................................................................................................................239
Лапласиан .....................................................................................................................................240
Морфологические преобразования ..........................................................................................241
Наращивание и эрозия .............................................................................................................242
Общая морфологическая функция ......................................................................................246
Размыкание и замыкание ........................................................................................................246
Морфологический градиент ...................................................................................................249
Верх шляпы и черная шляпа ..................................................................................................251
Создание собственного ядра ..................................................................................................253
Свертка с произвольным линейным фильтром ....................................................................254
Применение общего фильтра с помощью cv::filter2D() ................................................255
Применение общего сепарабельного фильтра с помощью cv::sepFilter2D ............255
Построители ядер ......................................................................................................................256
Резюме ................................................................................................................................................257
Упражнения ......................................................................................................................................257
Глава 11. Преобразования изображений общего вида ........................261
Вступление ........................................................................................................................................261
Растяжение, сжатие, деформирование и вращение ............................................................261
Равномерное изменение размера ..........................................................................................261
Пирамиды изображений ..........................................................................................................263
Неравномерные отображения ...............................................................................................266
Аффинное преобразование .....................................................................................................268
Перспективное преобразование ............................................................................................271
Преобразования общего вида .....................................................................................................275
Полярное преобразование ......................................................................................................275
Лог-полярное преобразование ..............................................................................................276
Стр.10
10 Содержание
Произвольные отображения ..................................................................................................279
Исправление изображений ..........................................................................................................280
Ретуширование ...........................................................................................................................280
Очистка от шума ........................................................................................................................281
Выравнивание гистограммы .......................................................................................................284
Резюме ................................................................................................................................................287
Упражнения ......................................................................................................................................287
Глава 12. Анализ изображений ..................................................................................289
Вступление ........................................................................................................................................289
Дискретное преобразование Фурье ..........................................................................................289
cv::dft(): дискретное преобразование Фурье ....................................................................290
cv::idft(): обратное дискретное преобразование Фурье ................................................292
cv::mulSpectrums(): умножение спектров ..........................................................................292
Свертка с помощью дискретного преобразования Фурье ...........................................293
cv::dct(): дискретное косинусное преобразование ..........................................................294
cv::idct(): обратное дискретное косинусное преобразование .....................................295
Интегральные изображения ........................................................................................................296
cv::integral(): интегральное изображение в виде суммы ...............................................298
cv::integral(): интегральное изображение в виде суммы квадратов ..........................298
cv::integral(): интегральное изображение в виде суммы с наклоном .......................298
Детектор границ Кэнни.................................................................................................................299
cv::Canny() ....................................................................................................................................300
Преобразования Хафа ...................................................................................................................301
Преобразование Хафа для поиска прямых .......................................................................301
Преобразование Хафа для поиска окружностей .............................................................304
Дистанционное преобразование ................................................................................................308
cv::distanceTransform(): непомеченное дистанционное преобразование ................309
cv::distanceTransform(): помеченное дистанционное преобразование ....................309
Сегментация......................................................................................................................................310
Заливка ..........................................................................................................................................310
Алгоритм водораздела ..............................................................................................................313
Алгоритм GrabCut .....................................................................................................................314
Сегментация методом сдвига среднего ..............................................................................316
Резюме ................................................................................................................................................318
Упражнения ......................................................................................................................................318
Глава 13. Гистограммы и шаблоны .........................................................................320
Представление гистограмм в OpenCV ....................................................................................322
cv::calcHist(): создание гистограммы по данным ............................................................323
Базовые операции с гистограммами .........................................................................................325
Нормализация гистограммы ..................................................................................................325
Пороговое отсечение гистограммы ......................................................................................326
Нахождение интервала с наибольшим числом значений ............................................326
Сравнение двух гистограмм ...................................................................................................328
Стр.11
Содержание 11
Примеры использования гистограмм .................................................................................330
Более сложные методы работы с гистограммами ................................................................333
Расстояние землекопа ..............................................................................................................333
Обратное проецирование ........................................................................................................337
Сравнение с шаблоном ..................................................................................................................340
Метод квадратов разностей (cv::TM_SQDIFF) ..............................................................342
Нормированный метод квадратов разностей
(cv::TM_SQDIFF_NORMED) ..............................................................................................342
Метод взаимной корреляции (cv::TM_CCORR) ...........................................................342
Нормированный метод взаимной корреляции
(cv::TM_CCORR_NORMED) ...............................................................................................342
Метод коэффициента корреляции (cv::TM_CCOEFF) ...............................................342
Нормированный метод коэффициента корреляции
(cv::TM_CCOEFF_NORMED) ............................................................................................343
Резюме ................................................................................................................................................345
Упражнения ......................................................................................................................................346
Глава 14. Контуры ..................................................................................................................348
Нахождение контуров ...................................................................................................................348
Иерархии контуров ...................................................................................................................348
Рисование контуров ..................................................................................................................353
Пример программы ...................................................................................................................354
Еще один пример программы ................................................................................................355
Быстрый анализ связных компонент ..................................................................................356
Дополнительные операции над контурами ...........................................................................358
Аппроксимации многоугольников.......................................................................................358
Геометрические и обобщенные характеристики .............................................................360
Геометрические проверки ........................................................................................................365
Сравнение контуров .......................................................................................................................366
Моменты .......................................................................................................................................366
Дополнительные сведения о моментах ..............................................................................367
Моменты Ху и сравнение ........................................................................................................370
Использование контекста для сравнения фигур ............................................................371
Резюме ................................................................................................................................................375
Упражнения ......................................................................................................................................376
Глава 15. Вычитание фона .............................................................................................378
Вступление ........................................................................................................................................378
Недостатки методов вычитания фона .....................................................................................379
Моделирование сцены ..................................................................................................................379
Срез пикселей ..............................................................................................................................380
Вычитание кадров ......................................................................................................................383
Метод усреднения фона ................................................................................................................384
Аккумулирование средних, дисперсий и ковариаций ..................................................389
Более сложный метод вычитания фона ..................................................................................396
Стр.12
12 Содержание
Структуры данных .....................................................................................................................399
Обучение модели фона ............................................................................................................401
Обучение при наличии движущихся объектов на переднем плане .........................403
Вычитание фона: нахождение объектов переднего плана ...........................................404
Использование модели фона на основе кодовой книги ...............................................405
Еще несколько мыслей о моделях на основе кодовой книги ......................................405
Связные компоненты и очистка переднего плана ...............................................................405
Экспресс-тест ..............................................................................................................................408
Сравнение двух методов вычитания фона .............................................................................410
Инкапсуляция вычитания фона в OpenCV ........................................................................... 411
Базовый класс cv::BackgroundSubtractor...........................................................................412
Метод КаеТраКулПонга–Боудена .......................................................................................413
Метод Живковича .....................................................................................................................414
Резюме ................................................................................................................................................416
Упражнения ......................................................................................................................................416
Глава 16. Особые точки и дескрипторы .............................................................418
Особые точки и основы прослеживания ................................................................................418
Нахождение углов......................................................................................................................419
Введение в оптический поток ................................................................................................422
Метод разреженного оптического потока Лукаса–Канаде .........................................424
Обобщенные особые точки и дескрипторы ...........................................................................434
Оптический поток, сопровождение и распознавание ...................................................436
Особые точки и дескрипторы в общем случае .................................................................436
Основные методы обнаружения особых точек ................................................................446
Фильтрация особых точек ......................................................................................................483
Методы сопоставления ............................................................................................................484
Отображение результатов .......................................................................................................490
Резюме ................................................................................................................................................492
Упражнения ......................................................................................................................................492
Глава 17. Сопровождение ..............................................................................................495
Основные понятия ..........................................................................................................................495
Плотный оптический поток ........................................................................................................496
Алгоритм TV-L1 .........................................................................................................................499
Алгоритм Simple Flow ..............................................................................................................502
Алгоритмы сопровождения: сдвиг среднего и Camshift ....................................................506
Метод сдвига среднего .............................................................................................................506
Алгоритм Camshift .....................................................................................................................510
Шаблоны движения .......................................................................................................................510
Оцениватели .....................................................................................................................................517
Фильтр Калмана .........................................................................................................................519
Несколько слов об обобщенном фильтре Калмана .............................................................532
Резюме ................................................................................................................................................534
Упражнения ......................................................................................................................................534
Стр.13
Содержание 13
Глава 18. Модели и калибровка камеры ............................................................536
Модель камеры ................................................................................................................................537
Основы проективной геометрии ..........................................................................................539
Преобразование Родригеса .....................................................................................................541
Дисторсия объектива ................................................................................................................542
Калибровка ........................................................................................................................................545
Матрица поворота и вектор параллельного переноса ...................................................546
Калибровочные доски ..............................................................................................................549
Гомография ...................................................................................................................................555
Калибровка камеры ...................................................................................................................559
Функция калибровки ...............................................................................................................564
Коррекция дисторсии ....................................................................................................................569
Карты коррекции дисторсии ..................................................................................................570
cv::convertMaps(): преобразование различных представлений карты
коррекции дисторсии................................................................................................................571
cv::initUndistortRectifyMap(): вычисление карты коррекции дисторсии ..............572
cv::remap(): коррекция дисторсии изображения .............................................................573
cv::undistort(): коррекция дисторсии ..................................................................................573
cv::undistortPoints(): разреженная коррекция дисторсии ...........................................574
Соберем все вместе .........................................................................................................................574
Резюме ................................................................................................................................................577
Упражнения ......................................................................................................................................578
Глава 19. Проекция и трехмерное зрение ........................................................580
Проекции ...........................................................................................................................................581
Аффинные и перспективные преобразования ......................................................................582
Пример преобразования в вид сверху ................................................................................583
Оценка расположения в пространстве ....................................................................................588
Оценка расположения с помощью одной камеры ..........................................................588
Получение стереоизображений .................................................................................................591
Триангуляция ..............................................................................................................................591
Эпиполярная геометрия ..........................................................................................................596
Существенная и фундаментальная матрица ....................................................................597
Вычисление эпиполярных прямых .....................................................................................605
Стереокалибровка ......................................................................................................................606
Ректификация стереопары .....................................................................................................610
Сопоставление стереоизображений ....................................................................................619
Пример программы калибровки, ректификации и сопоставления
стереоизображений ...................................................................................................................632
Определение структуры по движению ....................................................................................640
Аппроксимация прямой линией на плоскости и в пространстве ..................................641
Резюме ................................................................................................................................................644
Упражнения ......................................................................................................................................644
Стр.14
14 Содержание
Глава 20. Основы машинного обучения в OpenCV .....................................647
Что такое машинное обучение? .................................................................................................647
Обучающие и тестовые данные .............................................................................................648
Обучение с учителем и без учителя.....................................................................................649
Порождающие и дискриминантные модели .....................................................................650
Алгоритмы машинного обучения в OpenCV ...................................................................651
Использование машинного обучения в компьютерном зрении ................................653
Важность переменной ..............................................................................................................655
Диагностика проблем машинного обучения ....................................................................656
Унаследованные функции в библиотеке ML ........................................................................661
Метод K средних ........................................................................................................................661
Расстояние Махаланобиса ......................................................................................................667
Резюме ................................................................................................................................................670
Упражнения ......................................................................................................................................670
Глава 21. StatModel: стандартная модель
машинного обучения в OpenCV ..................................................................................672
Общие средства в библиотеке ML ............................................................................................672
Обучение и структура cv::ml::TrainData .............................................................................674
Прогнозирование .......................................................................................................................680
Алгоритмы машинного обучения на базе cv::StatModel ...................................................681
Наивный байесовский классификатор ...............................................................................681
Двоичные решающие деревья ................................................................................................685
Усиление ........................................................................................................................................696
Случайные деревья ....................................................................................................................703
Алгоритм ожидания-максимизации ....................................................................................707
Метод k ближайших соседей.................................................................................................. 711
Многослойный перцептрон ....................................................................................................713
Метод опорных векторов ........................................................................................................721
Резюме ................................................................................................................................................730
Упражнения ......................................................................................................................................730
Глава 22. Обнаружение объектов ............................................................................734
Методы обнаружения объектов на основе деревьев ...........................................................734
Каскадные классификаторы ..................................................................................................734
Обучение с учителем и теория усиления ..........................................................................737
Обучение на новых объектах .................................................................................................744
Обнаружение объектов методом опорных векторов ..........................................................753
Применение латентного SVM для обнаружения объектов .........................................753
Метод набора слов и семантическая классификация ...................................................755
Обучение с помощью класса cv::BOWTrainer ..................................................................756
Резюме ................................................................................................................................................760
Упражнения ......................................................................................................................................760
Стр.15
Содержание 15
Глава 23. Будущее OpenCV ............................................................................................762
Прошлое и настоящее ....................................................................................................................762
OpenCV 3.x ...................................................................................................................................763
Сбылись ли наши прежние предсказания? ............................................................................764
Будущие функции ..........................................................................................................................764
Текущие работы по программе GSoC .................................................................................766
Вклад со стороны сообщества ................................................................................................768
OpenCV.org ...................................................................................................................................768
Несколько мыслей об искусственном интеллекте ..............................................................769
Послесловие ......................................................................................................................................772
Приложение А. Планарные разбиения ................................................................774
Триангуляция Делоне, диаграммы Вороного ........................................................................774
Создание разбиения Делоне или Вороного ......................................................................777
Обход разбиения Делоне .........................................................................................................778
Примеры ........................................................................................................................................784
Упражнения ......................................................................................................................................785
Приложение В. opencv_contrib ...................................................................................786
Обзор модулей в репозитории opencv_contrib .....................................................................786
Состав opencv_contrib ..............................................................................................................786
Приложение С. Калибровочные шаблоны ........................................................790
Калибровочные шаблоны в OpenCV .......................................................................................790
Список литературы ..............................................................................................................795
Предметный указатель .....................................................................................................808
Об авторах ....................................................................................................................................824
Об иллюстрации на обложке ........................................................................................825
Стр.16