Source code for mirar.processors.utils.mode_masker

"""
Module for filling NaN values into an image
"""

import logging

import numpy as np
from scipy.stats import mode

from mirar.data import ImageBatch
from mirar.processors.base_processor import BaseImageProcessor

logger = logging.getLogger(__name__)


[docs] class ModeMasker(BaseImageProcessor): """ Processor to mask the most common value in an image """ base_key = "modemask"
[docs] def description(self): return "Processor to mask image pixels with very common values"
def _apply_to_images( self, batch: ImageBatch, ) -> ImageBatch: for image in batch: data = image.get_data() n_pixels = data.size mode_value = mode(data[~np.isnan(data)])[0] frac = np.sum(data == mode_value) / n_pixels while frac > 0.0001: data[data == mode_value] = np.nan mode_value = mode(data[~np.isnan(data)])[0] frac = np.sum(data == mode_value) / n_pixels image.set_data(data) return batch