Я создал эту простую функцию на основе scikit-image function :
from skimage import exposure
import numpy as np
def hist_contr_func(image):
'''Function from skimage that corrects the histogram to enhance contrast - "Adaptive equalization" '''
# Line below is needed, because equalize_adapthist works in pixel value range (0,1)
image = image / 255.
h, w = image.shape[:2]
# Line below is required, because equalize_adapthist works on arrays with shape (h,w)
image = np.resize(image, (h,w))
img_adapteq = exposure.equalize_adapthist(image, clip_limit=0.03)
# I back-resize, because keras works with arrays with shape (h,w,channels)
img_adapteq = np.resize(img_adapteq, (h,w,1))
return img_adapteq
Как я могу ускорить функцию? Я думаю, узкое место в exposure.equalize_adapthist
, но также приветствуются улучшения в расчетах изменения размера
Больше, но не существенная информация: я использую функцию для предварительной обработки изображений в кератах:
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
rotation_range=30,
width_shift_range=0.15,
preprocessing_function=hist_contr_func)
Без preprocessing_function=hist_contr_func
Мой скрипт keras работает в 5 раз быстрее. Я также был бы признателен за рекомендации других пакетов, улучшающих контраст, исправляющих гистограмму, которые работают быстрее. Спасибо!