如何获得旋转图像的四个角?

时间:2018-06-08 04:01:55

标签: image matlab image-processing rotation corner-detection

我的图像以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 :(得分:2)

我对此没有很好的解释,但我认为regionprops会被图像中的灰度色调混淆。如果我们将旋转的Lena转换为logical数组,则算法正常运行:

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

enter image description here