Как переместить прямоугольник над изображением в Matlab - PullRequest
1 голос
/ 26 августа 2011

Я новичок в Matlab

сейчас я изучаю локализацию оптического диска

здесь мой первый шаг - создать две карты характеристик во-вторых, мне нужно создать прямоугольник и переместить прямоугольник слева направо на первой карте объектов, ширина 30, а высота прямоугольника - высота изображения

и на второй карте объектов я переместил прямоугольник сверху вниз

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

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


final2=edgediff./eror;
figure,image((final2));
title('Feature MAP 1');
func = @(x) sum(x(:));
B = nlfilter(final2,[30 600],func);

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Если вы изучаете локализацию оптического диска, я думаю, что вы на самом деле делаете две свертки по горизонтали и вертикали.Фактически тот факт, что вы используете линейную функцию sum, показывает, что вам не нужна функция нелинейного фильтра nlfilter.Попробуйте вместо этого использовать conv2 с ones(ncols, nrows).

Примерно так:

[width, height] = size(featureMap1);
box = ones(30, height);
smoothFeatureMap1 = conv2(featureMap1, box, 'same');

Повторите, но с box = ones(width, 30), чтобы получить smoothFeatureMap2.

Тогда выможно просто добавить две гладкие карты объектов вместе.

Однако, если честно, я думаю, что, возможно, то, что вы хотите, является просто результатом одной двумерной свертки, а не суммой двух других.Трудно сказать наверняка по вопросу.В частности, я понятия не имею, что вы хотите изобразить в ваших двух графиках.(Я постараюсь обновить этот ответ, если вы уточните вопрос).

0 голосов
/ 26 августа 2011

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

H = imrect(axes, position);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...