/ / Wartości funkcji Conv2 przekraczają 255 przy łączeniu obrazu i okna? - Matlab, przetwarzanie obrazu

Wartości funkcji Conv2 przekraczają 255 w przypadku zawijania obrazu i okna? - matlab, przetwarzanie obrazu

Mam okno o rozmiarze 5 * 5. Obraz o rozmiarze 360 ​​* 300. Kiedy nawiążę dwie używając funkcji.

conv2(image,window,"same");

wartości piksela przekraczają 255. Użyłem poniższego kodu, aby ograniczyć wartość poniżej 255.

 ( conv2(image,window,"same")/sum(sum(window));

Mam 3 pytania wymienione poniżej.

  1. Czy to właściwy sposób postępowania?
  2. Czy funkcja zajmuje się również tym ograniczeniem?
  3. Jakaś alternatywna metoda?

Odpowiedzi:

1 dla odpowiedzi № 1

Aby określić, co zostało powiedziane w komentarzach: Całkowita suma twojego okna

ws = sum(window(:))

jest jak wzmocnienie. Jeśli ws>1, wtedy twój obraz staje się jaśniejszy. Jeśli 0 < ws < 1 Twój obraz stanie się ciemniejszy. Jeśli ws = 0, a następnie otrzymasz obraz, który będzie średnio około zera. Często ma to miejsce w scenariuszach wykrywania krawędzi. Na przykład Operator Sobel ma sumę zero.

Często splot jest wykonywany za pomocąwzmocnienie równe 1, aby oddzielić wzmocnienie od splotu. Ponieważ splot jest operatorem liniowym, nie ma znaczenia, czy okno zostanie podzielone przez ws lub wynikowy obraz.

Aby odpowiedzieć w szczególności na pytania 1 i 3: Zwykłym sposobem jest normalizacja okna. To jest:

window = window ./ sum(window(:)); % Normalize convolution kernel
conv2(image,window,"same");