Фильтр Франджи, работающий как детектор границ

Я пытался извлечь все стебли из изображения растения, используя фильтр Frangi. Я хотел использовать то свойство, что каждый стебель имеет больше характеристик сосуда, чем лист. Используя этот документ в качестве ссылки.

Мое входное изображение это

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

И это мой фрагмент кода Matlab

 options=struct('FrangiScaleRange', [1 3], 'FrangiScaleRatio', 1, 'FrangiBetaOne', 0.5,...
       'FrangiBetaTwo', 2, 'verbose',true,'BlackWhite',true);
      [outIm,whatScale,Direction] = FrangiFilter2D(double(rgb2gray(img2)), options);
      outIm = uint8(outIm/max(outIm(:))*256);

это результат

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

Я знаю, что могут быть другие способы выполнить эту задачу, но мне просто любопытно узнать, почему этот подход не работает.


person Harjatin    schedule 09.02.2016    source источник
comment
Что значит не работает? Мне кажется, фильтр работает идеально.   -  person dasdingonesin    schedule 10.02.2016
comment
Предполагается обнаружение сосудоподобных структур, которые в данном случае должны быть только стеблями. Но фильтр, похоже, работает как детектор краев, подсвечивая и листья. @dasdingonesin   -  person Harjatin    schedule 10.02.2016
comment
Вы действительно читали газету? Алгоритм обнаружения стеблей состоит из 8 шагов. Фильтр Frangi — это только первый шаг. Судя по отфильтрованному изображению, вам также нужно найти лучшие параметры фильтра, чтобы получить удовлетворительные результаты.   -  person dasdingonesin    schedule 10.02.2016
comment
Я читал газету. Если вы видите пошаговые результаты. Вы увидите, что результат в конце на 1-м шаге далеко не тот, который я получаю. Я пробовал играть с параметрами, но не могу подражать результатам, показанным в статье. Я даже пытался использовать те же самые параметры, что и бумага. Но выходное изображение с указанными параметрами трудно узнать. @dasdingonesin   -  person Harjatin    schedule 10.02.2016
comment
Я думаю, что касается фильтра, это сосуды.   -  person AnonSubmitter85    schedule 10.02.2016
comment
Что-то не так с параметрами, которые я выбираю? @dasdingonesin   -  person Harjatin    schedule 11.02.2016


Ответы (2)


С точки зрения фильтра Frangi, ваши стебли и листья похожи на сосуды, как уже обсуждалось, поэтому вы не можете просто использовать выходные данные фильтра, чтобы различать их.

Однако вы можете: (i) выбрать лучшие масштабы (приблизительно соответствующие масштабу структуры, которую вы пытаетесь обнаружить) и (ii) попробовать другие параметры.

Я попробовал, учитывая шкалы 5 10 20 30 и параметры Frangi beta=0.5 и c=100

Франджи экв.

[Frangi et al.: Многомасштабная фильтрация сосудов, MICCAI 1998]

вот что я получил:

Франджи

Масштабируется в логических единицах исходного изображения https://i.stack.imgur.com/s6wuE.jpg, который был преобразован в grey-8bpp в Photoshop.

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

РЕДАКТИРОВАТЬ:

Я просмотрел http://i.stack.imgur.com/eZwxg.png< /а>. Эффект «детектора краев» на ярких листьях связан с тем, что теория Франджи недостаточно подходит для двух измерений:

  • Трехмерное судно: маленькое собственное значение в направлении сосуда, два сильно отрицательных собственных значения в двух других ортогональных направлениях.
  • Двухмерный сосуд: маленькое собственное значение в направлении сосуда, одно сильно отрицательное собственное значение перпендикулярно ему.

и наоборот

  • Трехмерная пластина: одно сильно отрицательное собственное значение, два маленьких.
person mainactual    schedule 15.02.2016
comment
Спасибо за ответ, и я согласен с тем, что эти листья тоже можно рассматривать как сосуды с помощью фильтра. Но если бы вы могли проверить: stackoverflow.com/questions/34971579/. Здесь листья явно похожи на капли, а стебли — на сосуды. Фильтр по-прежнему действует как детектор краев. Если бы вы могли проверить изображение, указанное в ссылке, и дать объяснение. Я был бы рад принять этот ваш ответ. Большое спасибо @mainactual - person Harjatin; 16.02.2016
comment
И где вы реализуете свой фильтр Frangi. Потому что я изо всех сил пытаюсь подражать этим результатам с заданными параметрами в Matlab. @mainactual - person Harjatin; 16.02.2016
comment
Спасибо за ваши идеи. Они действительно полезны. Я с радостью принимаю ваш ответ. Было бы здорово, если бы вы могли поделиться результатами, которые вы получили на этом изображении: i.stack.imgur. com/eZwxg.png. - person Harjatin; 17.02.2016
comment
@HARJATINSINGH, взгляните на i.imgur.com/fe5iXr0.png масштабы 1.5 2 3 (~ радиусы стеблей), beta=0.5, c=50. - person mainactual; 17.02.2016

Фильтр Frangi измеряет, насколько вытянута область изображения, поэтому он обнаруживает сосуды как объекты, которые являются «длинными», а не «кляксами». Пример изображения в статье имеет узкие и прямые стебли (как у вас) и довольно круглые листья (в отличие от ваших). Поскольку листы длиннее и тоньше, чем на бумаге, алгоритмы на первом этапе работают хуже. Ваши варианты:

(a) futz с параметрами (в Matlab, я считаю, что это параметры FrangiAlpha и .FrangiBeta). По умолчанию они установлены на 0,5, я думаю, вам нужно установить их ниже (так что вы должны быть еще длиннее и тоньше, чтобы считаться стеблем).

(b) как сказал @dasdingonesin, в документе много шагов, и шаг фильтра Хафа позже также будет поощрять длинные непрерывные линии в большем масштабе, чем считает фильтр Франджи.

person Robert Pless    schedule 15.02.2016
comment
Если бы вы могли объяснить сбой фильтра Frangi здесь: stackoverflow.com/questions/34971579/ Буду рад принять ваш ответ. - person Harjatin; 16.02.2016