generated from Hazel/python-project
feat: generating kernel
This commit is contained in:
parent
6126e675f1
commit
f6a774a01f
35
deblur/symetric_kernel.py
Normal file
35
deblur/symetric_kernel.py
Normal file
@ -0,0 +1,35 @@
|
||||
import numpy as np
|
||||
|
||||
|
||||
def generate_kernel(radius, sigma=None):
|
||||
"""
|
||||
Generate a 2D Gaussian kernel with a given radius.
|
||||
|
||||
Parameters:
|
||||
- radius: int, the radius of the kernel (size will be 2*radius + 1)
|
||||
- sigma: float (optional), standard deviation of the Gaussian. If None, sigma = radius / 3
|
||||
|
||||
Returns:
|
||||
- kernel: 2D numpy array of shape (2*radius+1, 2*radius+1)
|
||||
"""
|
||||
size = 2 * radius + 1
|
||||
if sigma is None:
|
||||
sigma = radius / 3.0 # Common default choice
|
||||
|
||||
print(f"radius: {radius}, sigma: {sigma}")
|
||||
|
||||
# Create a grid of (x,y) coordinates
|
||||
ax = np.arange(-radius, radius + 1)
|
||||
xx, yy = np.meshgrid(ax, ax)
|
||||
|
||||
# Apply the 2D Gaussian formula
|
||||
kernel = np.exp(-(xx**2 + yy**2) / (2 * sigma**2))
|
||||
kernel /= 2 * np.pi * sigma**2 # Normalize based on Gaussian PDF
|
||||
kernel /= kernel.sum() # Normalize to sum to 1
|
||||
|
||||
return kernel
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
kernel = generate_kernel(radius=10, sigma=1)
|
||||
print(kernel)
|
Loading…
x
Reference in New Issue
Block a user