В настоящее время я выполняю пиксельную классификацию изображения с использованием простых контролируемых классификаторов, реализованных в Scikit-learn
.Изображение сначала преобразуется в вектор с интенсивностью в один пиксель, затем обучение и классификация выполняются следующим образом:
from sklearn.linear_model import SGDClassifier
classifier = SGDClassifier(verbose=True)
classifier.fit(training_data, training_target)
predictions = classifier.predict(test_data)
Проблема с классификацией на основе пикселей заключается в зашумленном характере результирующего изображения.секретное изображение.Чтобы предотвратить это, я хотел использовать Graph Cut (например, реализацию Бойкова-Колмогорова), чтобы учесть пространственный контекст между пикселями.Но значения, которые я нашел в Python ( NetworkX , Graph-tool ) и в C ++ (OpenGM и оригинальная реализация: [1] и [2] ) не показывают, как перейти от изображения к графику, за исключением [2], который находится в matlab, и я не очень хорошо знаком ни с Graph Cut, ни с matlab.
Так что мой вопрос в основном состоит в том, как можно интегрировать срезы графиков в предыдущую классификацию (например, перед обучением или в качестве последующей обработки)?
Я взглянул на алгоритмы графов в Scikit-image
( здесь ), но они работают только на изображениях RGB с дискретными значениями, тогда как мои значения пикселей непрерывны.