2

У меня есть изображение, подобное ниже. В этом мне нужно найти все красные круги и посчитать их. Итак, я думаю использовать MATLAB R2011a с Image Processing Toolkit для этого. Как я могу извлечь их?Как посчитать круговые объекты в изображении

enter image description here

+1

Вы должны быть более конкретным для нас, чтобы помочь вам. Что вы пробовали? Каковы ваши требования? –

+0

Возможно, сначала фильтруйте все пиксели, достаточно красные, а затем немного размывайте? –

+0

Вы хотите нарисовать все круги/частичные круги или просто подсчитать, сколько там красных фруктов? – lennon310

ответ

0

Я предлагаю вам использовать какой-либо фильтр точки на этой картинке (как предложил Деннис, фильтровать те, которые не являются достаточно красным цветом). Затем вы можете реализовать (Диск) RANSAC (RANdom SAmple Consensus), чтобы найти диски в этом отфильтрованном изображении.

RANSAC будет использовать небольшую настройку, но затем сможет правильно подсчитать различные объекты, которые вы пытаетесь найти.

Есть много хороших реализаций RANSAC, уже выполненных в Matlab.

1

Я могу дать вам отправную точку:

v=double(img)/255; 
mask = v(:,:,3)+v(:,:,2)-v(:,:,1)<0; 
mask = imopen(mask,strel('square',3)); 
imagesc(min(1,v+cat(3,mask*0,mask*1,mask*0)));axis image 

Накладываемое изображение выглядит следующим образом: enter image description here

использования RANSAC (как это было предложено AdrienNK) на маске, и вы получите место (и кол-во) ваших помидоров ;-)

-O-

+0

, например, если помидоры имеют зеленый цвет> «n». Будет ли выполняться эта функция 'v (:,:, 3) + v (:,:, 1) + v (:,:, 2)> n'? Я просто пробовал изображение, но его не работает – Iamcool

+0

вы действительно можете объяснить второе заявление, которое вы написали четко. Я думаю, что маска должна быть чем-то вроде 'v (:,:, 1) <0' – Iamcool

+0

с красным цветом (1-й канал) означает высокий красный и почти не зеленый и синий. Другими словами, красное значение больше, чем сочетания зеленого и синего цветов – Mercury

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