2013-11-20 1 views
0

Я работаю над изображением паразитарных яиц. Мне нужно идентифицировать столько яиц, сколько я могу индивидуально, мне удалось установить приличные границы вокруг них, используя алгоритм водораздела, но я хочу посмотреть на овальное яйцо в целом, а не только на часть желтка, которая, как правило, алгоритм водораздела. Я попытался обнаружить эллипс, но он получает только пузырьки воды (круглые черные биты с белой точкой посередине), которые я фактически хочу игнорировать (но я планирую реализовать позже).Уникальная идентификация кластеризованных эллипсов, которые имеют одинаковую форму, но разных размеров

Что было бы лучшим способом достичь этого, я искал отображение изображений, но он возвращает только лучшее совпадение, я также рассматривал распознавание формы, но, по-видимому, он не реализован в OpenCV.

Вот что мой результат я получаю с помощью алгоритма водораздела: http://imgur.com/7ptyIOL

А вот идея о том, что я хотел получить: http://imgur.com/XPLUixa

ответ

0

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

Этот код создает контуры и рисует их

_, contours, hierarchy = cv2.findContours(opening.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) 
for c in contours: 
    #will give an error if there are less than 5 points 
    if len(c) > 4: 
    elip = cv2.fitEllipse(c) 
    if check_ellipse(elip):              
     cv2.ellipse(img, elip, (255, 0, 0)) 

Эта функция используется для проверки правильности

def check_ellipse(ellipse): 
    h = ellipse[1][0] 
    w = ellipse[1][1] 
    #make sure it's not too large, or too circular 
    if abs(h-w) < 2 or h > 30 or w > 30: 
    return False                    
    return True 

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

Смежные вопросы