diff --git a/featureExtraction.py b/featureExtraction.py index 137b43d..866156b 100644 --- a/featureExtraction.py +++ b/featureExtraction.py @@ -21,17 +21,23 @@ def extract_edge_features(frame): def extract_histogram_features(frame, bins=64): """ - Extract histogram features from a frame. + Extract histogram features from a frame with 3 channels. Args: - - frame (ndarray): Image frame. + - frame (ndarray): Image frame with shape (height, width, 3). - bins (int): Number of bins for the histogram. Returns: - ndarray: Normalized histogram feature vector. """ - histogram, _ = np.histogram(frame.flatten(), bins=bins, range=[0, 255]) - return histogram.astype(np.float32) / frame.size + feature_vector = [] + for channel in range(3): + histogram, _ = np.histogram(frame[:,:,channel].flatten(), bins=bins, range=[0, 255]) + normalized_histogram = histogram.astype(np.float32) / frame[:,:,channel].size + feature_vector.extend(normalized_histogram) + + return np.array(feature_vector) + def preprocess_frame(frame): # Check frame dimensions and resize if necessary @@ -41,6 +47,7 @@ def preprocess_frame(frame): # Extract features edge_feature = extract_edge_features(frame) histogram_feature = extract_histogram_features(frame) + histogram_feature_image = np.full((HEIGHT, WIDTH), histogram_feature.mean()) # Convert histogram feature to image-like shape combined_feature = np.stack([edge_feature, histogram_feature_image], axis=-1)