Jump to content
Compvision.ru
KNCH

OpenCV в медицине

Recommended Posts

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

Share this post


Link to post
Share on other sites

Эта либа достаточно хреново работает. Лучше посмотрите здесь. http://www2.imm.dtu.dk/~aam/

Это сложнее, зато намного более качественно сделано. Кстати, там же есть и датасеты медицинские и модельки какие-то тоже.

guillaume-us.jpg

вот оттуда кадры:

http://www2.imm.dtu.dk/~aam/tracking/guillaume-us.avi

Здесь еще лекция неплохая по AAM. Презентация по AAM.

Share this post


Link to post
Share on other sites
Или думаю использовать SURF, только сравнивать не с одной картинкой, а с несколькими в разных положениях.

я думаю это вообще не вариант для таких картинок.

это не то, так как мне поиск надо делать. То есть будет поиск либо по алгоритму или по шаблону для нужного органа.

ну там алгоритм сегментации, можно сегментировать, а потом уже по контуру сравнивать.

так что для начала найдите контуры и покажите что у вас получилось.

хотя active contours это по сути тоже сегментация, но только с использованием эталона, который может "гнуться".

Сегментация с помощью модели

Основное предположение этого подхода — то, что интересующие структуры или органы имеют повторяющиеся геометрические формы. Следовательно, можно найти вероятностную модель для объяснения изменений формы органа и затем, сегментируя изображение, накладывать ограничения, используя эту модель как априорную. Такое задание включает в себя (i) приведение тренировочных примеров к общей позе, (ii) вероятностное представление изменений приведённых образцов и (iii) статистический вывод для модели и изображения. Современные методы в литературе для сегментации, основанной на знании, содержат активные модели формы и внешности, активные контуры, деформируемые шаблоны и методы установления уровня.

вот еще некий материал http://www.vision.jhu.edu/heart.htm

для rigid и non-rigid контуров, которые можно представить как точки.

http://code.google.com/p/gmmreg/

еще можно почитать Contour Tracking и Contour Detection если орган изменяется во времени, что эквивалентно изменению от картинки к картинке.

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

хотя это уже наверно другая задача.

image.png

Share this post


Link to post
Share on other sites

У меня только API валяется на 16 Мб. Я так с его компиляцией и не разобрался. Там вроде зависимость от MSVisionSDK, я её не осилил. Перешел на ASM.

  • Like 1

Share this post


Link to post
Share on other sites

Там сказано:

The best way to start is to go to the /test/colour/ directory and:

1) run __demo__.cmd

2) have a look at the output files

3) have a look at __demo__.cmd and __conf__.acf in notepad

4) start the AAMLab (colour)

- open the image from the unseen directory

- load the model.amf from /test/colour/

- view the model modes

- insert the mean shape

- play around with the search function

(a shape is moved by dragging the red COG)

5) that's it

Но у меня не собралось по 2008 студией, а 2005 ставить не хотелось.

ЗЫ: За репозитарий спасибо, там есть собранная версия, можно поковырять.

Share this post


Link to post
Share on other sites

Нормально запустилось. Кстати, файлов мегабайт на 300 с лишним накачал. В директории tests лежат примеры как создать модель. В директории data содержатся исходные данные для создания модели. asf контуры, bmp картинки. В каждом asf есть ссылка на картинку к которой он относится. __demo__.cmd строит модель model.amf. Директорию bin, чтобы все работало надо прописать в PATH.

РЕзультаты работы в test\greyscale или color\unseen\__evaluation__\.

Share this post


Link to post
Share on other sites

Я так понял, что при помощи матлабовского файла.

annotate.m

function annotate( imagetype )
%
% function annotate( imagetype )
%
%
% Reads and displays all images in the current dir one by one.
%
% When an image is displayed, annotation can be done by left-
% clicking the mouse. Press 'e' to end annotation and write
% a corresponding asf-file in the current dir. Use plotasf()
% to view the resulting asf-file.
%
% Example usage: annotate('bmp');[/code]

Share this post


Link to post
Share on other sites

