Базовые алгоритмы обработки изображений

49
Базовые алгоритмы обработки изображений Катаев Александр Ведущий инженер-программист, к.т.н. Алексеев Алексей Инженер-программист Singularis Lab, Ltd.

Upload: others

Post on 09-Apr-2022

60 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Базовые алгоритмы обработки изображений

Базовые алгоритмы обработки изображений

Катаев Александр Ведущий инженер-программист, к.т.н.

Алексеев Алексей Инженер-программист

Singularis Lab, Ltd.

Page 2: Базовые алгоритмы обработки изображений

Найди кота!

15 - 21 августа, Иннополис 2

Page 3: Базовые алгоритмы обработки изображений

ЦВ Е Т

Page 4: Базовые алгоритмы обработки изображений

Зрение человека

Page 5: Базовые алгоритмы обработки изображений

Зрение человека

Page 6: Базовые алгоритмы обработки изображений

Зрение человека

Page 7: Базовые алгоритмы обработки изображений

Зрение человека

Page 8: Базовые алгоритмы обработки изображений

Зрение человека. Сетчатка

110-125 млн палочек (яркость) - пик чувствительности 498нм - 2-3 фотонов достаточно - инерционны - периферическое зрение 6-7 млн колбочек (цвет) - в 100 раз менее чувствительны - менее инерционны - 3 вида:

S 443 нм синий

M 544 нм зелёный

L 570 нм красный

Page 9: Базовые алгоритмы обработки изображений

Чувствительность к спектру

Page 10: Базовые алгоритмы обработки изображений

Кодирование цвета. Цветовая модель LMS

𝐿 = 𝐼 𝜆 𝐿 𝜆 𝑑𝜆

𝑀 = 𝐼 𝜆 𝑀 𝜆 𝑑𝜆

𝑆 = 𝐼 𝜆 𝑆 𝜆 𝑑𝜆

𝐼 𝜆 - интенсивность излучения с длиной волны 𝜆 𝐿 𝜆 , 𝑀 𝜆 , 𝑆 𝜆 -функции спектрального отклика (чувствительность сетчатки к излучению с длиной волны 𝜆)

Page 11: Базовые алгоритмы обработки изображений

Цветовая модель RGB

R=700.0nm G=546.1nm B=435.8nm

Page 12: Базовые алгоритмы обработки изображений

Цветовая модель XYZ

Y – отклик яркости Z – отклик синего (S) X - неотрицательная

Page 13: Базовые алгоритмы обработки изображений

Цветовые (хроматические) координаты xy

x=X/(X+Y+Z) y=Y/(X+Y+Z)

Page 14: Базовые алгоритмы обработки изображений

Цветовой охват

Page 15: Базовые алгоритмы обработки изображений

Аддитивные и субтрактивные цветовые модели

Page 16: Базовые алгоритмы обработки изображений

Цветоразностная модель YCrCb

Page 17: Базовые алгоритмы обработки изображений

Нелинейная модель L*a*b*

Page 18: Базовые алгоритмы обработки изображений

HSV

Page 19: Базовые алгоритмы обработки изображений

Преобразование цвета в OpenCV

• cvtColor(src, dst, code)

– COLOR_BGR2GRAY

– COLOR_BGR2XYZ

– COLOR_XYZ2BGR

– COLOR_BGR2YCrCb

– COLOR_YCrCb2BGR

– COLOR_HSV2BGR

– …..

Page 20: Базовые алгоритмы обработки изображений

Хранение данных

• Целые, 1 байт на канал, от 0 до 255

• Упакованные целые 16 бит (RGB555, RGB565)

• Вещественные, от 4 до 8 байт на канал в диапазоне 0.0 до 1.0 (или до 255.0)

• Логарифмические шкалы (HDR)

• Для HSV: H от 0 до 360 (до 180) S, V от 0 до 255

Page 21: Базовые алгоритмы обработки изображений

Расположение данных в памяти RGB,BGR

R G B R G B R G B R G B R G B R G B X X

