Как получить четыре угла повернутого изображения?
У меня изображение повернуто с 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) четырех углов повернутого изображения, как показано на рисунке ниже (красный кружок представляет желаемый угол):
Это мой код:
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
Но полученные координаты находятся где-то вдоль краев, а не там, где я хотел, чтобы они были, как показано на втором изображении:
Может кто-нибудь сказать, пожалуйста, что не так с этим кодом?
1 ответ
Решение
У меня нет хорошего объяснения этому, но я полагаю regionprops
запутывается в оттенках серого на изображении. Если мы превратим повернутую Лену в logical
массив, ваш алгоритм работает правильно:
Im_requete_G_scale_rot = logical(imresize(imrotate(Im_requete_G,-20), 1.2)); % 3rd line