Лучший способ извлечь функции из SuperPixels, такие как gabor и HOG. - PullRequest
3 голосов
/ 08 января 2020

Я использовал алгоритм кластеризации sli c для создания суперпикселей биомедицинского изображения (целое слайд-изображение для экспертов по биомедицинской визуализации). Я хочу извлечь различные элементы, текстуру и пространство для суперпикселей, чтобы создать представление объекта, а затем передать его в классификатор (SVM, RF), чтобы попытаться классифицировать каждый суперпиксель, поскольку у меня есть метки для каждого из них. Конечная цель - классифицировать каждый суперпиксель, а затем использовать его для построения сегментации.

Для каждого суперпикселя я рисую ограничивающую рамку вокруг него с постоянным размером по всем, основываясь на средней высоте и ширине всех суперпикселей, поскольку распределение размеров довольно пиковое по среднему (у некоторых будут вырезаны мелкие детали и другие будут включать некоторые отступы. У меня есть пара вопросов

  1. Что касается фильтра Габора для каждого суперпикселя, я получаю функцию Габора со значением для каждого из его отдельных пикселей, Затем я беру их среднее значение, чтобы получить значение функции суперпиксельного габора. Это правильный подход? Код ниже

    def getGabor(img, ksize, sigma, theta, lamda, gamma, l, ktype):
    
        kernel=cv2.getGaborKernel((ksize, ksize), sigma, theta, lamda, gamma, l, ktype=ktype)
        fimg = cv2.filter2D(img, cv2.CV_8UC3, kernel)
        filteredImage=fimg.reshape(-1)
    
        return filteredImage
    
    def getGabors(img):
    
        ksize=5
        thetas = list(map(lambda x: x*0.25*np.pi, [1, 2]))
        gabors=[]
    
       for theta in thetas:
          for sigma in (1,3):
             for lamda in np.arange(0, np.pi, np.pi*0.25):
                for gamma in (0.05, 0.5):
                   gabor = getGabor(img.reshape(-1), ksize, sigma, theta, lamda, gamma, 0, cv2.CV_32F) . 
                   gabors.append(np.mean(gabor))
    
       return gabors  
    
  2. Как бы это работало с HOG? подход усреднения вектора признаков и как бы я не допустил, чтобы дескриптор HOG был слишком большим?

  3. Было бы разумно подавать суперпиксели в CNN для изучения представления функции?

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

Любой совет по созданию функций или типу функций, которые следует рассматривать для суперпикселей, был бы очень признателен!

Спасибо

1 Ответ

0 голосов
/ 17 января 2020

Я не уверен, каково современное состояние в сегментации медицинских изображений, но суперпиксели, HOG и gabor, безусловно, звучат как до 2012 года, имеют особые инженерные подходы, еще до появления всех моделей глубокого обучения. Результаты должны сильно зависеть от того, как суперпиксели сегментируют изображение (вероятно, не слишком устойчиво).

Почему бы не использовать недавнюю сегментацию изображений CNN, такую ​​как DeepLab (https://github.com/tensorflow/models/tree/master/research/deeplab) ? Просто накормите его обучающими примерами сегментации (многие из них, по общему признанию) и посмотрите, изучает ли модель правильные функции сама. Скорее всего, это будет достаточно.

...