R G B R G B R G B R G B R G B R G B X X

R G B R G B R G B R G B R G B R G B X X

R G B R G B R G B R G B R G B R G B X X

R G B R G B R G B R G B R G B R G B X X

R G B R G B R G B R G B R G B R G B X X

R G B R G B R G B R G B R G B R G B X X

Step (stride) = 20 bytes

width = cols = 6 pixels elem size = 3 bytes

image.at<vec3b>(row, col) = vec3b(R,G,B) image.ptr<vec3b>(row)[col) = vec3b(R,G,B) ((char*)image.data) [row * image.step + col * image.elem_size()]

Page 22: Базовые алгоритмы обработки изображений

Расположение данных в памяти RGBA

R G B A R G B A R G B A R G B A R G B A R G B

R G B A R G B A R G B A R G B A R G B A R G B

R G B A R G B A R G B A R G B A R G B A R G B

R G B A R G B A R G B A R G B A R G B A R G B

R G B A R G B A R G B A R G B A R G B A R G B

R G B A R G B A R G B A R G B A R G B A R G B

R G B A R G B A R G B A R G B A R G B A R G B

width = cols = 6 pixels

elem size = 4 bytes

Page 23: Базовые алгоритмы обработки изображений

Работа с каналами (с++)

// Создание трехканальной матрицы Mat image(rows, cols, CV_8UC3); // Запись цвета в 0й канал Image.at<vec3b>(row, col)[0] = 123; //Получение матриц каналов: Mat channels[3]; // Можно vector<Mat> split (image, channels); // работа с данными каналов channels[0].at<byte> (row, col) = 123; //Сборка изображения из матриц каналов merge(channels, image)

Page 24: Базовые алгоритмы обработки изображений

Фильтр Байера

G R G R G R G R

B G B G B G B G

G R G R G R G R

B G B G B G B G

G R G R G R G R

B G B G B G B G

Page 25: Базовые алгоритмы обработки изображений

Кодирование цвета YUV420

Page 26: Базовые алгоритмы обработки изображений

Цветокорекция

I=

H(I)=

Page 27: Базовые алгоритмы обработки изображений

Коррекция контрастности

𝐼𝑐 = 𝛼𝐼 𝛼 – контраст

(contrast, gain)

𝛼=1

𝛼 <1

𝛼 >1

Page 28: Базовые алгоритмы обработки изображений

Коррекция яркости

𝐼𝑐 = 𝛼𝐼 +𝛽 𝛽 – яркость

(brightness, bias)

𝛽=0

𝛽 >0

𝛽 <0

Page 29: Базовые алгоритмы обработки изображений

Коррекция яркости и контрастности

Page 30: Базовые алгоритмы обработки изображений

Гамма коррекция

𝐼𝑐 = 𝐼𝛾

𝛾 = 0,5

𝛾 = 1,0

𝛾 = 2,0

Page 31: Базовые алгоритмы обработки изображений

Обобщенная коррекция яркости/контрастности/цвета

𝐼𝑐 = 𝐹(𝑖)

Page 32: Базовые алгоритмы обработки изображений

Тонирование

Тон 𝐻𝑢𝑒𝑐 = 𝐹(𝐻𝑢𝑒)

Насыщенность 𝑆𝑎𝑡𝑢𝑟𝑎𝑡𝑒𝑐 = 𝐹(𝑆𝑎𝑡𝑢𝑟𝑎𝑡𝑒)

Page 33: Базовые алгоритмы обработки изображений

Look Up Tables (LUT)

𝐼𝑐 = 𝐹(𝐼) где функция 𝐹: [0,255] → 0,255 заменяем на

𝐼𝑐 = 𝐿𝑈𝑇 𝐼 где 𝐿𝑈𝑇 𝑖 = 𝐹 𝑖 , 𝑖 ∈ 0,255 Opencv: void LUT(src, lut, dst, interpolation=0)

Page 34: Базовые алгоритмы обработки изображений

Colormapping

