dandanmumu 发表于 2009-6-1 13:52

谁知道怎么提取正方形的4个顶点啊

我做的是二维条码QR码,为了识别的需要,需要提取QR码的4个顶点,一般的角点提取把图像上的所有点都提取出来了,可是我只想提取4个顶点,对了,QR码有个特点是左上角、右上角、左下角的3个黑色方块黑白比例满足1:1:3:1:1,有人会吗??急啊!!!!!!!!!!!

xiezhh 发表于 2009-6-1 16:13

运行以下代码I=imread('IMG_4983.bmp');
BW=~im2bw(I,0.25);
L=bwlabel(BW);
BW(L==1)=0;
BW(L==2)=0;
BW=bwareaopen(BW,620);
=find(BW);
=min(y);
Uxy=;
=max(y);
Dxy=;
=min(x);
Lxy=;
=max(x);
Rxy=;
xy=%上下左右四点的坐标
imshow(BW)
hold on
plot(xy(:,1),xy(:,2),'r.','markersize',18)结果:
xy =
   215    83
   312   453
    19   281
   472   191
效果图如下

dandanmumu 发表于 2009-6-2 10:18

但当图像发生形变较严重时,这种算法提取的坐标可能会发生重合,也就是说,横坐标的最大的值也有可能是纵坐标最大的值,这时提取的4个坐标点可能会成为3个或是2个,该怎么样进一步改进呢

xiezhh 发表于 2009-6-2 10:25

我给你的方法只是针对你的图片的一个示意,其实方法是很多很灵活的,没必要在一条路上走进死胡同,你可以采用角点检测的方法,采用求凸包的方法都可以,具体还是要查查文献,下点功夫的,不要指望着有现成的程序套用,应针对于你图片的具体情况采用适合的命令。
页: [1]
查看完整版本: 谁知道怎么提取正方形的4个顶点啊