Detecção de objeto usando limiar

Estou trabalhando em um programa no matlab para detectar um objeto em uma sequência de imagens. O objeto que estou tentando detectar uma bola vermelha.

Primeiro, tentei usar o limiar para segmentar a bola da imagem, mas não consegui. Eu não conseguia me livrar da sombra debaixo da bola. Alguma idéia de como se livrar da pequena parte debaixo da bola?

Minha segunda pergunta é: quero ter certeza de que o objeto que estou procurando é uma bola vermelha. meu código detectará qualquer objeto vermelho, quero ter certeza de que é um círculo.

Meu código:

I1 = imread('images/B1.jpg'); % read image            

ID1 = im2double(I1);  % convert to double 
IDG1 = rgb2gray(ID1); % conver to gray scale

t = 112; % set a thresholding value

IT = im2bw(IDG1, t/255); % apply the threshold

I2 = ~IT; % get a nigative image

I3 = bwareaopen(I2,40); % get rid of small unwanted pixels 

I4 = imclearborder(I3); % clear pixels of the borders

I5 = bwareaopen(I4,60); % get rid of small unwanted pixels

I6 = imfill(I5,'holes'); % fill the gap on the ball top part

I7 = imclearborder(I6); % get rid of small unwanted pixels

questionAnswers(1)

yourAnswerToTheQuestion