Matlab: правильный подход к добавлению геометрических объектов к изображению

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

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

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

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

Джон


person Community    schedule 21.09.2009    source источник
comment
Немного успокойтесь: mathworks.com.au/matlabcentral/newsreader/view_thread/261232   -  person random    schedule 21.09.2009
comment
извините, я не ожидал, что группы новостей Matlab и stackoverflow просматриваются одним и тем же сообществом   -  person    schedule 21.09.2009
comment
Сообщество SO находится практически в каждом уголке программирования, и с каждым днем ​​все больше и больше.   -  person random    schedule 21.09.2009


Ответы (3)


ну, ниже приведен ответ, который я получил в группах новостей Matlab НИЖНЯЯ ЛИНИЯ - нет встроенного способа в Matlab

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

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

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

person Community    schedule 22.09.2009

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

Прочитайте входное изображение.

I = imread('cameraman.tif');

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

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

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

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

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

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

person CG Christen Christensen    schedule 27.12.2012

Вам нужна функция insertShape в наборе инструментов Computer Vision System Toolbox. Он позволяет рисовать прямоугольники, круги и многоугольники на изображении.

Также есть insertText, insertMarker и insertObjectAnnotation.

person Dima    schedule 20.01.2015