logo

Понятие за навиване

Конволюцията се използва за много неща като изчисляване на производни, откриване на ръбове, прилагане на замъглявания и т.н. и всичко това се прави с помощта на „ядро на конволюция“. Конволюционното ядро ​​е много малка матрица и в тази матрица всяка клетка има число, а също и опорна точка.

Точката на закрепване се използва за познаване на позицията на ядрото по отношение на изображението. Започва в горния ляв ъгъл на изображението и се движи последователно върху всеки пиксел. Ядрото припокрива няколко пиксела на всяка позиция в изображението. Всеки пиксел, който се припокрива, се умножава и след това се добавя. И сумата се задава като стойността на текущата позиция.

Понятие за навиване

Конволюцията е процесът, при който всеки елемент от изображението се добавя към неговите локални съседи и след това се претегля от ядрото. Свързано е с форма на математическа конволюция.

В Convolution матрицата не извършва традиционно умножение на матрици, но се обозначава с *.

Да предположим, че има две 3x3 матрици, едната е ядро, а другата е изображение. При конволюцията редовете и колоните на ядрото се обръщат и след това се умножават и след това се извършва сумиране. Елементите, които присъстват в центъра на матрицата, т.е. в [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 pixelvalue Add result to accumulator Endif Set output image pixel to accumulator 

Конволюцията може да се изчисли с помощта на множество for цикли. Но използването на for цикли причинява много повтарящи се изчисления, а също така размерът на изображението и ядрото се увеличава. С помощта на техниката на дискретно преобразуване на Фурие изчисляването на конволюцията може да се извърши бързо. При тази техника цялата операция на навиване се преобразува в просто умножение.

При конволюцията проблемът възниква, когато ядрото е близо до ръба или ъглите, защото ядрото е двуизмерно.

За да се преодолеят тези проблеми, могат да се направят следните неща:

  1. Единиците могат да бъдат игнорирани
  2. Допълнителни пиксели могат да бъдат създадени близо до краищата.

Допълнителни пиксели могат да бъдат създадени по следните начини:

  1. Дублиран краен пиксел.
  2. Отразете ръбове
  3. Пикселите могат да се копират от другия край.