Я полностью застрял в проблеме, касающейся сегментации стеклянных объектов. Мне нужно, чтобы объект был максимально точным. Мои подходы были разные. Сначала я попытался удалить фон, чтобы остались только некоторые четкие контуры. Но это работает только для объектов, которые имеют острые края / градиенты. В противном случае сам объект также удаляется. Я разместил два разных изображения.
Я пытался удалить фон с помощью морфологических операций, таких как расширение оттенков серого и деление на него. но это не сильно помогло. после этого я попытался использовать k-means с k = 3 для отделения модифицированного фона от значений серого и черного цветов стекла. Это не было успешным в некоторых случаях, но не в целом / в среднем. Я также попытался сделать четкое обнаружение краев с помощью фильтра с размытыми краями, но это привело к более слабым результатам в виде открытых контуров, большого количества шума и т. П.
Canny с автоматическим порогом результатов:
testimg = imread('http://i.imgur.com/huQVt.png');
imshow(testimg)
imedges = edge(testimg,'canny');
imshow(imedges);
То же самое касается второго изображения.
Как видите, внутри и снаружи много шума и двойных краев от границы стекла. Даже есть зазоры по краям.
Итак, мне нужны ваши советы для получения общего подхода к решению этой проблемы полупрозрачных материалов, а не только для этих двух изображений.
1) Другие идеи по удалению фона без повреждения объекта?
2) Другие методы сегментации для отделения объекта от фона?
Если это возможно, то с Matlab, IPT или статистическими подсказками. Любые другие советы также приветствуются!
Спасибо за ваш ответ заранее. Искренне
Ответы:
Почему бы просто не использовать простой 2D FFT (guassian) фильтр верхних частот?
Я сделал это очень быстро с помощью MATLAB
Осколок № 1 с использованием высокочастотного БПФ:
То же самое сделано на # 2.
Осколок № 2 с использованием высокочастотного БПФ:
Как вы можете видеть, фон и область стекла стерты, и только края обведены. Я не тратил на это никакого времени, но вы можете ограничить выходной сигнал отфильтрованного HP, чтобы получить более четкие края, или отодвинуть HP выше.
Это больше результатов, которые вы хотите получить?
источник
Это не попытка ответить на весь вопрос, но у меня есть идея «очистить изображение» .
Вы сказали, что уже пробовали морфологические операции , и это вариант идеи, надеюсь, это обновление.
В этой статье: А. Вичик, Р. Кешет, Д. Малах: Самодвойственная морфология полурешеток деревьев и их приложений предлагает способ усиления классических морфологических операторов таким образом, чтобы они могли добавить к ним более желательные свойства.
В статье предлагается выбрать иерархическое представление изображения в соответствии с желаемыми свойствами, а затем предлагается метод определения операторов, таких как эрозия, расширение, открытие, цилиндр для этого представления . Своими словами:
Я объяснил эти иерархические древовидные структуры во второй части этого ответа ( Семантические подходы ) , к которой вы можете добавить дерево экстремальных водоразделов, упомянутое в статье, на которую я ссылался здесь (и снова) .
Это обновление (цитируя авторов) «традиционной математической морфологии в градациях серого», потому что операции сохраняют желательные свойства представлений . Например , если ваше иерархическое представление самодвойственно, ваши операторы будут действительно самодуальны (например сравнить с квази -самосопряженным двойным открытие-закрытие по реконструкции , которая не является действительно самодуально.)
В связанной статье также представлены некоторые результаты по фильтрации шума - вы можете сравнить их результаты из статьи (и из тезиса, на который есть ссылка в статье) с тем, что вам нужно (по крайней мере, визуально) и посмотреть, сработает ли это для вас, прежде чем начать кодировать.
Таким образом, при выборе дерева простейшего представления (max- / min-) будут получены именно классические операции, выбор самодвойственного дерева, которое наилучшим образом соответствует вашим потребностям, может дать вам достаточно надежный подход.
источник