📄 expand_quad_trans.m
字号:
function out = expand_quad_trans(inX, inY, sComp, class)
[rows, cols] = size(inX);
[mR, mC] = ndgrid(1:rows, 1:cols);
mB_small = mR > ceil(tan(pi/3)*mC);
mB_big = mR > ceil(tan(pi/3)*1.3*mC);
mask = ones(size(inX));
inX(mB_big) = 0;
mask(mB_small) = 0;
inX = inX(end:-1:1,:);
mask = mask(end:-1:1,:);
inXFirst = zeros(2*size(inX));
inXFirst(1:rows, cols+1:end) = inX;
maskFirst = zeros(2*size(mask));
maskFirst(1:rows, cols+1:end) = mask;
inY(mB_big) = 0;
inY = inY(end:-1:1,:);
inYFirst = zeros(2*size(inX));
inYFirst(1:rows, cols+1:end) = inY;
bX = lower(sComp(2)) == 'x';
out = inXFirst*bX + inYFirst*(~bX);
out = out.*maskFirst;
vGreen = green_fun_vector(class);
maskPrev = maskFirst;
for ind = 1:5
mask = imrotate(maskFirst, 60*ind, 'nearest', 'crop');
mask = mask & ~maskPrev & ~maskFirst;
maskPrev = mask;
imRotX = imrotate(inXFirst, 60*ind, 'nearest', 'crop')*vGreen(ind+1);
imRotY = imrotate(inYFirst, 60*ind, 'nearest', 'crop')*vGreen(ind+1);
if bX
imRot = imRotX*cos(ind*pi/3) - imRotY*sin(ind*pi/3);
else
imRot = imRotY*cos(ind*pi/3) + imRotX*sin(ind*pi/3);
end
%mAvg = (imRot ~= 0) & (out ~= 0);
out = out + imRot.*mask;
%out = out./(mAvg+1);
end
out = conv2(out, ones(3), 'same');
out = out(end:-1:1,:);
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -