Я пытался научить себя некоторым простым алгоритмам компьютерного зрения и пытаюсь решить проблему, когда у меня есть изображение, искаженное шумом, и все, что я пытаюсь сделать, это отделить черный фон от переднего плана, который имеет некоторый сигнал. Теперь фоновые RGB-каналы не полностью нулевые, поскольку они могут иметь некоторый шум. Однако человеческий глаз может легко отличить передний план от заднего.
Итак, что я сделал, так это использовал алгоритм SLIC, чтобы разбить изображение на суперпиксели. Идея состоит в том, что, поскольку изображение искажено шумом, сбор статистики по патчам может привести к лучшей классификации фона и переднего плана из-за более высокого отношения сигнал-шум.
После этого я получаю около 100 патчей, которые должны иметь похожий профиль, и результат SLIC кажется разумным. Я читал о разрезах графа (статья Колмогорова), и мне показалось, что неплохо попробовать решить бинарную проблему, которая у меня есть. Итак, я построил граф, который является MRF первого порядка, и у меня есть ребра между непосредственными соседями (4-связный граф).
Теперь мне было интересно, какие возможные унарные и бинарные термины я могу использовать здесь для сегментации. Итак, я думал об унарном члене, я могу смоделировать его как простую гауссиану, где фон должен иметь нулевое среднее значение интенсивности, а передний план должен иметь ненулевое среднее значение. Хотя я изо всех сил пытаюсь понять, как это кодировать. Должен ли я просто предположить некоторую дисперсию шума и вычислить вероятности напрямую, используя статистику исправлений?
Аналогичным образом, для соседних патчей я хочу поощрить их использовать аналогичную маркировку, но я не уверен, какой двоичный термин я могу разработать, чтобы отразить это. Кажется, просто разница между меткой (1 или 0) кажется странной...
Извините за многословный вопрос. Надеясь, что кто-то может дать полезный совет о том, как начать.