applyColorMap(image, image_c, COLORMAP_JET)

applyColorMap(image, image_c, COLORMAP_AUTUMN)

applyColorMap(image, image_c, COLORMAP_BONE)

Page 35: Базовые алгоритмы обработки изображений

Нормализация

𝐼𝑐 =𝐼 −𝑚𝑖𝑛𝐼

max 𝐼−min 𝐼 * (beta-alpha) + alpha

исходное нормализованное

Page 36: Базовые алгоритмы обработки изображений

Выравнивание гистограммы

исходное выровненное

𝐻′ 𝑖 = 𝐻(𝑗)0≤𝑗<𝑖

𝐼𝑐 = 𝐻′(𝐼)

equalizeHist(I,I)

Page 37: Базовые алгоритмы обработки изображений

Выравнивание гистограммы

Page 38: Базовые алгоритмы обработки изображений

Retinex

исходное retinex

𝐼𝑐 =log 𝐼

log (𝐼 ∗ 𝐺 𝜎 )

𝐼 ∗ 𝐺 𝜎 - свертка по Гауссу (размытие изображения)

Page 39: Базовые алгоритмы обработки изображений

Прозрачность изображений

Mat image = imread(“mario.bmp”); Mat background = imread(“minas.bmp”); Mat mask; compare(image, CV_RGB(255,0,255), mask, CMP_EQ); image.copyTo(background, mask);

Page 40: Базовые алгоритмы обработки изображений

Прозрачность

Page 41: Базовые алгоритмы обработки изображений

Альфа-блендинг

𝐼 = 𝐼𝑎𝛼 + 𝐼𝑏(1 − 𝛼)

Mat alpha=…, Mat image = …, Mat background = … // Подготовка альфа канала std::vector<Mat> channels (3, alpha); merge(channels, alpha); // Альфа-блендинг Mat res = image.mul(alpha,1.0/255) + background.mul(Scalar::all(255)- alpha,1.0/255);

Page 42: Базовые алгоритмы обработки изображений

Композитинг

Page 43: Базовые алгоритмы обработки изображений

Композитинг по Портеру и Дафу

Page 44: Базовые алгоритмы обработки изображений

Композитинг по Портеру и Дафу

СR,pre = f(CA, CB)αAαB + YCAαA(1-αB) + ZCBαB(1-αA) СR = СR,pre / αr

αr= XαAαB+YαA(1-αB)+ZαB(1-αA)

• f(CA, CB) – определяет влияние цвета изображений A и B на результат

• X определяет влияние прозрачности изображений на результат.

• Y определяет влияние цвета и прозрачности изображения А на результат

• Z определяет влияние цвета и прозрачности изображения B на результат

Page 45: Базовые алгоритмы обработки изображений

Оператор f(CA, CB) X Y Z СR αr

clear 0 0 0 0 0 0

src CA 1 1 0 CAαA αA

dst CB 1 0 1 CBαB αB

src-over CA 1 1 1 CAαA+CBαB(1-αA) αA+αB-αAαB

dst-over CB 1 1 1 CR = CBαB + CAαA(1-αB) αA+αB-αAαB

src-in CA 1 0 0 CAαAαB αAαB

dst-in CB 1 0 0 CBαBαA αAαB

src-out CA 0 1 0 CAαA(1-αB) αA(1-αB)

dst-out CB 0 0 1 CBαB(1-αA) αB(1-αA)

src-atop CA 1 0 1 CAαAαB+CBαB(1-αA) αB

dst-atop CB 1 1 0 CBαBαA+CAαA(1-αB) αA

xor 0 0 1 1 CAαA(1-αB)+CBαB(1-αA) αA+αB-2αAαB

Page 46: Базовые алгоритмы обработки изображений

Сегментация, matting, Chroma-key

Page 47: Базовые алгоритмы обработки изображений

grabcut

Page 48: Базовые алгоритмы обработки изображений

Сравнение изображений.

Mean Square Error:

Peak Signal To Noise Ratio: