Proč cv2.GaussianBlur upravit max hodnoty?

0

Otázka

Proč cv2.GaussianBlur upravit max. hodnota v tomto případě?

Zde je příklad kódu:

import numpy as np
import cv2

mask = np.zeros((256, 256, 1), np.uint8)
mask[128:, :] = 255

np.max(mask)
255

mask = cv2.GaussianBlur(mask, ksize=(15, 15), sigmaX=0, sigmaY=0)

np.max(mask)
253

Aktualizace:

Zdá se, že to souvisí s np.uint8 typ, protože v np.float32 je to:

np.max(mask)
255.0
np.max(mask)
255.00002

Aktualizace:

cv2.__version__
'3.4.1'
1
-1

Rozostření obrazu je dosaženo tím, convolving obraz s low-pass filtr, kernel. V případě rozmazání "v Průměru", centrum pixel je nahrazen průměr všech pixelů v rámci jádra oblasti.

Příklad: je-Li jádro 3x3, to znamená, že pixel ve středu jádra bude nahrazen průměrem z 9 pixelů v rámci jádra oblasti.

enter image description here

V případě Gaussova Rozostření Gaussian kernel se používá místo průměrné, ale stále každý pixel nebude zůstat na své maximální hodnoty. Proto byste měli najít maximálně na 255, aby bylo vidět účinek vyhlazování, jak je uvedeno níže:

enter image description here

Odkazy:

  1. Udacity kurzu Profesor Aaron Bobick
  2. OpenCV Vyhlazování Obrázků
2021-11-29 12:57:34

Vaše odpověď je nesprávná pro konkrétní publikováno případě. Test low-pass s vyznačenými vstupního obrázku: mask = np.zeros((256, 256, 1), np.uint8) a mask[128:, :] = 255. V tomto případě je maximální by měla být 255. Také se nepodařilo vysvětlit 255.00002 výsledek.
Rotem

Oceňuji tvůj komentář i když je trochu agresivní. Ano, souhlasím, že pro tento konkrétní obraz maximální bude 255. Z původní vzhled I přesto, že velká hrana na 128 řadě je krutě vyhlazené v důsledku náhlé změny od 0 do 255. Pro float32 jsem souhlasila, že už se váš komentář o nepřesnost a tak jsem se znovu psát.
Sameh Yassin

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................