-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcor_enhs.m
executable file
·44 lines (38 loc) · 1.07 KB
/
cor_enhs.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function zh = cor_enhs(z, p)
% COR_ENHS edge enhancement algorithm rev. 2.0
% zh = cor_enhs(z, p);
% z: an M-by-K matrix;
% p: enhance mode (multiplied by the negative curvature),
% p = 1, column-wise enhancement;
% p = 2, row-wise enhancement (default)
% p = 3, both. M, N must be greater than 3.
% p < 0, amplitude is substituded by its negative curvature.
% Copyright (C) 1995 by P. RU, NSL, ISR, UMD. All rights reserved.
% v1.00: 01-Jan-1995
% v1.01: 03-Jun-1998, abb p < 0 option
% Revision: Taishih Chi ([email protected]), NSL, UMD
% v1.10: 24-Aug-98, bugs in p = 3 option
[m, n] = size(z);
z0 = z; z = abs(z);
if nargin < 2, p = 2; end;
CURV = (p < 0); p = abs(p);
% column-wise enhancement
if (p == 2),
z1 = 0 * z + 1;
else, % 1 or 3
z1 = 0 * z;
zd = diff(z, 2);
z1(2:(m-1),:) = zd .* sign(sign(zd)-1);
end;
% row-wise enhancement
if (p == 1),
z2 = 0 * z + 1;
else, % 2 or 3
z2 = 0 * z;
zd = diff(z', 2);
z2(:,2:(n-1)) = (zd .* sign(sign(zd)-1))';
end;
% total enhancement
zh = (z1 .* z2) .^ (1);
if CURV, zh = zh .* exp(i*angle(z0));
else, zh = zh .* z0; end;