на matlab столько много примеров ASM и AAM и реализованы создание asf контуры. Думаю прикрутить его к Net.

Share this post


Link to post
Share on other sites

Нормально запустилось. Кстати, файлов мегабайт на 300 с лишним накачал. В директории tests лежат примеры как создать модель. В директории data содержатся исходные данные для создания модели. asf контуры, bmp картинки. В каждом asf есть ссылка на картинку к которой он относится. __demo__.cmd строит модель model.amf. Директорию bin, чтобы все работало надо прописать в PATH.

РЕзультаты работы в test\greyscale или color\unseen\__evaluation__\.

asf контуры как я понял - это контур объекта, который будем искать. (Как его задаю с помощью матлаба, интересно)

То есть по этим данным \test\colour\data строится модель(model.amf).

Потом как я понял по-этой модели делается поиск картинки (test\colour\unseen).

У меня два вопроса:

1 Зачем у картинки на которой будем искать тоже asf контур (\test\colour\unseen)?? Что в нем интересно??

2 Можно ли без матлаба asf контуры делать.

Share this post


Link to post
Share on other sites

В asf в \test\colour\unseen скорее всего начальное приближение (не проверял). AAM работают тем лучше, чем точнее мы зададим начальное приближение положения и формы модели. asf - простой формат, почему бы и не делать его с помощью собственноручно написанной тулзы.

Share this post


Link to post
Share on other sites

В asf в \test\colour\unseen скорее всего начальное приближение (не проверял). AAM работают тем лучше, чем точнее мы зададим начальное приближение положения и формы модели. asf - простой формат, почему бы и не делать его с помощью собственноручно написанной тулзы.

Удалил сейчас все данные из asf \test\colour\unseen вроде ищет.

Что такое начальное приближение?

Как я хочу реализовать:

1 Загружаешь картинки, выделяешь объект.

2 Нажимаешь обучить

3 Все конвертируется в asf контуры и передается все в эту библиотеку.

4 Она выдает модель и ей присваивается имя.

5 Потом загружаешь картинку и жмешь ищи этот объект.

6 Он его выделяет и пишет название.

Реально такое реализовать?

И без начальное приближение?

Share this post


Link to post
Share on other sites

У меня только API валяется на 16 Мб. Я так с его компиляцией и не разобрался. Там вроде зависимость от MSVisionSDK, я её не осилил. Перешел на ASM.

А есть примеры с ASM, что бы можно было задавать шаблоны и потом искать???

Share this post


Link to post
Share on other sites

Вам ASM не подойдет, контуры слабые, плохо выраженные и много помех. У Вас будет лучше применить поиск по текстурам (AAM). У ASM и AAM есть свои особенности. Они как бы "прилепляют" объект к ближайшему подходящему подходящему приближению и прекращают поиск. А это чревато тем, что система может влететь в локальный минимум и там остаться. Лучше если поиск объектов будет изначально хоть как то разбит на зоны и хотя бы грубые очертания объектов.

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

Файл AAMLab.exe (AAMLabm.exe - для цветного) запускали? Там начальное приближение (Insert Mean Shape) можно найти автоматически (Initialize), а можно выставить вручную (потягать модель за красный квадратик посередине). Я смотрел на сером изображении инициализируется очень даже неплохо.

Share this post


Link to post
Share on other sites

а как http://www2.imm.dtu.dk/~aam/ тут с масштабируемостью бороться? Если обучал на маленьких, а потом большую проверяешь, модель не увеличивается. Как зависимость от размеров убрать?

Share this post


Link to post
Share on other sites

asf формат

# format: <path#> <type> <x rel.> <y rel.> <point#> <connects from> <connects to>

#

0 4 0.32739416 0.60987622 0 0 1

0.32739416 0.60987622 как такие координаты получить?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

спасибо. Если найдешь описание было бы не плохо. А как потом увеличить модель, что бы нормально выделяло? А не была маленькой

Share this post


Link to post
Share on other sites

Нашел документ от этой библиотеки. Там должны быть ответы на все Ваши вопросы.

ActiveModels.pdf

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×