bound2im.m

%bound2im源程序
function B=bound2im(b,M,N,x0,y0)
%  BOUND2IM Converts a boundary to an image.
%  B = bound2im(b) converts b, an np-by-2 or 2-by-np array
%  representing the integer coordinates of a boundary, into a binary
%  image with 1s in the locations defined by the coordinates in b
%  and 0s elsewhere.
%
%  B = bound2im(b, M, N) places the boundary approximately centered
%  in an M-by-N image. If any part of the boundary is outside the
%  M-by-N rectangle, an error is issued.  
%
%  B = bound2im(b, M, N, X0, Y0) places the boundary in an image of
%  size M-by-N, with the topmost boundary point located at X0 and
%  the leftmost point located at Y0. If the shifted boundary is
%  outside the M-by-N rectangle, an error is issued. XO and X0 must
%  be positive integers.

[np,nc]=size(b);
if np<nc
    b=b';%To convert to size np-by-2.
    [np,nc]=size(b);
end

%Make sure the coordinates are integers.
x=round(b(:,1));
y=round(b(:,2));

%Set up the default size parameters.
x=x-min(x)+1;
y=y-min(y)+1;
B=false(max(x),max(y));
C=max(x)-min(x)+1;
D=max(y)-min(y)+1;

if nargin==1
    %Use the preceding defualt valuaes.
elseif nargin==3
    if C>M | D>N
        error('The boundary is outsize the M-by-N region.')
    end
    %The image size will be M-by-N.Set up the parameters for this.
    B=false(M,N);
    %Distribute extra rows appox. even between top and botton.
    NR=round((M-C)/2);
    NC=round((N-D)/2);%The same for columns.
    x=x+NR;%Offset the boundary to new position.
    y=y+NC;
elseif nargin==5
    if x0<0 | y0<0
        error('x0 and y0 must be positive integers.')
    end
    x=x+round(x0)-1;
    y=y+round(y0)-1;
    C=C+x0-1;
    D=D+y0-1;
    if C>M | D>N
        error('The shifted boundary is outside the M-by-N region.')
    end
    B=false(M,N);
else
    error('Incorrect number of inputs.')
end

B(sub2ind(size(B),x,y))=true;
    


  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值