2013-12-11 3 views
2

Я хочу бинаризовать области кости (сделать области костей 255, а остальные области 0) , но распределение уровня серого не просто достаточно (он ярче в нижней половине), чтобы просто найти значение и пороговое значение. Поэтому я думаю, что если я смогу обнаружить его полные контуры и заполнить пробелы внутри этих контуров, это может быть проще.Завершите круговую контурную кромку при использовании определения canny edge и контур не заштрихован

Исходное изображение:

enter image description here

После применения оператора кэнни:

enter image description here

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

Мне также нужно иметь дело с проблемами, которые связаны друг с другом двумя костями. (прошу прощения я не упомянул об этом в самом первом месте ..)

Я рассматриваю, как я могу отделить пару костей перекрытия вместе: http://i.imgur.com/dI5s11L.png

+0

Лучше начать новое сообщение по второму вопросу о разделении перекрытия. Это похоже на другой вопрос из вашего первоначального вопроса. – lennon310

ответ

1

Рассмотрите возможность использования Active Contours (snakes)

Он вычисляет «нечеткие» ребра, рассматривая как локальный градиент, так и общую «гладкость» (это описание не очень точное, это просто понять концепцию)

Я попытался в нескольких подобных случаях d получил хорошие результаты.

+1

Этот метод не очень мне известен, хотя я проверю это. большое спасибо –

0

Низкое Contrast to Noise Ratio вашего необработанного изображения делает задачу извлечения объекта, поскольку установка порога может быть не устойчивой к каждому изображению. Тем не менее, я попытался извлечь кости в вашей текущей фигуре. В моей обработке применяются два трюка: (1) нелинейное преобразование вашего изображения для улучшения костей с низкой интенсивностью по сравнению с фоном; (2) нулевое заполнение на границе вашего изображения в возможных областях кости после применения приемника canny edge. Смотрите мой код ниже:

I=rgb2gray(I); 

I=double(I); 
I=I.^0.6; % non linear transform before canny edge detector 
BW=edge(I,'canny'); 

%%% padding at the possible bone regions 
BW(1,BW(2,:)==1)=1; 
BW(end,BW(end-1,:)==1)=1; 
BW(BW(:,2)==1,1)=1; 
BW(BW(:,end-1)==1,end)=1; 

%%% padding in order to fill in the bone boundaries 
bw2=imfill(padarray(BW,size(BW),'symmetric'),'holes'); 
bw2=bw2(size(bw,1)+(1:size(bw,1)),size(bw,2)+(1:size(bw,2))); 

bw2=bwareaopen(bw2,200); % remove the too small regions 
MASK=I>10; % remove the background with very low intensity 
figure,imshow(bw2.*MASK) 

Результат:

enter image description here

Все выглядит хорошо, за исключением одной границы кости немного грязный.