2013-09-13 2 views
0

У меня есть двоичное изображение, которое содержит несколько разделенных областей. Я хочу установить пороговое значение для Района (количество пикселей), которое занимают эти регионы, таким образом, что: область будет опущена, если она будет меньше пикселей, чем порог. Я уже пробовал эти коды (с помощью bwconncomp):Получить информацию об объектах на изображении

[...] 
% let's assume threshold = 50 
CC = bwconncomp(my_image); 
L = labelmatrix(CC); 
A = cell(size(CC.PixelIdxList,1) , size(CC.PixelIdxList,2)); 
A = CC.PixelIdxList; 
for column = 1 : size(CC.PixelIdxList,2) 
    if numel(CC.PixelIdxList{column}) < 50, A{column} = 0; 
    end 
end 

Но на данный момент я не знаю, как преобразовать ячейки C обратно в форму моего изображения, а затем показать его! Есть ли какие-нибудь трюки?

Есть ли более простой и более прямой способ получить информацию об объектах на изображении, чем этот, который я использовал здесь?

Мне также нужно знать длину и ширину этих объектов. Эти объекты не обязательно имеют какую-либо конкретную геометрическую форму!

Благодаря

+0

Я узнал, что я могу использовать 'bwareaopen'instead всех кодов я написал выше !!! но я все еще застрял в поиске способа рассчитать длину и ширину отдельных объектов !!! Есть идеи?! – Leo

ответ

0

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

Для того чтобы узнать длину и ширину объектов на изображении:

labeledImage = bwlabel(my_image, 8); 
regioninfo = regionprops(labeledImage , 'MajorAxisLength', 'MinorAxisLength'); 
lengths = [regioninfo.MajorAxisLength]; %array 
widths = [regioninfo.MinorAxisLength]; %array 
+0

Вы должны пометить этот вопрос, как ответили тогда. –

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