Я пытаюсь создать программу распознавания объектов, используя классификатор k-NN. У меня есть куча изображений для обучающей части классификатора и куча изображений для распознавания. Эти изображения представлены в оттенках серого, и на каждое изображение приходится объект. Проблема в том, что есть только край объекта (не закрашенный), поэтому я не думаю, что использование regionprops(img,'centroid')
будет работать правильно для того, что я понимаю... Итак, как я могу получить их центр масс?
Matlab - Центр масс объекта, имеющий только край
Ответы (2)
Ответ xenoclast должен быть достаточно ясным, просто чтобы добавить что-то еще. Когда вы закончите создание двоичного изображения из вашего изображения в градациях серого, используя im2bw
; если край вашего объекта является границей, которая полностью покрывает объект, вы можете использовать regionprops(bw,'centroid')
напрямую, минуя imfill
.
person
jacaheyo
schedule
20.05.2015
Это сработало, спасибо. У меня есть еще один вопрос: я читал, что
regionprops(bw,'centroid')
возвращает элементы в порядке измерения, означает ли это, что первый элемент будет центроидом наименьшего элемента, а последний - центроидом области?
- person user2952272; 20.05.2015
Значение, возвращаемое
regionprops()
, равно N количеству структур. N — количество связанных компонентов (или количество объектов) во входном изображении. Вы можете посмотреть этот mathworks.com/help/images /ref/ Вы можете попробовать это, чтобы проверить последовательность возвращаемых структур. BW = imread('text.png'); s = regionprops(BW, 'centroid'); imshow(BW) hold on for n = 1 : length(s) plot(s(n).Centroid(:, 1),s(n).Centroid(:,2), 'b*') pause(0.2) end
- person jacaheyo; 21.05.2015
Первым шагом будет бинаризация изображения с помощью im2bw
. Затем вы можете использовать imfill(img, 'holes')
, чтобы превратить его из контура в заполненное тело. После этого regionprops
будет работать как положено.
person
xenoclast
schedule
20.05.2015
Это не работает, и это должно быть автоматически, я не смогу выбрать отверстие для заполнения во время выполнения программы.
- person user2952272; 20.05.2015
imfill
сам по себе порождает графический интерфейс, но использование imfill(img, 'holes')
— это автоматический процесс (пока ваш план закрыт).
- person xenoclast; 20.05.2015