La Red de Conocimientos Pedagógicos - Conocimientos sobre estudiar en el extranjero - ¿Cómo hacer recortes suaves y cosas similares? ¿Cuál es el algoritmo?

¿Cómo hacer recortes suaves y cosas similares? ¿Cuál es el algoritmo?

Función [A] = getLaplacian1(I, consts, epsilon, win_size)

if (~exist('epsilon ', ' var '))

ε= 0.0000001;

Fin

si(está vacío(ε))

ε= 0.0000001;

Fin

si (~existe ('win_size ', ' var '))

win_size = 1;

Fin

if (isempty(win_size))

win_size = 1;

Fin

neb_size=(win_size*2 1)^2;

[h, w, c] = tamaño (I);

n = h; m = w;

img _ tamaño = w * h

consts=imerode(consts,unos(win _ tamaño * 2; 1));

indsM = forma([1: img _ size], h, w

tlen=sum(sum(1-consts(win_size 1: end-); win_size, win_size 1: end-win_size)))*(neb_size^2);

row_inds=zeros(tlen, 1);

col_inds=zeros(tlen, 1);

vals=zeros(tlen, 1);

len = 0

Para j=1 win_size: w-win_size

for I = win _ size 1: h-win _ size

if (consts(i, j))

Continuar

Fin

win _ inds = indsM(Yo-gano _ tamaño: Yo gano _ tamaño, j-gano _ tamaño: j ganar _ tamaño

win _ inds = win _ inds( :);

winI=I(i-win_size: i win_size, j-win_size: j win_size,);

winI = forma(winI, neb_size, c);

p>

win_mu=mean(winI, 1)';

win _ var = inv(winI ' * winI/Neb _ tamaño-win _ mu * win _ mu ' épsilon/Neb _ tamaño * ojo (c));

winI=winI-repmat(win_mu ', neb_size, 1);

tvals = (1 winI * win _ var * winI ')/Neb _ size ;

row_inds(1 len: neb_size^2 len)=reshape(repmat(win_inds, 1, neb_size),...

neb_size^2, 1);

col_inds(1 longitud:neb_size^2 longitud)=reshape(repma

t(win_inds', neb_size, 1),...

neb_size^2, 1);

vals(1 len: neb_size^2 len)=tvals(:);

len=len neb_size^2;

Fin

Fin

vals = vals(1:len);

row_inds = fila_inds(1:len);

col_inds = col_inds(1:len);

A=sparse(row_inds, col_inds, vals, img_size, img_size);

sumA=sum(A, 2);

A=spdiags(sumA(:), 0, img_size, img_size) -A;