📄 in_shape.m
字号:
% assumes center of figure is inside
function out = in_shape(mX, mY, cx, cy, vein)
[rows,cols] = size(mX);
x0 = mX(1,1);
y0 = mY(1,1);
% deal with vector mX or mY
dx = 0;
dy = 0;
if size(mX,2) ~= 1
dx = abs(mX(1,2)-x0);
end
if size(mY,1) ~= 1
dy = abs(mY(2,1)-y0);
end
if dx == 0
dx = dy;
end
if dy == 0
dy = dx;
end
N = 2500;
cs = vein.cs;
s = linspace(cs.breaks(1), cs.breaks(end), N);
mF = ppval(cs, s);
shrink = 1-1/max(size(mX));
vSx = shrink*mF(1,:) + cx;
vSy = shrink*mF(2,:) + cy;
x_ind = round((vSx-x0)/dx)+1;
y_ind = round((vSy-y0)/dy)+1;
iOk = find( (x_ind <= cols) & (x_ind >= 1) );
x_ind = x_ind(iOk);
y_ind = y_ind(iOk);
iOk = find( (y_ind <= rows) & (y_ind >= 1) );
x_ind = x_ind(iOk);
y_ind = y_ind(iOk);
if isempty(x_ind)
out = logical(zeros(rows, cols));
return
end
cx_ind = round((cx-x0)/dx)+1;
cx_ind = min(cols, max(cx_ind, 1));
cy_ind = round((cy-y0)/dy)+1;
cy_ind = min(rows, max(cy_ind, 1));
out = zeros([rows,cols]);
out = sparse(y_ind, x_ind, 1, rows, cols);
out = logical(full(out>0));
out = imfill(out, round([cy_ind cx_ind]), 4);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -