本文共 945 字,大约阅读时间需要 3 分钟。
转自:http://www.ilovematlab.cn/thread-111922-1-1.html
使用roipoly来制定图像的感兴趣多边形区域。返回一个二值图像,可以用来作为模板进行模板滤波等操作 BW = roipoly(I, c, r) 返回由向量c和r指定的多边形区域,其中c,r对应的是横纵坐标信息。 返回的BW 是一个按照绘制的多边形为边界的二值化图像;详见matlab百科全书 下面做了一个用 roipoly 做的一个交互式作图程序,希望大家喜欢!! clc clear [filename,pathname,q]=uigetfile({'*.*';'*.bmp';'*.jpg';'*.png'}); if q>0 lujing=strcat(pathname,filename); I = imread(lujing); figure imshow(I); end p=size(I,3); if p==3 r=I(:,:,1); g=I(:,:,2); b=I(:,:,3); I1=rgb2gray(I); else I1=I; end hold on [x,y,c]=ginput(1); m(1)=x; n(1)=y; plot(x,y,'r'); k=2; while(c==1) [x1,y1,c1]=ginput(1); if c1==1 m(k)=x1; n(k)=y1; plot(x,y,'r'); line([m(k-1) m(k)],[n(k-1) n(k)]); k=k+1; c=c1; else break end end line([m(k-1) m(1)],[n(k-1) n(1)]); BW = roipoly(I1,m,n); if p==3 r1=double(r).*double(BW); g1=double(g).*double(BW); b1=double(b).*double(BW); i1=cat(3,r1,g1,b1); figure imshow(mat2gray(i1)); else i2=double(I1).*double(BW); figure imshow(mat2gray(i2)); end |
转载地址:http://rgmbi.baihongyu.com/