22 lines
528 B
Python
22 lines
528 B
Python
from PIL import Image
|
|
import numpy as np
|
|
|
|
|
|
def compute_histogram(
|
|
image: Image.Image | np.ndarray,
|
|
bins: int,
|
|
value_range=(0, 256),
|
|
normalize: bool = True,
|
|
) -> np.ndarray:
|
|
image = np.array(image) if isinstance(image, Image.Image) else image
|
|
|
|
histogram, _ = np.histogramdd(
|
|
image.reshape(-1, 3), bins=bins, range=[value_range, value_range, value_range]
|
|
)
|
|
|
|
histogram = histogram.astype(np.float32)
|
|
|
|
if normalize:
|
|
histogram = histogram / np.sum(histogram)
|
|
|
|
return histogram
|