Как получить четыре угла повернутого изображения? - PullRequest
0 голосов
/ 08 июня 2018

У меня есть изображение, повернутое с помощью imrotate, как указано ниже:

Im_requete=imread('lena.jpg');
Im_requete_G=rgb2gray(Im_requete);
Im_requete_G_scale_rot = imresize(imrotate(Im_requete_G,-20), 1.2);

Я пытаюсь получить координаты (x, y) четырех углов повернутого изображения, как показано на рисунке.ниже (красный кружок представляет желаемый угол):

Desired result

Это мой код:

stat = regionprops(Im_requete_G_scale_rot,'Extrema'); %extrema detection of the image.
point = stat.Extrema;
hold on
figure,imshow(Im_requete_G_scale_rot)
hold on
for i = 2:2:length(point)
    x = point(i,1);
    y = point(i,2);
    plot(x,y,'o');
    text(x,y,num2str(i),'color','r')
end

Но полученные координатыгде-то по краям, а не там, где я хотел, чтобы они были, как показано на втором изображении:

Current, wrong result

Может кто-нибудь сказать, что с этим не так?код

1 Ответ

0 голосов
/ 17 июня 2018

У меня нет хорошего объяснения этому, но я полагаю, что regionprops смущает оттенки серого на изображении.Если мы превратим повернутую Лену в массив logical, ваш алгоритм будет работать правильно:

Im_requete_G_scale_rot = logical(imresize(imrotate(Im_requete_G,-20), 1.2)); % 3rd line

enter image description here

...