logo

Pojęcie splotu

Splot jest używany do wielu rzeczy, takich jak obliczanie pochodnych, wykrywanie krawędzi, stosowanie rozmyć itp., a wszystko to odbywa się za pomocą „jądra splotu”. Jądro splotu jest bardzo małą macierzą i w tej macierzy każda komórka ma liczbę, a także punkt kontrolny.

mójlivecricket w

Punkt kontrolny służy do poznania położenia jądra względem obrazu. Rozpoczyna się w lewym górnym rogu obrazu i przesuwa się sekwencyjnie po każdym pikselu. Jądro nakłada się na kilka pikseli w każdej pozycji obrazu. Każdy nachodzący na siebie piksel jest mnożony, a następnie dodawany. A suma jest ustawiana jako wartość aktualnej pozycji.

Pojęcie splotu

Splot to proces, w którym każdy element obrazu jest dodawany do swoich lokalnych sąsiadów, a następnie jest ważony przez jądro. Jest to związane z formą splotu matematycznego.

W Convolution macierz nie wykonuje tradycyjnego mnożenia macierzy, ale jest oznaczana przez *.

Załóżmy, że istnieją dwie macierze 3x3, jedna to jądro, a druga to fragment obrazu. W splocie wiersze i kolumny jądra są odwracane, a następnie mnożone, a następnie przeprowadzane jest sumowanie. Elementy znajdujące się w centrum matrycy, czyli w [2,2] obrazu, będą ważoną kombinacją matrycy obrazu, a wagi będą nadawane przez jądro. Podobnie wszystkie pozostałe elementy macierzy zostaną zważone i następnie wyliczone zostaną wagi.

Poniżej znajduje się pseudo kod opisujący proces splotu:

jak znaleźć ukryte rzeczy na Androidzie
 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 

Splot można obliczyć za pomocą wielu pętli for. Ale użycie pętli for powoduje wiele powtarzających się obliczeń, a także zwiększa się rozmiar obrazu i jądra. Używając techniki dyskretnej transformaty Fouriera, obliczenie splotu można wykonać szybko. W tej technice cała operacja splotu jest przekształcana w proste mnożenie.

przekonwertuj na ciąg Java

W przypadku splotu problem występuje, gdy jądro znajduje się blisko krawędzi lub narożników, ponieważ jądro jest dwuwymiarowe.

Aby przezwyciężyć te problemy, można wykonać następujące czynności:

  1. Jedne można zignorować
  2. W pobliżu krawędzi można utworzyć dodatkowe piksele.

Dodatkowe piksele można utworzyć w następujący sposób:

  1. Zduplikowany piksel krawędziowy.
  2. Odzwierciedlaj krawędzie
  3. Piksele można skopiować z drugiego końca.