Обнаружение извилистых рек на изображениях


14

У меня есть поверхностей: z i ( x , y ) с измеренным атрибутом (переменной) на каждой поверхности: a i ( x , y ) . Большинство поверхностей будет иметь случайное распределение атрибута по поверхности, но некоторые поверхности (интересные) будут отображать извилистый речной рисунок:NZя(Икс,Y)aя(Икс,Y)

введите описание изображения здесь

Мне нужна ваша помощь в разработке меры, которая скажет нам, какая из поверхностей наиболее вероятно имеет такой рисунок.N

Есть много возможных карт с такой же гистограммой, как показано ниже; поэтому мера должна «вознаграждать» пространственную непрерывность. Чтобы проиллюстрировать это, я создал случайное изображение с почти такой же гистограммой, что и изображение реки: введите описание изображения здесь

Таким образом, статистика изображений аля энтропия может быть только частью решения.

Вот пример изображения без извилистого речного рисунка: введите описание изображения здесь

Мои изображения синтетические (сделаны в Matlab). В реальной жизни изображение без рисунка может иметь несколько большую пространственную непрерывность в виде небольших пятен аналогичного значения.

Вот изображения в оттенках серого:

введите описание изображения здесь введите описание изображения здесь


1
Можете ли вы публиковать реальные изображения (без оси, палитры, гистограммы, чтобы мы могли попробовать разные алгоритмы?). Кроме того: действительно ли «извилистая река» является синусом или может иметь какую-либо форму?
Ники Эстнер

1
Привет, Никки. В моем примере (синтетические данные, сделанные в Matlab) река является синусом. В реальной жизни это "синусоидально"; иногда он расширяется от центральной линии, иногда нет.
Энди

Ответы:


13

Очень простой мерой было бы сравнить каждую строку на изображении с строкой над ней, что позволило бы получить некоторый горизонтальный сдвиг.

Я взломал этот простой алгоритм в Mathematica:

Mean[MapThread[
  Function[{line1, line2},
   Min[Table[Norm[line1 - RotateLeft[line2, shift]], {shift, -5, 5}]]
   ], {s[[2 ;;]], s[[;; -2]]}]]

Он просто берет каждую пару соседних строк, поворачивает одну из строк на -5,5 пикселей и принимает наименьшее евклидово расстояние. Это дает одно евклидово расстояние для каждой пары строк. Я просто беру среднее (но в зависимости от ваших фактических данных усеченное среднее или медиана могут быть более надежными).

Это результаты, которые я получаю для искусственно сгенерированных выборок (Формула: нормализация (случайный шум * (1-фактор) + сигнал * фактор))

введите описание изображения здесь

Если я сопоставлю результат с уровнем сигнала, то алгоритм, похоже, достаточно хорошо измеряет «уровень сигнала извилистой реки»:

введите описание изображения здесь

РЕДАКТИРОВАТЬ : я забыл нормализовать входные образцы. Исправлено, что загружены новые результаты изображения


Хороший ответ. Тем не менее, я думаю, что ваша мера может быть одурачена другой непрерывной кривой, например, прямой линией. Я бы немного улучшил это, изменив последний шаг на подгонку синуса к найденным точкам (x, y) с некоторой амплитудой, фазой и частотой. Тогда амплитуда может служить измерением «силы реки».
Андрей Рубштейн

4

Вы, кажется, находитесь на правильном пути с этой гистограммой. Если это репрезентативное изображение из вашего образца, то эта гистограмма показывает, что изображения, в которых присутствует шаблон меандра, можно обнаружить, просто проверив, содержат ли они значения выше определенного порога.

Кроме этого, вы можете попробовать получить энтропию каждого изображения. Это даст вам одно число на изображение, которое характеризует его случайность. После этого вы можете получить гистограмму энтропий ваших изображений. Если вы уверены, что изображения четко разделены на «абсолютно случайные» и «случайные с меандром» (т.е. менее случайные), то гистограмма энтропий будет бимодальной. Левый режим будет соответствовать изображениям с более низкой энтропией и, следовательно, меньшей случайностью (с большей вероятностью содержать извилистый рисунок) и наоборот для правого режима.

(Кстати, MATLAB включает в себя в соответствующую функцию )

РЕДАКТИРОВАТЬ: В качестве ответа на комментарии OP и последующей загрузки дополнительной информации о проблеме, вот еще один пункт к этому ответу:

Энтропия все равно будет работать, но не простой простой случай без памяти, описанный формулой Шеннона (где предполагается, что каждая выборка временного ряда не зависит от предыдущих).

В качестве более простой альтернативы вы можете попробовать изучить особенности автокорреляции изображения .


Привет А_А. Я думаю, что статистика изображений является частью решения, но нужно как-то взвесить соседние пиксели, чтобы вознаградить пространственную непрерывность (см. Карту «Случайный атрибут» выше).
Энди

Здравствуйте, я согласен и дополнил ответ.
A_A
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.