mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 20:39:08 +09:00
25 lines
699 B
Matlab
25 lines
699 B
Matlab
function Vst = TVDerivative(img)
|
|
|
|
fxy = padarray(img, [1,1], 0, 'both');
|
|
fxnegy = circshift(fxy, [-1, 0]);
|
|
fxposy = circshift(fxy, [1, 0]);
|
|
fnegxy = circshift(fxy, [0, -1]);
|
|
fposxy = circshift(fxy, [0, 1]);
|
|
fposxnegy = circshift(fxy, [-1 1]);
|
|
fnegxposy = circshift(fxy, [1 -1]);
|
|
eps = realmin;
|
|
|
|
vst1 = (2*(fxy - fnegxy) + 2*(fxy - fxnegy))./sqrt(eps + (fxy - fnegxy).^2 ...
|
|
+ (fxy - fxnegy).^2);
|
|
|
|
vst2 = (2*(fposxy - fxy))./sqrt(eps + (fposxy - fxy).^2 ...
|
|
+ (fposxy - fposxnegy).^2);
|
|
|
|
vst3 = (2*(fxposy - fxy))./sqrt(eps + (fxposy - fxy).^2 ...
|
|
+ (fxposy - fnegxposy).^2);
|
|
|
|
vst = vst1 - vst2 - vst3;
|
|
Vst = vst(2:end-1,2:end-1);
|
|
|
|
end
|