У меня есть изображения (матрица) в Matlab, и я ищу точку максимальной интенсивности от центра матрицы во всех направлениях, чтобы получить края. (Я использую градиент изображения и ищу четырехугольник).
Для M (n,m) Моя первая попытка состояла в том, чтобы рассмотреть один вектор M(1:n/2, m/2), найти максимум и повернуть изображение, чтобы найти все максимумы во всех других направлениях. Но: функция imrotate вызывает много ошибок (обрезка или рассыпчатость), а восстановленное изображение не соответствует форме исходного.
Пробовал также считать векторы прямо на исходном изображении от центра ко всем точкам по периметру... но это не просто!
У вас есть идея решить эту проблему? Какая-нибудь тонкость в Matlab, которую я не знаю?
Спасибо парень;
Мой фактический код
s_im = size(ima, 2)/2;
ima_max = zeros(size(ima));
ima_new = zeros(size(ima));
for a=0:359
im_r = imrotate(ima, a, 'crop');
c= floor(size(im_r,1)/2);
vect_h1 = im_r(c, 1:c);
l = length(vect_h1);
[~, id_h1] = max(vect_h1(:));
[x,y] = rotatePoint([id_h1, c], [c,c], deg2rad(a-180));
ima_max(floor(y), floor(x))= 1;
ima_new(floor(y), floor(x)) = 1;
Ошибка также в том, что вычисляемый центр не одинаков на всех изображениях...
imrotate
- person BillBokeey   schedule 28.04.2016