2015-02-21 6 views
0

Я работаю над проектом, который включает в себя обнаружение красных кровяных клеток в крови. Эритроциты в крови никогда не являются абсолютно круговыми (обычно почти эллиптическими), и они часто перекрываются.Как обнаружить перекрывающиеся почти круговые объекты в MATLAB?

Я искал и нашел несколько алгоритмов, но большинство работает только для кругов. Однако в моем случае он должен работать на кровь у пациентов с серповидно-клеточной анестезией, где эритроциты удлиненные или серповидные. Для справки here is an example source image.

Можете ли вы предложить алгоритм или подход для решения этой проблемы?

Любая помощь будет принята с благодарностью.

+1

Добро пожаловать в переполнение стека. К сожалению, этот сайт не отвечает на вопросы «любой помощи», охватывающие целые проекты. Ваш вопрос нужно сузить много - в единую техническую проблему, которая ясна, и на нее можно ответить простым способом. Вы должны начать с исследования обработки изображений в Matlab. Если у вас возникли проблемы с пониманием темы или ее реализацией для вашего проекта, * тогда * это хорошее время, чтобы задать вопрос об этом в Stack Overflow. –

+0

Если мой ответ помог, пожалуйста, не забудьте принять его. Благодаря! – mfitzp

ответ

2

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

Для начала примите участие в MATLAB Image Processing toolbox.

«Идентифицировать эритроциты» - обманчиво простая задача. Первый шаг с любым проектом, подобным этому, состоит в том, чтобы выяснить, что именно точно, которого вы хотите достичь, а затем начать разбивать его на шаги, как вы это добьетесь. Наконец, есть этап экспериментального развития, в котором вы пытаетесь реализовать свой план (понимаете, что с ним не так, а затем повторите попытку).

Подсчет клеток обычно использует округлость для идентификации ячеек, но это невозможно здесь, потому что вы заявляете, что хотите идентифицировать серповидные клетки. Другими основными характеристиками, отличающими эритроциты от других клеток, являются цвет и размер. Цвет более абсолютный, поэтому начните с этого. Тогда подумайте о размере. This is a good tutorial on the process of identifying cells, хотя это в Python, принцип тот же.

Итак, мы имеем:

  1. Применение фильтра к изображению, либо выделение красного канала (RGB) или что-то более сложное. Сделайте его монохромным (нам не нужны цветовые данные).
  2. Плавное изображение (например, gaussian filter), чтобы уменьшить шум и артефакты
  3. Найти regional maxima которые (надеюсь!) В центре клеток
  4. Label the regional maxima (это должно дать вам количество клеток)
  5. Watershed чтобы найти целые ячейки размером меры

Надеюсь, этого достаточно, чтобы вы начали!

+0

Я сделал первые 2 шага, в настоящее время работаю над третьим. Но я не совсем уверен, что понял, как найти региональные максимумы для нас. Большое спасибо. – TheEspada

+0

Если найти область максимумов - подсчитать общее количество ячеек, не основывается ли она на предположении, что на каждую ячейку есть только один максимум? – TheEspada

+0

Рад помочь! В рамках регионального максимума используется артефакт гауссовского размытия: региональные максимумы будут центром областей изображения. Если вы обнаружите, что ваше изображение недостаточно однородно для этого, вам может быть полезно сначала применить порог и превратить двоичный файл изображения (черно-белый, а не серый). – mfitzp

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