用最小周长多边形(MPP)描述图像边界
来源:互联网 发布:校园网络直播系统 编辑:程序博客网 时间:2024/06/16 05:01
涉及到的主要知识点:图像的四叉分解、连接(4连接/8连接)、Freeman链码、边界提取,以及被称为'cell walls'的概念(细胞墙/细胞联合体/细胞壁)
①原始图像:
>> f=imread('fengye.jpg');
>> gf=rgb2gray(f);
>> bwf=im2bw(f,graythresh(f));
>> bwf_fillholes=imfill(bwf,'holes');
>> bwf_sliced=bwf_fillholes(70:547,125:584);
>> h=fspecial('average',9);bwf_filt=imfilter(bwf_sliced,h);
>> bwf_filt_fillholes=imfill(bwf_filt,'holes');figure,imshow(bwf_filt_fillholes)
%以上为做一些预处理,获得二值图像
(注:原图像“枫叶”链接hiphotos.baidu.com/������/pic/item/2176973bdddee28c7c1e71ff
②求取4连接边界:
>> b=boundaries(bwf_filt_fillholes,4,'cw');
>> d=cellfun('length',b);
>> [max_d,k]=max(d)
max_d =
k =
>> v=b{k(1)};
>> [M,N]=size(bwf_filt_fillholes)
M =
N =
>> xmin=min(v(:,1))
xmin =
>> ymin=min(v(:,2))
ymin =
>> bim=bound2im(v,M,N,xmin,ymin);figure,imshow(bim)
③求MPP:
>> [x,y]=minperpoly(bwf_filt_fillholes,2);%使用大小为2的方形单元
>> b2=connectpoly(x,y);
>> B2=bound2im(b2,M,N,xmin,ymin);
>> figure,imshow(B2)
比较一下MPP和4连接:
>> whos b2
>> whos v
>> %v是四连接边界,b2是MPP,可以看到MPP比v少了很多点(短了很多)
④为了比较,使用cellsize为3,4,8各作一下:
>> [x,y]=minperpoly(bwf_filt_fillholes,3);%只需修改cellsize
b2=connectpoly(x,y);figure,B2=bound2im(b2,M,N,xmin,ymin);imshow(B2)
以下为cellsize=4时:
以下为cellsize=8时:
可以看到,随着cellsize增大,边界分辨率降低了(但边界的主要特征得到了保留,实际上,当cellsize很大以后,特征会丢失得越多),而且当cellsize=8时,出现了交叉。解决方法一是删除其中的一个顶点,二是增加或者减小方格单元的大小。
后记:
minperpoly函数中涉及到四叉分解与块替换的内容,MPP的求得是基于“橡皮筋拉伸”的原理。具体参Conzalez
- 用最小周长多边形(MPP)描述图像边界
- HDU 5224(最小周长)
- 最小周长
- 最小周长
- 多边形周长均分
- OpenCV轮廓、多边形逼近、关键点、周长和面积、边界框、矩、轮廓树、凹凸包、几何直方图、匹配
- OpenCV轮廓、多边形逼近、关键点、周长和面积、边界框、矩、轮廓树、凹凸包、几何直方图、匹配
- UVA 12386 Smallest Polygon n个点的任意多边形求最小周长 科学的暴力
- 求图像的周长(ZOJ1047)
- 求图像的周长(深搜)
- 任意多边形周长的求取
- 用Freeman码链表示图像边界
- 1283 最小周长
- 1283 最小周长
- 1283 最小周长 贪心?
- 问题 : 最小周长
- 1283 最小周长
- opencv-图像添加边界(填充)
- 跨域问题
- (CodeForces
- javaWeb微信支付+支付宝支付+银联支付
- 数组与矩阵---未排序正数数组中累加和为指定值的最长子数组长度
- Oracle初步学习
- 用最小周长多边形(MPP)描述图像边界
- 应用层-3、web缓存和代理服务器技术
- python3种编辑方法
- keras读取model进行人脸预测
- float:left和display:inline一起用
- POJ
- PAT (Basic Level) Practise (中文) 1063. 计算谱半径(20)
- 数组的概念,定义格式,取值,赋值以及数组的初始化
- struts2的工作原理 及优缺点