Згортка (ядро, матриця згортки) — матриця, зазвичай, малих розмірів, що використовується в оброблянні зображень як фільтр для розмиття, підвищення різкості, виділення границь тощо. Оброблення зображення полягає в обчисленні нового значення обраного пікселя з врахуванням значення навколишніх пікселів.

Приклади В залежності від елементів матриці згортка може викликати різні ефекти.

Тотожне відображення Виділення границь Sharpen Розмиття квадратом </small> Гауссове розмиття </small> 5×5 Нерізке розмиття </small>

Це лише декілька прикладів ефектів, досягнутих за допомогою використання згортки.

Обчислення згортки Згортка — це процес додавання кожного елемента зображення до його сусідів, зважених ядром. Важливо зауважити, що виконувана матрична операція — згортка — це не звичайне множення, хоча й позначається *.

Наприклад, якщо ми маємо дві 3х3 матриці, перша — ядро, друга — шматок зображення, згортка — це процес транспонування рядків і стовпчиків ядра з наступним множенням і додаванням. Елемент з координатами [2, 2] (тобто, центральний елемент) отриманого зображення буде зваженою комбінацією всіх елементів матриці зображення, з вагами взятими з ядра:

Значення кожного пікселя у вихідному зображенні рівне сумі добутків значень матриці згортки і відповідних пікселів вхідного зображення. Це можна описати таким псевдокодом: for each image row in input image: for each pixel in image row:

set accumulator to zero

for each kernel row in kernel: for each element in kernel row:

if element position corresponding* to pixel position then multiply element value corresponding* to pixel value add result to accumulator endif

set output image pixel to accumulator

Обробка країв

При застосуванні ядра згортки зазвичай потрібні значення пікселів за межами зображення. Існують різні способи обробки країв зображення.

Розширення Найближчі граничні пікселі концептуально продовжуються настільки, наскільки це потрібно, щоб забезпечити значення для згортки. Кутові пікселі продовжуються клинами з кутом 90°. Інші граничні пікселі продовжуються лініями.

Циклічне повторення Зображення концептуально циклічно замикається (або замощує площину своїми копіями), і значення беруться з протилежного краю чи кута.

Дзеркальне відображення Зображення концептуально дзеркально відбивається на краях. Наприклад, спроба прочитати піксель на 3 одиниці за краєм натомість читає піксель на 3 одиниці всередину від краю.

Обрізання / уникнення виходу за межі Будь-який піксель вихідного зображення, для обчислення якого потрібні були б значення з-за краю, пропускається. Через це вихідне зображення може бути дещо меншим, з обрізаними краями. Ядро розміщують так, щоб значення з-поза зображення ніколи не були потрібні. Приклад: розмір ядра 10×10, розмір зображення 32×32, розмір результату — 23×23.

Обрізання ядра Будь-який елемент ядра, що виходить за межі вхідного зображення, не використовується, а нормалізація коригується для компенсації.

Стале значення Для пікселів за межами зображення використовується стале значення. Зазвичай застосовують чорний, іноді сірий колір; загалом вибір залежить від застосування.

Див. також Гауссове розмиття Оператор Прюітт Оператор Робертса Оператор Собеля Згортка (математичний аналіз)

Література Ludwig, Jamie (n.d.), «Image Convolution». Portland State University. http://web.pdx.edu/~jduh/courses/Archive/geog481w07/Students/Ludwig_ImageConvolution.pdf Lecarme, Olivier; Delvare, Karine (January 2013). The Book of GIMP: A Complete Guide to Nearly Everything. No Starch Press, p. 429, ISBN 978-1593273835. Gumster, Jason van; Shimonski, Robert (March 2012). GIMP Bible. Wiley, pp. 438–442, ISBN 978-0470523971. Stockman, George C.; Shapiro, Linda G. (February 2001). Computer Vision. Prentice Hall, pp. 53–54, ISBN 978-0130307965.

Посилання  — інструкція про те як застосувати згортку до зображення в Gimp