Згортка (обробка зображень)

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

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

Приклади

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

Тотожне відображення [000010000]
Виділення границь [  101  00  010  1]
[0  101410  10]
[1111  81111]
Sharpen [  01  01  51  01  0]
Розмиття квадратом
19[111111111]
Гауссове розмиття
116[121242121]
5×5 Нерізке розмиття
1256[14  641416  24164624476246416  2416414  641]

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

Обчислення згортки

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

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

([abcdefghi]*[123456789])[2,2]=(i1)+(h2)+(g3)+(f4)+(e5)+(d6)+(c7)+(b8)+(a9).

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

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

Див. також

Література

  • Ludwig, Jamie (n.d.), "Image Convolution". Portland State University. http://web.pdx.edu/~jduh/courses/Archive/geog481w07/Students/Ludwig_ImageConvolution.pdf Шаблон:Webarchive
  • 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.

Посилання