#matlab #image-processing #plot #image-segmentation
#matlab #обработка изображений #построение #сегментация изображения
Вопрос:
У меня есть изображение, которое содержит изображение монеты. Форма монеты может быть прямоугольной, квадратной, круглой, овальной и т.д. Я хочу нарисовать прямоугольник над монетой и отделить монету от ее фона. Я не могу указать значения прямоугольника x или y, поскольку монета может находиться в любом месте изображения. Кто-нибудь знает, как это сделать?
Комментарии:
1. это двоичное изображение? т. Е. те, где монета, и нули в другом месте? или его можно преобразовать в один?
2. @R. M. исходное изображение — цветное, и у меня также есть двоичная версия этого изображения.
3. Когда вы говорите, что хотите нарисовать прямоугольник над монетой, означает ли это, что вы хотите выбрать небольшую область, содержащую монету, а затем выполнить сегментацию на этом меньшем изображении?
Ответ №1:
Мой ответ ниже предполагает, что вы уже идентифицировали монету и у вас есть очищенное изображение (было бы неплохо использовать двоичный файл), с которым вы можете работать.
coin=load('penny.mat'); %#load matlab's stock image
img=zeros(256,256);
img(65:192,65:192)=coin.P;%# this is an approximation to the sort of image that I think you have
Теперь нам нужны экстенты изображения, чтобы узнать размер ограничивающего прямоугольника. Поскольку массив отличен от нуля там, где есть изображение, и равен нулю в другом месте, ниже приведена длина сторон.
sideX=sum(sum(img,1)>0);
sideY=sum(sum(img,2)>0);
Найдите центр тяжести изображения с помощью kmeans
.
[indX,indY]=ind2sub(size(img),find(img(:)>0));
[~,centroid]=kmeans([indX,indY],1);
Теперь, наконец, наложите прямоугольник поверх изображения.
imagesc(img);colormap(gray);hold on
rectangle('Position',([centroid,sideX,sideY]-[sideX,sideY,0,0]/2),'EdgeColor','w');hold off
Результат:
Если у вас зашумленное изображение (т. Е. оно неравномерно равно нулю за пределами изображения, тогда вам придется установить пороговое значение, чтобы найти ограничивающую рамку)
Ответ №2:
Начните с чтения рекомендаций MathWorks по распознаванию образов. То, как именно вы решаете проблему, зависит от многих факторов, например
-
что еще есть на изображении, кроме монеты?
-
все монеты одного цвета или разных цветов?
-
есть ли у вас обучающий набор изображений с идентифицированными местоположениями монет?