matlab: правильный подход для добавления геометрических объектов к изображению - PullRequest
1 голос
/ 21 сентября 2009

пожалуйста, помогите с заданием для начинающих Matlab мне нужно создать изображение с несколькими геометрическими объектами (круги, эллипсы), а затем применить некоторые проективные преобразования моя проблема в том, что я не могу понять, как на самом деле "рисовать" на изображении

изображение является AFAIU, обычно определяемым как [X; Y; 3] матрица, функции как SCIRCLE1 могут вычислять / возвращать набор точек представляющий круг, но проблема в том, что точки не являются дискретными, координаты являются действительными числами, а не пикселями

как я могу пересчитать вывод scircle, чтобы быть действительным в изображении система координат? то есть как я могу "пикселизировать" это?

спасибо за внимание, мне действительно не хватает какой-то базовой концепции и буду признателен за вашу помощь

Джон

Ответы [ 3 ]

0 голосов
/ 27 декабря 2012

Я нашел этот пример, который дает вам простой способ нанести простой геометрический объект на фотографии.

Считать входное изображение.

I = imread('cameraman.tif');

Определить размеры прямоугольника как [x y width height].

rectangle = int32([10 10 30 30]);

Нарисуйте прямоугольник и отобразите результат.

J = step(shapeInserter, I, rectangle);
imshow(J); 

см. эту ссылку

кстати ..
Я не понял, что точки не являются дискретными, а изображения - матрицей. Как я вижу это. Это почти то же самое. Вы могли бы попытаться объяснить это более подробно?

0 голосов
/ 21 января 2015

Функция insertShape на панели инструментов системы Computer Vision - это то, что вам нужно. Позволяет рисовать прямоугольники, круги и многоугольники на изображении.

Существует также insertText, insertMarker и insertObjectAnnotation.

0 голосов
/ 22 сентября 2009

хорошо, ниже приведен ответ, который я получил в группах новостей Matlab BOTTOM LINE - нет встроенного способа в Matlab

====================================== 'getframe' может использоваться для объединения осей, хотя он чаще используется для создания кадров фильма.

MATLAB действительно слаб в этой области. Есть некоторые примитивные функции для рисования в оверлей (например, прямоугольник (), если вы хотите нарисовать круг, и линия (), если вы хотите нарисовать линию), но нет реальный способ, который я знаю, чтобы нарисовать прямо в базовое изображение. Так Вы должны использовать «трюки», такие как getframe, а затем применить логический операции. И вы должны быть осторожны с этим, так как я думаю, когда он дает вам растеризованную версию наложения, это может быть размер изображения на экране, а не истинный размер оригинальной матрицы базовое изображение (я должен был бы перепроверить это).

полная тема здесь: http://www.mathworks.com.au/matlabcentral/newsreader/view_thread/261232

...