-
Notifications
You must be signed in to change notification settings - Fork 0
/
distance_using_sharpness.m
67 lines (58 loc) · 1.52 KB
/
distance_using_sharpness.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
clear all; close all;
I=imread('img.bmp','bmp'); % 256256 pixels, 8bit image
I=double(I);
I = medfilt2(I);
% To find the size of Image:
sizeOfImage = size(I);
M = max(sizeOfImage(1),sizeOfImage(2));
%%%%%N = min(sizeOfImage(1),sizeOfImage(2));
% parameter setup
%M=1024;
deltax=0.001; % pixel pitch 0.001 cm (10 um)
w=633*10^-8; % wavelength 633 nm
z=25; % 25 cm, propagation distance
%Step 1: simulation of propagation using the ASM
r=1:sizeOfImage(1);
c=1:sizeOfImage(2);
[C, R]=meshgrid(c, r);
A0=fftshift(ifft2(fftshift(I)));
deltaf=1/M/deltax;
p=exp(-2i*pi*z.*((1/w)^2-((R-M/2- 1).*deltaf).^2-...
((C-M/2-1).*deltaf).^2).^0.5);
Az=A0.*p;
EO=fftshift(fft2(fftshift(Az)));
%Step 2: interference at the hologram plane
AV=4*(min(min(abs(EO)))+max(max(abs(EO))));
% amplitude of reference light
% the visibility can be controlled by modifying the amplitude
IH=(EO+AV).*conj(EO+AV);
figure; imshow(I);
title('Original object')
axis off
figure; imshow(mat2gray(IH));
title('Hologram')
axis off
SP=abs(fftshift(ifft2(fftshift(IH))));
figure; imshow(500.*mat2gray(SP));
title('Hologram spectrum')
axis off
%z = z;
maxsharpness = 0;
distance = 0;
%%%
for i = 10:40
i
p=exp(-2i*pi*i.*((1/w)^2-((R-M/2- 1).*deltaf).^2-...
((C-M/2-1).*deltaf).^2).^0.5);
A1=fftshift(ifft2(fftshift(IH)));
Az1=A1.*conj(p);
EI=fftshift(fft2(fftshift(Az1)));
EI=mat2gray(EI.*conj(EI));
currsharpness = fmeasure(EI,'ACMO');
if(currsharpness > maxsharpness)
distance = i;
maxsharpness = currsharpness;
end
end
%%%
axis off